安裝包特定模組的 yum
我最近在玩
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 search
or一起使用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
參考