Por que o yum continua a reclamar sobre uma dependência ausente que já está instalada?

4

Eu tenho um rpm auto-criado para o mapserver 6.2.1 que desejo suportar o Oracle, mas estou tendo muitas dificuldades para fazer tudo funcionar.

Instalei o oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64 como um rpm e o sdk e o sqlplus como arquivos zip no meu ORACLE_HOME. Esta parecia ser a única maneira de garantir que os arquivos sdk estivessem no local correto, para o mapserver reconhecer.

Então, meu mapserver rpm é construído, mas quando tento instalá-lo no servidor de compilação, ele reclama:

Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mapserver.x86_64 0:6.2.1-2 will be updated
--> Processing Dependency: mapserver = 6.2.1-2 for package: mapserver-perl-6.2.1-2.x86_64
--> Processing Dependency: mapserver = 6.2.1-2 for package: mapserver-python-6.2.1-2.x86_64
---> Package mapserver.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-6.2.1-12.el6.x86_64
--> Running transaction check
---> Package mapserver.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-6.2.1-12.el6.x86_64
---> Package mapserver-perl.x86_64 0:6.2.1-2 will be updated
---> Package mapserver-perl.x86_64 0:6.2.1-12.el6 will be an update
---> Package mapserver-python.x86_64 0:6.2.1-2 will be updated
---> Package mapserver-python.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-python-6.2.1-12.el6.x86_64
--> Finished Dependency Resolution
Error: Package: mapserver-6.2.1-12.el6.x86_64 (geodata)
       Requires: libclntsh.so.12.1()(64bit)
Error: Package: mapserver-python-6.2.1-12.el6.x86_64 (geodata)
       Requires: libclntsh.so.12.1()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

Obviamente, o libclntsh.so.12.1 já está instalado no yum e está localizado exatamente no mesmo local em que o pacote foi construído.

O que estou fazendo de errado?

    
por Jesper Kihlberg 13.09.2013 / 11:10

2 respostas

2

Confirmar parte do RPM

Parece que o yum / RPM está reclamando porque um requisito não foi atendido. Eu normalmente usaria esse comando para confirmar que os arquivos estão sob o controle do RPM.

$ locate libclntsh

Se isso retornar um caminho, verifique com o RPM se ele o controla:

$ rpm -qf <path from locate command>

Se o RPM não controlar este arquivo, não importa se está no sistema, do ponto de vista do RPM ele não está instalado.

Problema semelhante?

Me deparei com esse tópico que parece ser idêntico ao problema que você está tendo. A única sugestão tangível desse segmento é certificar-se de que os arquivos com os quais você está trabalhando estejam no sistema local. Eu não acho que é o seu problema, mas dê uma olhada no tópico de qualquer maneira, pode lançar alguma luz para você.

por 13.09.2013 / 14:09
0

Na verdade, sua pergunta é dupla. Isso não é um problema se um arquivo libclntsh.so.12.1 estiver instalado em sua caixa, mas se algum pacote de qualquer repositório atualmente ativado fornece um recurso 'libclntsh.so.12.1 () (64bit)'

Então, consulte isso por meio de yum whatprovides 'libclntsh.so.12.1()(64bit)' e você verá se algum pacote fornece isso. Talvez você tenha desativado um repositório?

A outra parte da pergunta "por que o yum continua reclamando": porque o yum, por padrão, sempre executará uma verificação do yum para garantir a consistência do banco de dados do rpm e relatar quaisquer conflitos ou dependências ausentes. Isso está intimamente ligado ao histórico de transações que o yum mantém e pode ser desativado, embora com muitos efeitos colaterais. Verifique o man yum.conf e a opção history_record

    
por 07.09.2014 / 17:15