Yum
RHEL 7:如何解決 yum multilib 問題
我正在嘗試在 RHEL 7.5 伺服器上安裝 texlive-xetex。這台伺服器是提前為我“設置”的。
但是,當我嘗試安裝時,它抱怨 texlive-kpathsea-lib 受到保護。
[root@hostname ~]# yum install -y texlive-xetex Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager, tmprepo Resolving Dependencies --> Running transaction check ---> Package texlive-xetex.noarch 2:svn26330.0.9997.5-38.el7 will be installed --> Processing Dependency: tex-xetexconfig for package: 2:texlive-xetex-svn26330.0.9997.5-38.el7.noarch --> Processing Dependency: texlive-xetex-bin for package: 2:texlive-xetex-svn26330.0.9997.5-38.el7.noarch --> Running transaction check ---> Package texlive-xetex-bin.x86_64 2:svn26912.0-38.20130427_r30134.el7 will be installed --> Processing Dependency: texlive-kpathsea-lib = 2:2012-38.20130427_r30134.el7 for package: 2:texlive-xetex-bin-svn26912.0-38.20130427_r30134.el7.x86_64 --> Processing Dependency: teckit for package: 2:texlive-xetex-bin-svn26912.0-38.20130427_r30134.el7.x86_64 --> Processing Dependency: libTECkit.so.0()(64bit) for package: 2:texlive-xetex-bin-svn26912.0-38.20130427_r30134.el7.x86_64 --> Processing Dependency: libicudata.so.50()(64bit) for package: 2:texlive-xetex-bin-svn26912.0-38.20130427_r30134.el7.x86_64 --> Processing Dependency: libicui18n.so.50()(64bit) for package: 2:texlive-xetex-bin-svn26912.0-38.20130427_r30134.el7.x86_64 --> Processing Dependency: libicuuc.so.50()(64bit) for package: 2:texlive-xetex-bin-svn26912.0-38.20130427_r30134.el7.x86_64 ---> Package texlive-xetexconfig.noarch 2:svn28819.0-38.el7 will be installed --> Running transaction check ---> Package libicu.x86_64 0:50.1.2-17.el7 will be installed ---> Package teckit.x86_64 0:2.5.1-11.el7 will be installed ---> Package texlive-kpathsea-lib.i686 2:2012-38.20130427_r30134.el7 will be installed --> Finished Dependency Resolution Error: Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem. Eg.: 1. You have an upgrade for texlive-kpathsea-lib which is missing some dependency that another package requires. Yum is trying to solve this by installing an older version of texlive-kpathsea-lib of the different architecture. If you exclude the bad architecture yum will tell you what the root cause is (which package requires what). You can try redoing the upgrade with --exclude texlive-kpathsea-lib.otherarch ... this should give you an error message showing the root cause of the problem. 2. You have multiple architectures of texlive-kpathsea-lib installed, but yum can only see an upgrade for one of those architectures. If you don't want/need both architectures anymore then you can remove the one with the missing update and everything will work. 3. You have duplicate versions of texlive-kpathsea-lib installed already. You can use "yum check" to get yum show these errors. ...you can also use --setopt=protected_multilib=false to remove this checking, however this is almost never the correct thing to do as something else is very likely to go wrong (often causing much more problems). Protected multilib versions: 2:texlive-kpathsea-lib-2012-38.20130427_r30134.el7.i686 != 2:texlive-kpathsea-lib-2012-43.20130427_r30134.el7.x86_64
但是,我只安裝了 kpathsea-lib X86_64。
[root@hostname ~]# rpm -qa | grep -i kpathsea texlive-kpathsea-svn28792.0-43.el7.noarch texlive-kpathsea-bin-svn27347.0-43.20130427_r30134.el7.x86_64 texlive-kpathsea-lib-2012-43.20130427_r30134.el7.x86_64
在我看來,它想要安裝 kpathsea-lib.i686。所以,我檢查了幾件事:
[root@hostname ~]# yum check Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager, tmprepo check all [root@hostname ~]# yum check --showduplicates Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager, tmprepo check all [root@hostname ~]# rpm -qa --dupes gpg-pubkey.(none) kernel-devel.x86_64 kernel.x86_64 [root@hostname ~]# package-cleanup --cleandupes Loaded plugins: langpacks, product-id, subscription-manager No duplicates to remove
回購清單是:
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager, tmprepo repo id repo name status epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,225 pgdg10/7Server/x86_64 PostgreSQL 10 7Server - x86_64 719 pgdg11/7Server/x86_64 PostgreSQL 11 7Server - x86_64 546 pgdg94/7Server/x86_64 PostgreSQL 9.4 7Server - x86_64 788 pgdg95/7Server/x86_64 PostgreSQL 9.5 7Server - x86_64 781 pgdg96/7Server/x86_64 PostgreSQL 9.6 7Server - x86_64 785 remi-php72 Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - x86_64 370 remi-safe Safe Remi's RPM repository for Enterprise Linux 7 - x86_64 3,451 rhel-7-server-eus-optional-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Extended Update Support - Opti 13,684 rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 24,345 repolist: 58,694
但是,現在我被困住了。歡迎任何幫助或建議。
謝謝你。
我在您的儲存庫列表中看到的明顯問題是系統僅部分設置為擴展更新支持儲存庫:
rhel-7-server-eus-optional-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Extended Update Support - Opti 13,684 rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 24,345
可選頻道在 EUS 上,但基本頻道不在。
因為包
texlive-xetex-bin
在可選通道中,並且它所依賴的包texlive-kpathsea-lib
在基本通道中,所以你得到這個版本不匹配。要解決此問題,您應該將基本通道切換到 EUS(如果系統有權使用 EUS),或者關閉可選通道關閉 EUS(並允許系統更新到 RHEL 7.6)。
例如,要繼續進行 EUS:
subscription-manager repos --enable=rhel-7-server-eus-rpms subscription-manager repos --disable=rhel-7-server-rpms subscription-manager release --set=7.5
或者離開 EUS:
subscription-manager repos --enable=rhel-7-server-optional-rpms subscription-manager repos --disable=rhel-7-server-eus-optional-rpms subscription-manager release --unset
有關詳細資訊,請參閱此 Red Hat 知識庫文章:如何將系統綁定到 Red Hat Enterprise Linux 的特定更新?