Qual é a maneira correta de usar um binário alternativo

1

Estou no Linux Mint 18 Cinnamon 64-bit.

Eu tenho esses binários de 7z e suas versões no meu sistema:

/usr/bin/7z

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

e

/usr/local/share/PeaZip/res/7z/7z

7-Zip [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21

Como estou sempre usando o último, está ficando cada vez mais irritante escrever o caminho completo para ele.

Devo definir apenas um alias ou existe uma maneira mais clara?

    
por Vlastimil 18.11.2016 / 11:17

2 respostas

1

Uma maneira de substituir um binário por outro no Debian, de modo que ele sobrevive a atualizações nos pacotes (por exemplo, substituindo o arquivo init de um pacote BIND), está fazendo um desvio de arquivo.

Basicamente, um arquivo de desvio instala / move o arquivo original para outro local, e instrui o sistema de gerenciamento de pacotes a colocar quaisquer atualizações de instalação subseqüentes naquele arquivo no novo local, deixando intocado o local original.

De acordo com o manual de políticas - diversões do Debian, no seu caso:

dpkg-divert --divert /usr/local/share/PeaZip/res/7z/7z.old --rename /usr/bin/7z
cp /usr/local/share/PeaZip/res/7z/7z /usr/bin/7z

Para remover o desvio:

dpkg-divert --remove /usr/bin/7z

Faça cópias de segurança de ambos os binários antes de tentar o desvio.

Para mais comandos, veja: Substituir binários e arquivos por dpkg-divert

Outra alternativa mais fácil é manter a embalagem original, por ex. dizendo ao gerenciador de pacotes para não aplicar atualizações a ele, e copiando sobre o novo binário como em:

echo "p7zip hold" | dpkg --set-selections

ou mais simples:

apt-mark hold p7zip

Veja: Como impedir que um pacote seja atualizado no Debian

Outra opção ainda mais limpa seria criar um deb com a nova versão do p7zip, no entanto, como o método e as etapas específicas variam com os pacotes, não tentarei descrevê-lo aqui.

    
por 18.11.2016 / 11:57
0

Você pode ajustar sua variável de ambiente PATH para incluir o diretório específico de 7z :

export PATH=/usr/local/share/PeaZip/res/7z:$PATH

Is it possible to install 7z in /usr/local/bin or link it into this directory?

Frequentemente, /usr/local/lib é antes de /usr/bin , então o bom binário será encontrado.

    
por 18.11.2016 / 11:26