Доброе...
Ситуация такая, решил попробовать написать не большой скрипт для поиска новой версии rpm пакета.
Вот такой код:
#!/usr/bin/env python3.4
import os
import sys
import rpm
def readRpmHeader(ts, filename):
""" read an rpm header. """
fd = os.open(filename, os.O_RDONLY)
h = None
try:
h = ts.hdrFromFdno(fd)
except rpm.error as e:
if str(e) == "error reading package header":
sys.stderr.write(str(e))
h = None
finally:
os.close(fd)
return h
def main(argv):
if len(argv) < 2:
sys.stderr.write("Usage: %s PACKAGE_NAME...\n" % (argv[0],))
return 1
ts = rpm.TransactionSet()
ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES | rpm._RPMVSF_NODIGESTS)
fresh_rpms = {}
for f in argv[1:]:
if not os.path.exist(f):
sys.stderr.write("Error: file %r was not found!" % f)
return 1
h = readRpmHeader(ts, f)
name = h[rpm.RPMTAG_NAME]
if (name not in fresh_rpms
or rpm.versionCompare(h, fresh_rpms[name]['header']) > 0):
fresh_rpms[name] = {'header': h, 'filename': f}
for n, v in fresh_rpms.iteritems():
print (v['filename'])
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv))
Выдает ошибку ImportError: No module named 'rpm'
Менял версии python на 2,7 и на 3,3 - не помогло...
Запустил ipython и проделал все операции в ручную, все работает, import rpm не ругался и дал выполнить команды
Вот что есть:
rpm -qa | grep rpm
rpm-build-4.11.1-25.el7.x86_64
python-deltarpm-3.6-3.el7.x86_64
atrpms-repo-7-7.el7.x86_64
redhat-rpm-config-9.1.0-68.el7.centos.noarch
rpm-python-4.11.1-25.el7.x86_64
rpm-4.11.1-25.el7.x86_64
rpm-sign-4.11.1-25.el7.x86_64
perl-srpm-macros-1-8.el7.noarch
rpm-libs-4.11.1-25.el7.x86_64
deltarpm-3.6-3.el7.x86_64
rpmforge-release-0.5.3-1.el7.rf.x86_64
rpm-build-libs-4.11.1-25.el7.x86_64
Как можно решить проблему? или в чем, кроме прокладки между монитором и стулом, проблема?)
Спасибо.