Faça o RPM satisfazer os requisitos de dependência de outros pacotes instalados

Faça o RPM satisfazer os requisitos de dependência de outros pacotes instalados

Então, estou instalando um aplicativo Java que escrevi que usa jnetpcap. Isso requer libpcap de pelo menos v1.0.0. Meu CentOS 5.8 possui apenas libpcap 0.9.4, que é exigido por outros pacotes instalados. Eu tenho o RPM para libpcap 1.4.0 construído, mas quando tento instalá-lo, recebo o seguinte:

# rpm -Uvh /root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm
error: Failed dependencies:
        libpcap.so.0.9.4 is needed by (installed) ppp-2.4.4-2.el5.i386
        libpcap.so.0.9.4 is needed by (installed) isdn4k-utils-3.2-56.el5.i386
        libpcap >= 14:0.8.3-6 is needed by (installed) ppp-2.4.4-2.el5.i386

e verificando as dependências de um deles:

# rpm -qR ppp-2.4.4-2.el5.i386
...
libpcap >= 14:0.8.3-6
libpcap.so.0.9.4

Atualizar o sistema operacional é um fracasso, além disso, é um sistema fechado, nunca conectado à rede, por isso pouco importa. Agora eupoderiaser capaz de remover os pacotes que estão atrasando as coisas, mas, assumindo que não posso, como posso forçar a instalação deste pacote, de modo que ele satisfaça os requisitos de dependência mais antigos? ou seja: faça com que ele "forneça" o libpcap 0.9.4 para satisfazer os requisitos do software já instalado.

Responder1

Eu recomendo que você altere o rpm de origem deste arquivo; edite o caminho no qual os arquivos serão instalados, para não criar conflitos entre os arquivos que você está prestes a instalar e aqueles fornecidos por libpcap.so.0.9.4(não podem ser instalados dois rpm:s que forneçam o mesmo arquivo no mesmo caminho) .

Ou remova do rpm de origem os arquivos que entrarão em conflito com o que você instalou, podem ser: /usr/lib/libpcap.so.0e possivelmente /usr/share/man/man3/pcap.3.gz. (um é um link simbólico e o outro uma página de manual) do seu arquivo src rpm:s .spec e rpmbuild-o.

Então você pode instalar (não atualizar)/root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm junto com libpcap-0.9.4para que as versões possam coexistir pacificamente em seu sistema.

Se você estiver usando o yum, talvez seja necessário editar o seu /etc/yum.confpara adicioná-lo libpcapà sua lista de installonlypkgs, para que o yum não substitua sua versão mais antiga do libpcap pela que você acabou de criar ( man 5 yum.conf). (se você usar yum em vez de rpm simples, ele poderá acompanhar todas as transações para você yum history. É muito poderoso). Você também pode alterar o nome do .specarquivo no rpm de origem para algo como libpcap14, é o que costumo fazer.

Em seguida, adicione o caminho onde você instalou os pacotes $LD_LIBRARY_PATH, no script/comando que inicia seu programa e deve funcionar. (ou LD_PRELOADsua versão mais recente do libpcap).

Você também poderia fazer o que o slm sugeriu, é de longe a maneira mais rápida de atingir o objetivo: rpm2cpio /root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm > libpcap-1.4.0-1.i386.cpioe então, em uma pasta separada, você extrai o arquivo e usa os arquivos conforme descrito acima. No entanto, rpm é a forma como o CentOS envia programas e acho que é confuso e difícil de manter a longo prazo.

Outra causa de ação pode ser reconstruir tudo o que depende do libpcap v0.9.4 para v1.0.0 e atualizá-los. Normalmente, isso implicaria em problemas para atualizações futuras, mas como você parece estar usando o CentOS 5, não precisa se preocupar, pois é EOL.

Uma opção final a ser considerada é yum remove libpcapver quantos pacotes ele deseja remover ( yumna verdade, não removerá nada até que você aperte o botão Y e pressione enter), já que vocêpoderiaser capaz de remover esses pacotes e usar o yum, se acontecer que você não conseguiu, você pode reverter com yum history undoo comando (não me lembro em qual versão do yum isso foi implementado no yum, então verifique primeiro se este sub comando está disponível para você). Além disso, certifique-se de que seus repositórios apontem para os repositórios que possuem esses arquivos disponíveis.

informação relacionada