Desinstalando programas no Linux

30

Uso o Windows e o Mac OS há 5 anos e agora estou pensando em usar o Linux diariamente. Instalei o Ubuntu em uma máquina virtual e tentei entender como posso usar o Linux para o meu trabalho diário (como programador js / web designer).

Desculpe a pergunta do iniciante, mas me ocorre que, às vezes, quando instalo um programa make confige make installaltera meu sistema de maneiras que não são revertíveis facilmente. Em janelas quando você instala um programa, você pode desinstalá-lo e espero que se ele joga pelo livro não haverá vestígios do programa deixado no sistema de arquivos ou registery, etc. no Mac OS você simplesmente excluir um aplicativo como um arquivo.

Mas no Linux existe apt-gete existe make. Eu não entendi direito como posso manter minha instalação do Linux limpa e arrumada. Parece que qualquer nova instalação de aplicativo pode danificar meu sistema. Mas o Linux tem uma reputação de ser muito robusto, então deve haver algo que não entendo sobre como a instalação e desinstalação do aplicativo afeta o sistema. Alguém pode lançar alguma luz sobre isso?


Atualização: ao instalar um aplicativo, seus arquivos podem se espalhar para qualquer lugar (os gerenciadores de pacotes lidam com parte do problema), mas há um truque interessante: use o Docker para instalar aplicativos e mantenha-os na caixa de proteção, especialmente se você não quiser use-os com muita frequência. Também é possível executar aplicativos da GUI como o Firefox inteiramente em uma "caixa de areia" do Docker.

AlexStack
fonte
11
Como usuário simples, você deve usar apt-gete não makeinstalar software. make installé usado quando você precisa criar a versão mais recente (possivelmente instável) de um software a partir de fontes, que ainda não está disponível como pacote.
Dmitry Grigoryev
@DmitryGrigoryev O uso apté mais simples e fornece uma melhor tui do que o uso apt-get.
Bakuriu 15/05
3
Quando usei o OS X, muitas vezes achei que a exclusão do *.apparquivo era insuficiente, pois as instalações de aplicativos frequentemente espalhavam outros lugares (por exemplo, o diretório da Biblioteca, da memória). Além disso, se você criar manualmente a partir da fonte no Ubuntu make install, use-o checkinstallpara permitir a remoção fácil.
Sparhawk 15/05
11
Não use o ./configure ; make ; make installcaminho. Tudo que você precisa é aprender a fabulosa ferramenta fpm .
Deer Hunter
qual é a ferramenta fpm?
AlexStack

Respostas:

28

Uma nova instalação raramente interrompe seu sistema (a menos que você faça coisas estranhas como misturar código-fonte e binário).

Se você usa binários pré-compilados no Ubuntu, pode removê-los e não precisa se preocupar em quebrar seu sistema, porque um binário deve listar o que é necessário para ser executado e seu gerenciador de pacotes listará quais programas dependem desse programa para você revisar.

Ao usar o código-fonte, você precisa ter mais cuidado para não remover algo crítico (como o glib). Não há avisos ou qualquer outra coisa quando você desinstala da fonte. Isso significa que você pode quebrar completamente sua máquina.

Se você deseja desinstalar usando apt-get, use apt-get remove packagecomo indicado anteriormente. Todos os programas que dependem desse pacote também serão desinstalados e você poderá revisá-los.

Se você deseja desinstalar, geralmente o processo é make uninstall. Não há aviso (como eu disse acima).

make confignão irá alterar o seu sistema, mas make installsim.

Como iniciante, recomendo usar apt-getou qualquer distro que você use para pacotes binários. Mantém as coisas legais e organizadas e, a menos que você realmente queira, isso não afetará seu sistema.

Felizmente, isso esclarece tudo.

SailorCire
fonte
3
Para traceless desinstalação você vai, naturalmente, utilizar a --purgeopção comapt-get
Hagen von Eitzen
16

Em teoria, você make uninstalldeve remover o que foi make installadicionado e seu sistema não acumular lixo. O problema, é claro, é que nem todos os makefiles são criados iguais.

Alguns podem omitir a uninstallregra, deixando para você descobrir o que a installregra fez. Pior, se a regra de instalação sobrescrever uma biblioteca vinculada, uma uninstallrotina burra pode interromper as dependências de algum outro programa.

A melhor solução para instalações de origem é usar prefixos diferentes dos pacotes instalados pelo gerenciador de pacotes do sistema. O Apt instala arquivos para /usr/usar a /usr/local/hierarquia nas instalações de origem. Isso facilita muito o rastreamento de quais arquivos pertencem a quais pacotes e desinstalações não quebram o sistema.

./configure --prefix=/usr/localfunciona para muitos scripts de configuração. Caso contrário, você pode editar o Makefile manualmente. Ou apenas copie os arquivos manualmente.

O Apt e outros gerenciadores de pacotes controlam quais arquivos eles instalaram e suas dependências reversas, para que suas funções de desinstalação sejam seguras.

WhimsicalWombat
fonte
15

