Como desinstalar o git instalado a partir da fonte? [fechadas]

21

Eu instalei o git usando este artigo . Agora eu quero desinstalar o git. Como fazer isso?

Mikhail
fonte
1
Você ainda tem o código fonte que baixou e utilizou make install?
Hennes
Sim, eu tenho o código fonte
Mikhail
Qual é o resultado de 'make uninstall'? Nem todos os Makefiles têm essa opção, mas muitos têm.
Hennes
1
make: *** Nenhuma regra para fazer o alvo `desinstalar '. Pare.
Mikhail
1
por que -1? explique
Mikhail

Respostas:

15

Encontrei a solução aqui .

ATUALIZADO 2.11.2012

Se você era esperto o suficiente e usou algum prefixo não padrão ao configurar o Git para que ele fosse instalado sob uma hierarquia específica, como em / opt / git, basta excluir essa hierarquia recursivamente.

Se não, então você poderia ir assim:

1) Busque o tarball de origem exatamente da versão que você construiu e instalou, descompacte.

2) Configure exatamente como você fez com a instalação original em relação aos locais de instalação (prefixo, exec-prefix etc); supostamente você não deveria substituir nada.

3) Crie um diretório temporário para executar a instalação, como este: $ mkdir / var / tmp / git

4) Instale o Git passando uma variável DESTDIR apropriada para fazer: $ make DESTDIR = / var / tmp / git install A hierarquia do Git será criada nesse diretório temporário.

5) Use a hierarquia criada para decidir quais arquivos serão excluídos na hierarquia real ("/").

O último passo é onde "a mágica" acontece, para dar mais explicações. Por exemplo, você pode executar

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(como root) exclui os arquivos instalados pela primeira instalação incorreta no sistema de arquivos raiz. A encantação acima usa a hierarquia / var / tmp / git para imprimir a lista de arquivos encontrados, mas substitui o prefixo "/ var / tmp / git" neles por "/", para que o "/ var / tmp / git / usr / bin / git "na saída será listado como" / usr / bin / git ". Essa lista é então canalizada para a xargsqual é executada rm nos nomes dos arquivos que lê em pacotes de dez (apenas para reduzir o número de chamadas de rmuma ordem de magnitude).

Depois de lidar com arquivos, execute

$ find /var/tmp/git -type d -printf '/%P\n'

para inspecionar a lista de diretórios instalados. Isso requer abordagem manual, basta olhar para a lista gerada e pensar qual deles você poderia rmdirusar com segurança do seu sistema (esses serão os diretórios como "/ usr / libexec / git" ou algo parecido com isto; você provavelmente não deseja excluir "/ usr / share / man / mann" ou algo que esteja vazio).

PS No futuro, nunca instale nada em um sistema executando make install! Atualmente, a maioria dos makefiles não suporta o destino de "desinstalação", pois eles são usados ​​para instalar em um local de rascunho privado para teste ou criar um pacote (.rpm, .deb etc.) e, em seguida, o gerenciador de pacotes cuida da limpeza. Se você precisar instalar algo, tente encontrar um pacote oficial ou faça o backport de outro pacote oficial de uma versão mais recente do seu sistema operacional, se disponível. Como último recurso, tente usar a checkinstallferramenta que tenta criar um pacote binário fora da sua make installexecução. Isso é péssimo, mas ainda melhor do que nu make install.

Mikhail
fonte
Por favor, expanda alguns dos detalhes encontrados lá. A podridão de bits acontece e, quando isso ocorre, essa resposta se torna inútil.
sysadmin1138
ok, atualizei minha resposta
Mikhail
Respeito. funciona
dotslash 02/02
Resumo: ./configure. sudo make && sudo make DESTDIR=/var/tmp/git install. sudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Vahid 10/01
3

Eu apenas fui através de 2691 linhas de Makefile. Na verdade, não faça desinstalação. Drat.

Nesse caso, uma solução alternativa pode ser usar a make rpmopção Instale o rpm (substituindo todos os arquivos instalados, que devem ser idênticos aos arquivos já instalados). Em seguida, desinstale o rpm.

Em todos os casos futuros, construa um pacote (RPM, yum, qualquer que seja). Isso facilita muito a manutenção.

Hennes
fonte
1
Exceto normalmente make installcoloca as coisas no prefixo, /usr/localenquanto o rpm / deb / your-package-here é executado ./configurecom parâmetros diferentes para que os arquivos que eles instalam terminem com prefixo /usr.
Ptman #
Sou novato no CentOS. Que comando devo executar? Você pode explicar mais, por favor
Mikhail
Eu executei o make rpmcomando. O que devo fazer na próxima?
11555 Mikhail
Comece com man rpmou 'rpm --help. Provavelmente lhe dirá para usar rpm -i packagename.rpm. No entanto, pode ser melhor pedir ao administrador do sistema na umbrella-web para ajudá-lo. Há muito o que podemos fazer à distância.
Hennes