
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.0
e 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.conf
para 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 .spec
arquivo 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_PRELOAD
sua 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.cpio
e 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 libpcap
ver quantos pacotes ele deseja remover ( yum
na 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 undo
o 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.