Fixando macports borked

5

Eu tentei instalar alguns pacotes e recebi os seguintes erros:

$ sudo port install pkgconfig
--->  Computing dependencies for pkgconfig
--->  Dependencies to be installed: libiconv
--->  Installing libiconv @1.14_0
Error: org.macports.install for port libiconv returned: no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_libiconv/libiconv/work/destroot
Error: Failed to install libiconv
Please see the log file for port libiconv for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_libiconv/libiconv/main.log
Error: The following dependencies were not installed: libiconv
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port pkgconfig failed

Isso parecia um problema de macports. Então eu tentei atualizar as portas. Ele jogou o mesmo erro (não destroot encontrado):

$ sudo port upgrade outdated
--->  Installing expat @2.1.0_0
Error: org.macports.install for port expat returned: no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_expat/expat/work/destroot
Please see the log file for port expat for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_expat/expat/main.log
Error: Problem while installing expat
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets

Eu tentei sudo port selfupdate , o que não funcionou. No entanto, sudo port -v selfupdate funcionou. Quando eu tento instalar o expat via sudo port install -fp expat , por exemplo, eu entendo isso:

no destroot found at: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_textproc_expat/expat/work/destroot

O erro sugeriu que eu analisasse o log criado, que pode ser encontrado aqui: link . Ele continua sobre algo com privilégios de usuário, embora eu esteja executando o comando com o sudo.

Depois disso, tentei criar manualmente o diretório para expat. Então, brilhantemente, falhou em me dizer que não havia destroços para ncurses. Criado isso também (junto com chown para macports). Agora falha para o gawk (arquivo de log: link ). Eu não posso estar passando por todas as dependências e criando diretórios para eles. Eu também não tenho ideia de como consertar isso. Eu tentei alterar o proprietário de arquivos macports para "macports" sem resultados ..

EDIT: Eu também reinstalei ferramentas de linha de comando. Ainda nada.

    
por Lightheaded 01.05.2014 / 12:27

2 respostas

11

O erro "no destroot found at" ocorre quando a instalação de um arquivo binário falhou antes (pelo menos é o que eu acho, não consertei e consertei porque não consegui reproduzir até agora).

De qualquer forma, a solução para isso não é fazer coisas manualmente, mas executar sudo port clean $portname e tentar novamente. Essa é a primeira coisa que você deve tentar sempre que uma compilação falha, e ela corrige 100% dos erros "não destroot encontrado".

Btw, você não deve usar a opção -p ao instalar ou atualizar o material. É considerado prejudicial neste caso. Ele não está sendo removido porque é útil em algumas operações que não dependem umas das outras, como sudo port -p fetch outdated . O MacPorts geralmente força a recriação de portas sem alterações, a fim de obter uma versão atualizada de uma dependência. Se você executar sudo port -p upgrade outdated , isso poderá levar a uma reconstrução mesmo que a versão atualizada da dependência não tenha sido criada, desafiando o ponto de atualização.

Sua instalação do gawk falhou porque seu binário /opt/local/bin/xz está quebrado e não conseguiu extrair a fonte por causa disso:

:info:extract dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
:info:extract   Referenced from: /opt/local/lib/libintl.8.dylib
:info:extract   Reason: Incompatible library version: libintl.8.dylib requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0

Ironicamente, essa situação exata pode acontecer quando você executa a atualização com -p . Para corrigir esse erro específico, você precisa reconstruir a gettext port: sudo port -nf upgrade gettext . Você também deve executar sudo port rev-upgrade para descobrir problemas semelhantes e corrigi-los automaticamente (ou pelo menos tentar).

    
por 01.05.2014 / 20:47
1

Como uma nota lateral; Se pacotes relacionados ao Python mostrarem erros de destroot, verifique a instalação dupla com pip. No meu caso particular, eu tinha o py27-funcsigs como um pacote de porta instalado e o funcsigs também instalado com o pip. Eu tive que remover a versão do pip primeiro.

sudo -H pip uninstall funcsigs
sudo port clean py27-funcsigs
sudo port install py27-funcsigs

espero que isso ajude.

    
por 30.04.2018 / 15:32

Tags