rpmUtils.miscutils 在 python3.6

rpmUtils.miscutils in python3.6

我正在将代码从 python2(RHEL 7.6) 重构为 python3(RHEL 8.2),但我遇到 python3.6.

中缺少库的问题

问题:

from rpmUtils.miscutils import splitFilename ModuleNotFoundError: No module named 'rpmUtils'

我已尝试将 python3-dnf 和 python3-rpm 软件包安装到 RHEL8,但仍然无法正常工作。在 python3.6 和 RHEL8 中如何使用这个库有任何解决方案还是我应该自己编写一些自定义函数?

感谢您的回答。

这个库确实被删除了,但您还有其他几个选项可以使用。

请注意,这些其他函数需要接收 NEVRA(名称、纪元、版本、发行版、体系结构)格式的字符串作为输入,而不是文件名。因此,您必须删除文件名的“.rpm”扩展名,以便获得 NVRA 字符串(纪元通常不包含在 RPM 包的文件名中)。

所以基本上你有两个选择:

  • 按照 https://bugzilla.redhat.com/show_bug.cgi?id=1364504

    中的建议使用 dnf
  • 使用 hawkey 即:

      import hawkey
    
      rpm_base_filename = os.path.basename(rpm_file)
      nevra = hawkey.split_nevra(rpm_base_filename[:-len(".rpm")])
      name = nevra.name
      version = nevra.version
      release = str(nevra.release)
      epoch = str(nevra.epoch)
      arch = nevra.arch
    

例如,这是我为我们在 oVirt 发布过程中使用的工具之一所做的此类修改的补丁:

https://github.com/oVirt/releng-tools/commit/823405e6b261f7ff27ddbba0e8fa2b86dd2a8698