Yum installation de modules spécifiques à l'emballage

Je jouais avec le package texlive récemment et j'ai découvert qu'il existe un moyen d'installer des packages de style tex avec la command yum install 'tex(package.sty)' . Je n'ai jamais vu le nom du package a été spécifié comme ça avant. Skimming through yum page man n'a pas donné d'informations pertinentes.

Après quelques googler j'ai trouvé des mentions de possibilité d'installer des modules Perl de la même manière, par exemple yum install 'perl(Net::Telnet)' . Bien que cela ne fonctionne pas pour moi.

Quelqu'un peut-il fournir plus d'informations sur ce type de spécification du nom du package avec miam? Y a-t-il d'autres packages (en dehors de tex) qui peuvent être installés de la même façon? Puis-je get une list de ces packages sur mon système? Est-ce une fonctionnalité supplémentaire qui est ajoutée à yum comme un plugin lors de l'installation d'un package correspondant ( texlive dans ce cas)?

Linux Distro: CentOS 7

Les packages perl(Net::Telnet) sont ce qu'on appelle des packages virtuels. Ils existent uniquement dans le nom et sont essentiellement un "alias" pour le package réel dont le nom est vraiment perl-Net-Telnet .

Ces packages prennent naissance au travers de leur définition dans le file .spec tel que fourni ou .spec . Vous pouvez en voir ici dans ce package, 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) 

L'avantage de spécifier les noms de packages comme ceci est que les dependencies ne doivent pas countr sur des numéros de version spécifiques. Ici, une dépendance peut dire: "Je n'ai besoin que d'une ancienne version de X".

NOTE: Ces noms ne fonctionnent que lors de l' yum install 'perl(X)' ils ne fonctionnent pas avec yum search ou yum info , par exemple. Si vous jetez un coup d'œil à la page man yum , vous verrez les vrais noms des packages qui fonctionneront avec toutes les commands de YUM dans la section « SPECIFYING PACKAGE NAMES ».

Comment peux-tu le dire autrement?

Si vous tentez de faire une installation de l'un d'eux et d'activer la messagerie verbeuse de yum vous verrez des conseils:

 $ 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 

Remarquez les mentions «fournir virtuel» et «fournir file»? Il s'agit du moteur de dependencies dans yum search les packages qui "fournissent" ce que vous avez spécifié dans le nom, par exemple perl(Net::HTTP) , sur les autres packages recherchant des correspondances.

Vous pouvez également s'appuyer sur la repoquery pour vous montrer cette relation aussi:

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

Les references

  • RPM maximum: le gestionnaire de packages Red Hat est limité – Chapitre 14. Ajout d'informations de dépendance à un package