Enquanto correndo
./configure --prefix=/mingw
em um sistema MinGW / MSYS para uma biblioteca que eu havia executado anteriormente
'./configure --prefix=/mingw && make && make install'
Me deparei com esta mensagem:
AVISO: Uma versão do SDK do plugin Vamp já está instalada. Espere preocupações e tristezas se você instalar uma nova versão sem remover a antiga antes. (Continuando)
Isso me preocupou. Qual é o oposto de 'make install', ou seja, como uma biblioteca é desinstalada no Linux? 'Limpar' fará o trabalho ou há outras etapas envolvidas?
sudo make uninstall
se os arquivos de configuração da instalação ainda estão disponíveis, mas nenhuma outra solução óbvia, se não, além de desinstalar o utilitário de gerenciamento de pacotes do sistema, se instalado com "checkinstall " Utilitário.make install
, nunca preciseimake uninstall
removê-los. Eu sempre useixargs rm < install_manifest.txt
Respostas:
make clean
remove todos os arquivos intermediários ou de saída da sua árvore de origem / construção. No entanto, isso afeta apenas a árvore de origem / construção; ele não toca no restante do sistema de arquivos e, portanto, não remove o software instalado anteriormente.Se você tiver sorte, correr
make uninstall
funcionará. Cabe aos autores da biblioteca fornecer isso, no entanto; alguns autores fornecem umuninstall
alvo, outros não.Se você não tiver sorte, precisará desinstalá-lo manualmente. A execução
make -n install
pode ser útil, pois mostrará as etapas que o software levaria para instalar-se, mas na verdade não fará nada. Você pode então reverter manualmente essas etapas.fonte
Se
sudo make uninstall
não estiver disponível:Em um sistema baseado no Debian, em vez de (ou depois de *),
make install
você pode executarsudo checkinstall
para criar um.deb
arquivo que é instalado automaticamente. Você pode removê-lo usando o gerenciador de pacotes do sistema (por exemplo,apt
/synaptic
/aptitude
/dpkg
). O Checkinstall também suporta a criação de outros tipos de pacotes, por exemplo, RPM.Veja também http://community.linuxmint.com/tutorial/view/162 e alguns usos básicos do checkinstall e o pacote debian checkinstall .
*: Se você estiver lendo isso após a instalação,
make install
ainda pode seguir as instruções acima e executardpkg -r $PACKAGE_NAME_YOU_CHOSEN
posteriormente.fonte
make install
antes de usarcheckinstall
.checkinstall
para que esta excelente resposta funcione.checkinstall
e se a nova compilação for feita com as mesmas configurações que a antiga, desinstalando o pacote instalado comcheckinstall
deve remover os arquivos instalados anteriormente.Se você possui um
manifest
arquivo que lista todos os arquivos que foram instalados commake install
você, execute este comando que tenho de outra resposta:Se você tiver
sudo make install
, precisará adicionar um sudo à sua desinstalação:fonte
xargs echo rm | sh
,? Muito óbvio que quem sugeriu isso não é particularmente experiente ou conhecedor do uso do shell.install_manifest.txt
contiver um asterisco ...rm *
será canalizado para um shell.) Votado por esse motivo.install_manifest.txt
se espera que exista?Dependendo de quão bem a mágica makefile / configure script / autofoo do programa em questão é a seguinte, pode resolver seu problema:
O problema é que você deve executar isso na árvore de origem da versão que você instalou e com exatamente a mesma configuração usada para a instalação.
fonte
Como desinstalar após "make install"
Método # 1 (faça a desinstalação)
Etapa 1: Você só precisa seguir esta etapa se tiver excluído / alterado o diretório de construção de qualquer forma: Faça o download e faça / faça a instalação usando exatamente o mesmo procedimento que você fez antes.
Etapa 2: tente fazer a desinstalação.
Se isso der certo, você está pronto. Se você é paranóico, também pode tentar as etapas do "Método 3" para garantir
make uninstall
que não perdeu nenhum arquivo.Método # 2 (checkinstall - apenas para sistemas baseados em debian)
Visão geral do processo
Nos sistemas baseados em debian (por exemplo, Ubuntu), você pode criar um
.deb
pacote com muita facilidade usando uma ferramenta chamadacheckinstall
. Você então instala o pacote .deb (isto fará seu sistema debian perceber que todas as partes do seu pacote foram realmente instaladas) e finalmente o desinstala para permitir que o seu gerenciador de pacotes limpe seu sistema corretamente.Passo a passo
Nesse ponto,
checkinstall
será solicitado um nome de pacote. Digite algo um pouco descritivo e observe-o porque você o usará em um minuto. Ele também solicitará mais alguns dados que você pode ignorar. Se reclamar sobre a versão não ser aceitável, digite algo razoável como1.0
. Quando terminar, você pode instalar e finalmente desinstalar:Método # 3 (install_manifest.txt)
Se
install_manifest.txt
existir um arquivo no diretório de origem, ele deverá conter os nomes de arquivos de todos os arquivos criados pela instalação.Então, primeiro verifique a lista de arquivos e seu tempo de modificação:
Você deve receber zero erros e os tempos de modificação dos arquivos listados devem estar no ou após o tempo de instalação. Se estiver tudo bem, você pode excluí-los de uma só vez:
O usuário Merlyn Morgan-Graham, no entanto, tem um aviso sério sobre esse método que você deve ter em mente (copiado aqui literalmente): "Cuidado com arquivos que também podem ter sido instalados por outros pacotes. Simplesmente excluir esses arquivos [...] poderia quebre os outros pacotes ". . Essa é a razão pela qual criamos o
deleted-by-uninstall
dir e movemos os arquivos para lá em vez de excluí-los.99% deste post existia em outras respostas. Acabei de coletar tudo de útil em um (espero) fácil de seguir e tentei dar atenção extra a detalhes importantes (como citar argumentos xarg e manter backups de arquivos excluídos).
fonte
make clean
geralmente limpa apenas os arquivos criados no diretório que contém o próprio código-fonte e raramente toca em qualquer software instalado.Os makefiles geralmente não contêm um alvo para desinstalação - você geralmente precisa fazer isso removendo os arquivos do diretório em que foram instalados. Por exemplo, se você construiu um programa e instalá-lo (usando
make install
) em/usr/local
, você iria querer olhar através de/usr/local/bin
,/usr/local/libexec
,/usr/local/share/man
, etc., e remover os arquivos indesejados. Às vezes, um Makefile inclui umuninstall
destino, mas nem sempre.Obviamente, em um sistema Linux, você instala o software usando um gerenciador de pacotes , capaz de desinstalar o software "automaticamente".
fonte
O utilitário "stow" foi projetado para solucionar esse problema: http://www.gnu.org/software/stow/
fonte
stow
para resolver esse problema?Infelizmente, não existe um padrão, este é um dos perigos da instalação a partir do código-fonte. Alguns Makefiles incluem uma "desinstalação", então
do diretório de origem pode funcionar. Caso contrário, pode ser uma questão de desfazer manualmente o que
make install
aconteceu.make clean
geralmente apenas limpa o diretório de origem - removendo arquivos gerados / compilados e similares, provavelmente não é o que você procura.fonte
Conheço alguns pacotes que suportam "make uninstall", mas muitos outros que suportam make install DESTDIR = xxx "para instalações em etapas.
Você pode usar isso para criar um pacote que você instala em vez de instalar diretamente da fonte. Não tive sorte com o checkinstall, mas o fpm funciona muito bem.
Isso também pode ajudá-lo a remover um pacote instalado anteriormente usando o make install . Você simplesmente força a instalação do seu pacote construído sobre o make instalado e o desinstala.
Por exemplo, usei isso recentemente para lidar com o protobuf-3.3.0. No RHEL7:
Prefira yum a rpm, se puder.
No Debian9:
Prefira o apt ao dpkg onde puder.
Eu também postei responder isso aqui
fonte
Make
pode lhe dizer o que sabe e o que fará. Suponha que você tenha um destino "install", que executa comandos como:Nas suas regras genéricas, adicione:
Um truque semelhante pode fazer um genérico
make clean
.fonte
Preâmbulo
abaixo pode funcionar ou não, tudo isso é como está, você e somente você é a pessoa responsável em caso de algum dano, perda de dados e assim por diante. Mas espero que tudo corra bem!
Para desfazer,
make install
eu faria (e fiz) o seguinte:Idéia: verifique o script instalado e desfaça-o com o script bash simples.
--prefix=$PWD/install
. Para o CMake, você pode acessar o diretório de construção, abrir o CMakeCache.txt e corrigir o valor CMAKE_INSTALL_PREFIX.make install
novamente).make install
script é instalado no diretório personalizado com o mesmo conteúdo que você deseja remover de outro lugar (geralmente/usr/local
). Então, precisamos de um script. 3.1 O script deve comparar o diretório personalizado, com o diretório que você deseja limpar. Eu uso isso:anti-install.sh
3.2 Agora basta executar esse script (ele será executado a seco)
Por exemplo, você não deseja limpar / usr / local, e seu diretório de instalação personalizado é /user/me/llvm.build/install, então seria
3.3 Verifique o registro com cuidado, se os comandos forem bons para você, remova o comentário
rm $RM_DIR/$fn
e execute-o novamente. Mas pare! Você realmente verificou cuidadosamente? Pode verificar novamente?Fonte das instruções: https://dyatkovskiy.com/2019/11/26/anti-make-install/
Boa sorte!
fonte