Por que o rpm ou dnf não reconhece o perl padrão?

0

Eu tenho um pacote rpm que construí, que depende de perl . Quando tento instalar este pacote, ele falha:

$ rpm -ivh <package-y>
error: Failed dependencies:
    perl is needed by package-y.x86_64

Se eu executar dnf info perl , ele mostrará que o perl não está instalado, mas posso localizar perl no meu sistema:

which perl
perl: /usr/bin/perl /opt/lampp/bin/perl /usr/share/man/man1/perl.1.gz

e verificando a versão do perl:

$ perl --version

This is perl 5, version 26, subversion 2 (v5.26.2) built for x86_64-linux-thread-multi
(with 47 registered patches, see perl -V for more detail)

Copyright 1987-2018, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Parece que o perl é instalado por padrão no meu sistema (fedora), mas por que o gerenciador de pacotes (dnf ou rpm) não o reconhece?

    
por MyWrathAcademia 04.07.2018 / 19:21

1 resposta

2

Especificar dependências para algo como Perl pode ser muito complexo. Por exemplo, quando o seu package-y diz que requer perl , significa Perl 5.x ou Perl 6.x? Precisa de uma versão secundária específica do Perl 5.x? Ou seria um antigo Perl 4.x suficiente para isso?

Aqui está a parte do Guia de Embalagem do Fedora que diz respeito ao Perl. Como você pode ver, é bastante complicado. Parece que o seu package-y não está seguindo essas diretrizes. É destinado especificamente ao Fedora, ou é empacotado para alguma outra distribuição aleatória?

A melhor maneira de corrigi-lo sem reempacotar package-y seria descobrir quais requisitos específicos seu package-y tem para Perl, em seguida, criar um pacote fictício com um nome como dependencies-for-package-y.rpm com Provides: perl (para permitir que o pacote fictício satisfaça os requisitos de package-y ) e pelo menos Requires: perl(:VERSION) >= <minimum required Perl version for package-y> (para fornecer as informações dos requisitos reais de package-y para o gerenciador de pacotes).

Se o package-y incluir módulos Perl pré-compilados, ou links para libperl.so , o pacote fictício também deve ter a palavra-chave Requires: perl(:MODULE_COMPAT_<version number>) apropriada. Dessa forma, se o seu Perl atual for atualizado de maneira a quebrar a compatibilidade do módulo, por exemplo, devido a um problema de segurança, seu gerenciador de pacotes informará que você também deve atualizar package-y , removê-lo ou adiar a atualização do seu Perl, pois a atualização quebraria package-y .

Seu atual /usr/bin/perl é realmente fornecido por um pacote chamado perl-interpreter . Você pode ver o Requer e fornece palavras-chave que o pacote tem em rpmfind.net.

    
por 04.07.2018 / 20:26