Quando instalo um programa simples, ele geralmente usa make && make install
e nem sequer tem um destino de desinstalação .
Se eu desejar atualizar um programa, é um protocolo padrão presumir que ele seja reescrito perfeitamente no programa antigo?
Como acompanho esses programas; a maioria das pessoas simplesmente 'dispara e esquece' e, se nenhum destino de desinstalação for fornecido, tenho que excluir tudo manualmente?
Respostas:
Instale cada programa em uma árvore de diretórios dedicada e use Stow ou XStow para fazer com que todos os programas apareçam em uma hierarquia comum. O armazenamento cria links simbólicos do diretório específico do programa para uma árvore comum.
Em mais detalhes, escolha um diretório de nível superior, por exemplo
/usr/local/stow
. Instale cada programa em/usr/local/stow/PROGRAM_NAME
. Por exemplo, organize para que seus executáveis sejam instalados/usr/local/stow/PROGRAM_NAME/bin
, suas páginas de manual/usr/local/stow/man/man1
e assim por diante. Se o programa usa o autoconf, execute./configure --prefix /usr/local/stow/PROGRAM_NAME
. Depois de executarmake install
, executestow
:E agora você terá links simbólicos como estes:
Você pode acompanhar com facilidade os programas que você instalou listando o conteúdo do
stow
diretório e sempre sabe a que programa pertence um arquivo porque é um link simbólico para um local no diretório do programa. Desinstale um programa executandostow -D PROGRAM_NAME
e excluindo o diretório do programa. Você pode tornar um programa temporariamente indisponível executandostow -D PROGRAM_NAME
(executestow PROGRAM_NAME
para disponibilizá-lo novamente).Se você deseja alternar rapidamente entre versões diferentes do mesmo programa, use
/usr/local/stow/PROGRAM_NAME-VERSION
como o diretório do programa. Para atualizar da versão 3 para a versão 4, instale a versão 4 e executestow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.As versões mais antigas do Stow não vão muito além do básico que descrevi nesta resposta. As versões mais recentes, assim como o XStow (que não é mantido ultimamente), têm recursos mais avançados, como a capacidade de ignorar certos arquivos, lidar melhor com links simbólicos existentes fora do diretório de armazenamento (como
man -> share/man
), lidam com alguns conflitos automaticamente (quando dois programas fornecem o mesmo arquivo) etc.Se você não possui ou não deseja usar o acesso root, pode escolher um diretório no seu diretório pessoal, por exemplo
~/software/stow
. Nesse caso, adicione~/software/bin
ao seuPATH
. Seman
não encontrar automaticamente as páginas de manual, adicione~/software/man
à suaMANPATH
. Adicione~/software/info
ao seuINFOPATH
,~/software/lib/python
ao seuPYTHONPATH
e assim por diante, conforme aplicável.fonte
Você pode usar o checkinstall para criar um pacote (pacotes compatíveis com RPM, Deb ou Slackware). Dessa forma, você pode usar o gerenciador de pacotes de distribuição para adicionar / remover o aplicativo (mas não atualizar)
Você usa
checkinstall
no lugar domake install
comando (usando o parâmetro -D para Deb; -R é RPM e -S é Slackware):O checkinstall criará e instalará o pacote por padrão, ou você poderá compilá-lo apenas sem a instalação.
checkinstall está disponível na maioria dos repositórios de distribuição.
fonte
checkinstall
parece não ser o item que é mantido ativamente (?) :-(Na maior parte, esse foi o motivo por trás de pacotes, portas e outros tipos de gerenciadores para impedir que esse tipo de coisa aconteça.
Eu diria que a exclusão manual é a única maneira de uma instalação manual, a menos que alguém tenha uma resposta melhor para esse ponto que eu talvez não saiba.
fonte
Mais uma alternativa são as dicas do Linux From Scratch :
Mais controle e gerenciamento de pacotes usando usuários de pacotes
Após essa primeira sugestão, encontrei uma variante evoluída:
crablfs - Sistema de gerenciamento de pacotes baseado no usuário
Este
crablfs
é o exemplo mais recente de gerenciamento de pacotes usando uids e gids exclusivos para gerenciamento de pacotes, mas no sourceforge está evoluindo novamente nos ulfs:uLFS: seu Linux gerenciável e reutilizável do zero
Para usuários causais de pacotes instalados, acho que a solução LFS de "usuários de pacotes" é leve, menos invasiva e elegante. Em resumo, você instala pacotes
/usr/local
ou/home/user/local
rastreia arquivos usando uids e gids exclusivos para cada pacote, mas coloca todos os arquivos nos locais tradicionais, diretórios comuns/usr/local/bin
,/usr/local/lib
como em todas as distribuições principais do Linux ... oclusão de arquivos e substituição ou exclusão indesejada de arquivos é evitado por um truque simples do Linux, explicado por Matthias S. Benkmann em more_control_and_pkg_man.txt, que precisa apenas da manipulação normal de permissões de arquivos e diretórios, por exemplo, a permissão de bits persistentes para diretórios para evitar sobrescrições indesejadas de arquivos:Para mim, parece uma solução simples e inteligente! Eu usei esse esquema na minha compilação LFS e é uma solução funcional ...
fonte
tar
arquivos da instalação/usr/src/non-rpms
para lembrá-lo (é o que eu costumo fazer).fonte