Linux

安裝包特定模組的 yum

  • October 3, 2014

我最近在玩texlive包,發現有一種方法可以使用yum install 'tex(package.sty)'命令安裝 tex 樣式的包。我以前從未見過這樣指定包名稱。瀏覽 yum 手冊頁並沒有產生相關資訊。

經過一番Google搜尋後,我發現提到了以類似方式安裝 Perl 模組的可能性yum install 'perl(Net::Telnet)',例如. 雖然它對我不起作用。

有人可以提供更多關於用 yum 指定包名的資訊嗎?是否有其他可以以類似方式安裝的軟體包(除了 tex)模組?我可以在我的系統上獲得此類軟體包的列表嗎?texlive這是在安裝相應軟體包(在這種情況下)期間作為外掛添加到 yum 的額外功能嗎?

Linux 發行版:CentOS 7

這些包perl(Net::Telnet)就是所謂的虛擬包。它們只存在於名稱中,本質上是名稱為 real 的真實包的“別名” perl-Net-Telnet

這些包通過它們在.spec文件中的定義作為提供或要求而存在。你可以在這個包中看到一些perl-Net-HTTP

$ more $HOME/rpmbuild/SPECS/perl-Net-HTTP.spec
...
BuildRequires:  perl(IO::Socket::IP)
BuildRequires:  perl(IO::Socket::SSL) >= 1.38
BuildRequires:  perl(IO::Uncompress::Gunzip)
BuildRequires:  perl(Symbol)
BuildRequires:  perl(URI)
BuildRequires:  perl(vars)

像這樣指定包名稱的好處是依賴項不必依賴特定的版本號。這裡的依賴可以說,“我只需要任何舊版本的 X”。

**注意:**這些名稱僅在執行時才有效,例如,yum install 'perl(X)'它們不能與yum searchor一起使用yum info。如果你看一下手冊頁,它會在“指定包yum名”部分討論保證與 YUM 的所有命令一起工作的包的真實名稱。

你還能怎麼說?

如果您嘗試安裝其中一個並啟用yum詳細消息,您將看到提示:

$ sudo yum --verbose install "perl(Net::HTTP)"
Not loading "blacklist" plugin, as it is disabled
Loading "fastestmirror" plugin
Loading "langpacks" plugin
Loading "refresh-packagekit" plugin
Loading "tsflags" plugin
Not loading "whiteout" plugin, as it is disabled
Adding en_US to language list
Config time: 0.015
Adding en_US to language list
Yum version: 3.4.3
rpmdb time: 0.000
Setting up Package Sacks
Loading mirror speeds from cached hostfile
* fedora: mirror.nexcess.net
* rpmfusion-free: mirror.pw
* rpmfusion-free-updates: mirror.pw
* rpmfusion-nonfree: mirror.pw
* rpmfusion-nonfree-updates: mirror.pw
* updates: mirror.nexcess.net
pkgsack time: 0.043
Checking for virtual provide or file-provide for perl(Net::HTTP)
Obs Init time: 0.385
Package perl-Net-HTTP-6.06-4.fc20.noarch already installed and latest version
Nothing to do

注意“虛擬提供”和“文件提供”的提及?這些是yum查找“提供”您在名稱中指定的包的依賴引擎,即perl(Net::HTTP)在其他包上查找匹配項。

您也可以依靠repoquery向您展示這種關係:

$ repoquery -a --whatprovides 'perl(Net::HTTP)'
perl-Net-HTTP-0:6.06-4.fc20.noarch

參考

引用自:https://unix.stackexchange.com/questions/159096