私は最近texlive
パッケージで遊んでいて、yum install 'tex(package.sty)'
コマンドでtexスタイルのパッケージをインストールする方法があることを発見しました。パッケージ名がそのように指定されているのを見たことがありません。 yumのmanページをざっと読んでも、関連情報は得られませんでした。
いくつかグーグルした後、同様の方法で Perlモジュールをインストールする可能性 の言及を見つけました。 yum install 'Perl(Net::Telnet)'
。うまくいきませんでした。
誰かがこのタイプのパッケージ名をyumで指定することについてもっと情報を提供できますか?同様の方法でインストールできる(tex以外の)他のパッケージモジュールはありますか?私のシステムでそのようなパッケージのリストを取得できますか?これは、対応するパッケージ(この場合はtexlive
)のインストール中にプラグインとしてyumに追加される追加機能ですか?
Linux Distro:CentOS 7
パッケージPerl(Net::Telnet)
は、いわゆる仮想パッケージです。それらは名前だけに存在し、本質的に名前が実際に_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
_または_yum info
_では機能しません、 例えば。 yum
のマニュアルページを見ると、「SPECIFYING PACKAGE NAMES」で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
_