Instalação do Yum de módulos específicos de pacotes

5

Eu estava brincando com o pacote texlive recentemente e descobri que existe uma maneira de instalar pacotes de estilo tex com o comando yum install 'tex(package.sty)' . Eu nunca vi nome do pacote foi especificado assim antes. Skimming através da página man do yum não resultou em informação relevante.

Depois de algumas pesquisas, encontrei menções da possibilidade de instalar módulos Perl de maneira semelhante, por exemplo %código%. Embora não funcionou para mim.

Alguém por favor pode fornecer mais informações sobre este tipo de especificação do nome do pacote com o yum? Existem outros módulos (além do tex) para os quais podem ser instalados de forma semelhante? Posso obter uma lista desses pacotes no meu sistema? Esta é uma funcionalidade extra que é adicionada ao yum como um plugin durante a instalação de um pacote correspondente ( yum install 'perl(Net::Telnet)' neste caso)?

Linux Distro: CentOS 7

    
por golem 03.10.2014 / 17:56

1 resposta

6

Os pacotes perl(Net::Telnet) são os chamados pacotes virtuais. Eles existem apenas no nome e são essencialmente um "alias" para o pacote real cujo nome é realmente perl-Net-Telnet .

Esses pacotes passam a existir por meio de sua definição dentro do arquivo .spec , conforme fornecido ou requerido. Você pode ver alguns aqui neste pacote, 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)

A vantagem de especificar os nomes de pacotes como este é que as dependências não precisam depender de números de versão específicos. Aqui uma dependência pode dizer: "Eu só preciso de qualquer versão antiga do X".

OBSERVAÇÃO: Esses nomes só funcionam quando um yum install 'perl(X)' não funciona com yum search ou yum info , por exemplo. Se você der uma olhada na página yum man, ela discutirá os nomes verdadeiros dos pacotes que funcionarão com todos os comandos do YUM na seção " ESPECIFICAÇÃO DOS NOMES DOS PACOTES ".

De que outra forma você sabe?

Se você tentar fazer uma instalação de um desses e ativar as mensagens detalhadas do yum , você verá dicas:

$ 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

Observe as menções de "virtual provide" e "file-provide"? Estes são o mecanismo de dependência em yum procurando por pacotes que "fornecem" o que você especificou no nome, ou seja, perl(Net::HTTP) , em outros pacotes que procuram correspondências.

Você também pode se apoiar no repoquery para mostrar também esse relacionamento:

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

Referências

por 03.10.2014 / 19:09