Se eu construir um pacote a partir do código-fonte, como posso desinstalar ou remover completamente?

111

Eu usei o código-fonte para criar um pacote, como abaixo:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install

Mas, infelizmente, eu descobri que é a versão mais recente, e tem muitos bugs, então eu preciso removê-lo / desinstalá-lo. Mas como posso fazer isso? Eu tentei make clean; make uninstall , mas ainda vejo que existe:

# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....

Como você remove isso agora?

    
por YumYumYum 12.12.2011 / 12:42

6 respostas

144

Normalmente você pode usar apenas:

make uninstall

ou

sudo make uninstall

se o aplicativo foi instalado como root.

Mas isso funcionará somente se o desenvolvedor do pacote tiver se encarregado de criar uma boa regra de desinstalação.

Você também pode tentar dar uma olhada nas etapas usadas para instalar o software executando:

make -n install

E tente inverter essas etapas manualmente.

No futuro, para evitar esse tipo de problema, tente usar checkinstall em vez de make install sempre que possível ( AFAIK sempre, a menos que você queira manter ambas as versões compilada e empacotada ao mesmo tempo). Ele irá criar e instalar um arquivo deb que você pode desinstalar usando seu gerenciador de pacotes favorito.

make clean normalmente limpa os diretórios de construção, não desinstala o pacote. É usado quando você quer ter certeza de que a coisa toda é compilada, não apenas os arquivos alterados.

    
por Javier Rivera 12.12.2011 / 12:49
26

Eu não acho que isso seja um bug, seria uma boa idéia ler e aprender a usar o checkinstall ao instalar a partir do código-fonte.

você pode instalar o checkinstall a partir dos repositórios, uma breve descrição do pacote;

O CheckInstall controla todos os arquivos criados ou modificado pelo seu script de instalação ("make install" "make install_modules", "setup", etc), cria um pacote binário padrão e instala-lo em seu sistema dando-lhe a capacidade de desinstalá-lo com o seu utilitários de gerenciamento de pacotes padrão da distribuição.

Estes links abaixo podem ser úteis para uma melhor compreensão. link

link

    
por Sabacon 20.01.2011 / 23:36
15

Isto não é um erro - compilar a partir da fonte é um método não suportado de instalar software que ignora completamente o sistema de gerenciamento de pacotes (que é usado pelo Centro de Software).

Não existe uma maneira padrão de instalar ou desinstalar o software compilado a partir do código-fonte, de modo que o Ubuntu não saiba o que fazer. O software nem sequer é listado como um programa instalado.

Você deve seguir as instruções do distribuidor para instalação e remoção de tal software personalizado. Você também pode entrar em contato com o desenvolvedor para pedir que ele crie um pacote Debian para que o sistema de gerenciamento de pacotes possa ser usado.

    
por dv3500ea 20.01.2011 / 23:38
3

Não é um erro, é o que acontece quando os desenvolvedores recorrem à distribuição via fonte e não através dos métodos de empacotamento nativos.

Você pode fazer com que seus arquivos de origem se tornem pacotes debian usando o checkinstall ou o dhbuild. Honestamente, na minha opinião - novos usuários devem evitar a instalação a partir da fonte, e os desenvolvedores devem evitar a distribuição apenas pela fonte.

    
por RolandiXor 20.01.2011 / 23:36
0

Precisamos negociar o fato de que fazer a desinstalação não sempre funcionará, portanto, abaixo é mais uma solução proativa.

 Isso envolve o uso do programa paco que está disponível no Ubuntu Software Center. Depois de instalarmos o paco, Podemos usá-lo no modo de log quando "instalamos" um programa. O Paco age como um wrapper para o seu "make install" e cria um log no diretório / var / log / paco com a lista de arquivos copiados para vários diretórios. Além disso, você pode ver os arquivos no final do Paco Front.

Por exemplo, quando eu compilei o php do código-fonte, fiz o seguinte:

paco -lp php5 "make install"

O parâmetro l faz o paco rodar no modo log. Isto criou um arquivo de log em / var / log / paco chamado php5 (o nome que eu dei no comando). Ele continha todos os arquivos copiados para vários locais padrão durante a instalação. Você poderia usar um editor de linha de comando ou paco gui para exibir os arquivos.

Abaixo está o exemplo de obter a lista de arquivos usando o editor de linha de comando sed (Substitua php5 pelo seu nome de arquivo).

cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'

Depois de obter a lista dos arquivos, você sabe como excluí-los, não é? De fato, você poderia passar os resultados do comando acima para rm usando backticks como mostrado abaixo:

sudo rm 'cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p''

Trabalho feito!

Nota: Devido às limitações do LD_PRELOAD, o paco não pode seguir o rastreio de programas suid. Veja man page.

    
por sjsam 09.03.2015 / 13:56
0

Eu tinha compilado php-5.6.30 da origem sem configurá-lo com o openssl, então tive que voltar e instalar do zero. Usando make uninstall não funciona como o Makefile para php não suporta.

No entanto, esta etapa funcionou para mim, - eu listei todos os arquivos relacionados ao php e removi-os manualmente, demorei cerca de 5 minutos sem suar a camisa. Você também pode usar essas etapas para desinstalar o software compilado.

Substitua php pelo software que você precisa para desinstalar

whereis php

O comando acima lista os diretórios onde os binários estão instalados ex: / usr / local / bin / php, / usr / bin / php .. remove cada arquivo / diretório listado em sua saída.

sudo rm -f /usr/local/bin/php

Faça isso com todos os arquivos listados na saída acima e está tudo pronto para instalar a versão mais recente do zero.

    
por Abhinay 03.04.2018 / 21:25