Eu recomendo que você use apt-get installpara instalar qualquer pacote no linux e apt-get remove(nome do pacote) ou apt-get purge(nome do pacote) que removerá não apenas o pacote principal que você deseja desinstalar, mas todos os pacotes ou dependências associados que foram instalados durante a instalação.

Agora, para manter seu sistema mais limpo, recomendo que você use apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( este post é interessante sobre isso), que removerá todos os arquivos baixados durante a instalação, mas que não são mais necessários.

Outro comando que seria útil se você deseja remover todas as dependências instaladas no seu sistema, mas elas não foram removidas quando você o desinstalou apt-get autoremove.

Se você instalar um pacote via make e make install, será responsável por desinstalá-lo (talvez exista um arquivo README incluído no pacote baixado que informa como fazê-lo), além de tentar desinstalar todas as dependências associadas a ele . É por isso que é sempre recomendável instalar pacotes no Linux oferecidos pelo gerenciador de pacotes da distribuição, se você fizer dessa maneira, pode ter certeza de que seu pacote foi testado o suficiente para funcionar com a distribuição (sabor do Linux) que você está usando e é muito improvável que quebre seu sistema. Além disso, você pode ter certeza de que seu pacote será atualizado quando necessário, enquanto que se você o instalar sozinho, você será o responsável por fazer tudo isso.

Eu espero que isso ajude :)

VaTo
fonte
11

A maneira normal de gerenciar aplicativos instalados no Linux é com um gerenciador de pacotes. A escolha dos gerenciadores de pacotes é uma das principais coisas que diferenciam as distribuições. O Ubuntu, como o Debian (no qual é baseado), usa dpkg e APT ; Na maioria das vezes, você só precisa interagir com uma das interfaces do APT, como apt-get(linha de comando), aptitude (linha de comando ou modo de texto) ou Synaptic (GUI).

Um gerenciador de pacotes controla quais arquivos pertencem a qual programa instalado. Como no Windows, os programas podem executar código arbitrário como parte do procedimento de instalação ou desinstalação, mas geralmente são bem-comportados e não quebram outros programas. Além disso, o código de (des) instalação é escrito pelo mantenedor do pacote, não pelo autor upstream (para pacotes na distribuição principal). Ao contrário do Windows, existe uma interface unificada para instalação, atualização e desinstalação: o gerenciador de pacotes. Você não precisa procurar o desinstalador (se houver), basta clicar no ícone “desinstalar” no gerenciador de pacotes gráficos ou executar apt-get remove PACKAGENAME.

Se você precisar de um software "exótico", pode ser necessário instalá-lo manualmente, descompactando um arquivo ou compilando a partir do código-fonte. Instaladores que vêm na forma de um programa executável são raros no mundo Linux. Correndo make installtende a se espalhar cada programa ao longo de vários diretórios ( /usr/local/bin, /usr/local/man, /usr/local/lib, etc.). Para manter as coisas organizadas, eu recomendo o uso de um "gerenciador de pacotes do homem pobre", como o stow . Com o stow, cada pacote é instalado em seu próprio diretório e o stowutilitário cuida da criação de links simbólicos para que os comandos instalados pelo pacote estejam no caminho de busca de comandos e assim por diante. Consulte Acompanhamento de programas para obter mais detalhes.

Gilles 'SO- parar de ser mau'
fonte
esse "software exótico" pode ser escrito por qualquer pessoa, certo? Como esse "software exótico" se torna oficialmente disponível nas distros? Alguém revisa seu código fonte linha por linha? Como o Ubuntu, por exemplo, decide incluir um software em seu comando APT-GET e ignorar outro?
AlexStack
11
@AlexStack A maioria das distribuições é feita por voluntários. O Ubuntu é patrocinado pela Canonical, que paga algumas pessoas, mas ainda assim a maior parte da manutenção do pacote é feita por voluntários. Portanto, a resposta mais precisa é que o Ubuntu inclui qualquer software que um voluntário decidiu incluir. Mais precisamente, a maioria dos softwares no Ubuntu vem do Debian, então um desenvolvedor Debian teve que decidir que o pacote valia a pena ser trabalhado, e o software deve estar em conformidade com a política (licença aceitável, não muito complicada).
Gilles 'SO- stop be evil'
@AlexStack não há garantia de que alguém tenha revisado uma parte específica do software linha por linha, mesmo que esse software esteja disponível nos repositórios do Ubuntu (ou seja, por meio de uma instalação padrão apt-getou similar). Mas eles apenas colocam programas razoavelmente populares nos repositórios, aqueles que têm usuários suficientes para ter certeza de que eles basicamente fazem o que devem fazer.
David Z
8

Você deve tentar usar o gerenciador de pacotes (apt-get, aptitude, synaptic ou aptdcon, software-center, mintinstall, ..) se possível. O uso de uma tarefa make para instalação é muito simples, não é garantido que ele tenha uma uninstallcontrapartida e que não funcione bem com o resto do sistema (é apenas um script vinculado ao sistema de compilação do make - e, diferentemente de um pacote revisado, as tarefas do make podem conter qualquer código executável, potencialmente malware).

Se você não encontrar uma versão empacotada do software de que precisa, poderá achar checkinstall( checkinstall make install) útil.

PSkocik
fonte
3

Não sou especialista e não sei muito sobre a instalação de software a partir da fonte, mas apt-get, usando , você pode remover o software instalado apt-get remove package-name. Para remover todos os arquivos de configuração também, use apt-get purge package-name. A maneira mais segura de manter sua instalação Linux organizada é usar apenas pacotes nos repositórios oficiais. Quando é necessário um pacote que não esteja nos repositórios oficiais, ele pode ser encontrado com frequência (desde que você esteja usando o Ubuntu) em um PPA .

Gabe
fonte
apt-getnão serve para o OP que está usando configureemake install
roaima 15/05
3

Como as outras respostas dizem, hoje em dia é comum instalar a grande maioria do seu software usando o gerenciador de pacotes preferido da sua distribuição. Isso é tão conveniente que você provavelmente sentirá falta quando voltar ao Windows! Em certo sentido, os vários "mercados" e "lojas" estão indo nessa direção também para sistemas operacionais comerciais.

Dito isso, lembro que, quando comecei a aprender sobre Linux, fiquei intrigado com a maneira como o software é normalmente instalado. Enquanto no Windows todos os arquivos estão em um único diretório c:\Programs, a "maneira unix" tradicional é espalhá-los em "locais padrão" (os detalhes não são tão padronizados, [dê uma olhada no LSB para obter mais informações] [1] ), como /usr/local/binpara executáveis, /usr/local/docdocumentação e assim por diante.

Em certo sentido, o Windows "não sabe" onde estão seus executáveis. Ele sabe que eles estão "em c:\Program Filesalgum lugar abaixo ", mas não muito mais. A varredura de todos esses diretórios para encontrá-los é ou costumava ser proibitivamente cara. Portanto, um link para o executável seria explicitamente colocado em um local conhecido (o menu Iniciar), e é isso que você usaria para iniciá-lo.

No Unix / Linux, seu shell e a maioria dos outros programas pesquisam automaticamente executáveis ​​ou outros recursos em um conjunto conhecido de locais. É por isso que, apenas copiando seus arquivos nos diretórios apropriados, você os "verá" automaticamente, sem ter que "registrá-los" em nenhum lugar para que os usuários saibam sobre eles.

Ambos os mecanismos têm seus prós e contras, mas você verá que a abordagem Unix é geralmente mais flexível.

Lembre-se de que existem muitas exceções e detalhes que tornam a imagem não tão clara quanto eu a descrevi, mas acho que esse tipo de introdução pode ser útil para iniciantes, pelo menos, entender a lógica básica por trás dela.

UncleZeiv
fonte
obrigado @unclezeif. Esse problema com "arquivos espalhados por todo o lugar" está realmente me incomodando porque eu não o entendo. Você disse que a abordagem Unix é tipicamente mais flexível. Você pode elaborar por favor?
AlexStack 15/05
Por exemplo, a documentação está tudo em um só lugar, os ícones estão todos em um só lugar, etc. o que, em alguns casos, é realmente bom! Por mais flexível, quero dizer que, sendo todo o caminho, você pode fazer coisas como: gerar um novo shell no qual as variáveis ​​de ambiente são alteradas, para que você só veja os executáveis ​​em um determinado diretório, limitando (ou expandindo) sua escolha. É tudo muito "simples", pois você usa apenas arquivos e variáveis ​​de ambiente para obter um grande grau de personalização.
UncleZeiv
Outro exemplo é: em princípio, você pode instalar um programa em seu diretório pessoal, por exemplo, / home / foo / bin e apenas adicionar / home / foo / bin aos seus ambientes de caminho, sem tocar no sistema compartilhado.
UncleZeiv
3

Eu acho que o melhor conselho é apenas neste post do fórum . Aqui estão suas opções (2 e 3 são mais ou menos iguais em termos de efeito):

  1. Use um gerenciador de pacotes e um repositório. Isso significa que você recebe atualizações, obtém lançamentos oficiais, lançamentos assinados, etc. etc. etc.
  2. Se você não puder ou não usar um pacote de um repositório, crie um pacote para o software e instale-o usando o gerenciador de pacotes. Instruções detalhadas para fazer isso em sistemas baseados no Debian estão no post acima. Parece assustador no começo, mas é realmente muito simples, e especialmente no caso do Debian, existem muitos scripts por aí para fazer todo o trabalho duro por você.
  3. Se você não conseguir que esse método funcione, use checkinstallcomo outros recomendaram. É uma substituição muito simples para fazer a instalação:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Isso deve compilar o software normalmente e, em seguida, executar make installem um ambiente confinado que rastreia o que faz e cria um pacote que faria exatamente essas coisas. Em seguida, instala esse pacote com o seu gerenciador de pacotes. Remover então é como remover qualquer outro pacote, assim como em (2).

  4. Se você não pode ou não usa um gerenciador de pacotes, então use make install, eu acho. E espero que o mantenedor do software mantenha uma rotina de desinstalação.
esme
fonte