uninstall Python instalado pela compilação de código-fonte?

12

Eu instalei o Python 2.7.9 no Ubuntu 14.04 compilando sua fonte , por .configre , make e make altinstall . make altinstall é porque eu não quero sobrescrever o padrão Python 2.7.6. Meu self instalado 2.7.9 está em /usr/local/bin/python2.7 e muitos outros arquivos em outros diretórios em /usr/local . De README no pacote de instalação de origem:

On Unix and Mac systems if you intend to install multiple versions of Python using the same installation prefix (--prefix argument to the configure script) you must take care that your primary python executable is not overwritten by the installation of a different version.

All files and directories installed using "make altinstall" contain the major and minor version and can thus live side-by-side. "make install" also creates ${prefix}/bin/python which refers to ${prefix}/bin/pythonX.Y.

If you intend to install multiple versions using the same prefix you must decide which version (if any) is your "primary" version. Install that version using "make install". Install all other versions using "make altinstall".

For example, if you want to install Python 2.5, 2.6 and 3.0 with 2.6 being the primary version, you would execute "make install" in your 2.6 build directory and "make altinstall" in the others.

Agora eu quero desinstalar meu self instalado 2.7.9.

  1. Felizmente ainda tenho o código fonte, mas infelizmente, o Makefile não possui seção de desinstalação

    $ sudo make uninstall
    make: *** No rule to make target 'uninstall'.  Stop.
    
  2. Então eu tentei de outra forma: primeiro crie um deb a partir da fonte e compilação, instale o deb (esperançosamente sobrescrevendo o arquivo instalado arquivos de make altinstall ) e, em seguida, desinstale o deb.

    Mas quando eu crio o arquivo deb por checkinstall , eu não tenho certeza se e como devo fazer diferente para make altinstall de make install . O que eu tentei é:

    $ checkinstall altinstall
    
    ...
    
    Installing with altinstall...
    
    ========================= Installation results ===========================
    /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: 4: /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: altinstall: not found
    
    ...
    

    Eu me pergunto como eu posso criar um deb para instalar o deb duplicar o processo de instalação de make altinstall ?

  3. Ou qual é a sua maneira de desinstalar meu python 2.7.9?

Nota: o pacote de origem no primeiro link também tem setup.py , install-sh além de README .

    
por Tim 17.03.2015 / 18:52

3 respostas

15

Os comandos a seguir removerão seu python make altinstall -ed:

rm -f /usr/local/bin/python2.7
rm -f /usr/local/bin/pip2.7
rm -f /usr/local/bin/pydoc
rm -rf /usr/local/bin/include/python2.7
rm -f /usr/local/lib/libpython2.7.a
rm -rf /usr/local/lib/python2.7

Você também pode precisar fazer

rm -f /usr/local/share/man/python2.7.1
rm -rf /usr/local/lib/pkgconfig
rm -f /usr/local/bin/idle
rm -f /usr/local/bin/easy_install-2.7

Embora make altinstall tenha me servido bem se o "sistema python" tiver um número maior.minor diferente daquele que você instala, ele não funciona tão bem se apenas o número micro (a terceira posição) for diferente. Esse número é excluído do binário instalado e você acaba com duas versões pythonX.Y. Isso sempre foi um problema, mas uma vez que as distribuições começaram a ser distribuídas com utilitários de sistema baseados em 2.7.X, este problema tem sido mais severo, já que o 2.7 é supostamente o último da série Python2.

IMO a melhor abordagem para resolver este problema é evitar que ele se torne um: configure python para instalar em um diretório não usado por qualquer outro python. No meu sistema, eles vão abaixo de /opt/python/X.Y.Z .

Para usar qualquer um dos Python instalados, use [virualenv][1] para criar um novo ambiente:

virtualenv --python=/opt/python/2.7.9/bin/python2.7 venv
source venv/bin/activate

ou use [virtualenvwrapper][2] . Eu tenho alguns aliases para as versões mais recentes da série com a qual trabalho.

Se você estiver usando tox para testar em várias versões (você deve), o seguinte alias o ajudará a encontrar a versão diferente:

alias tox='PATH=/opt/python/2.7.9/bin:/opt/python/2.6.9/bin:/opt/python/3.4.3/bin:/opt/python/3.3.6/bin:/opt/python/3.5-dev/bin:$PATH tox'

(atualmente são as versões mais recentes, eu uso uma configuração um pouco diferente, mantendo links de /opt/python/2.7 para o mais recente /opt/python/2.7.9 e para os outros números menores também, dentro do processo de download, construção e instalação de nova versão do python)

Essas instalações nunca são usadas diretamente. Eles sempre são usados como base para virtualenv ambientes, portanto, não me importo que eles não estejam no meu PATH normal.

    
por 18.03.2015 / 06:07
1

Normalmente, todos os arquivos são instalados em quase um minuto. Você pode usar "find" para verificar todos os arquivos instalados quase ao mesmo tempo, depois "rm" manualmente. Desejo ajuda.

find /usr/local/ -type f -newer <some latest old file>
    
por 23.03.2018 / 23:39
1

A partir da lista @rm do @ Anthon, e aplicando o conselho @ bin-s para procurar por arquivos mais novos, eu criei este bash-script para apagar completamente o meu Python-3.6.6 (que tinha sido instalado do fontes com make altinstall ):

prefix='/usr/local/'
pyver='3.6'

rm -rf \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/pydoc \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}lib/pkgconfig/python-${pyver}.pc \
    ${prefix}lib/libpython${pyver}m.a \
    ${prefix}bin/python${pyver}m \
    ${prefix}bin/2to3-${pyver} \
    ${prefix}bin/python${pyver}m-config \
    ${prefix}bin/idle${pyver} \
    ${prefix}bin/pydoc${pyver} \
    ${prefix}bin/pyvenv-${pyver} \
    ${prefix}share/man/man1/python${pyver}.1 \
    ${prefix}include/python${pyver}m
    ${prefix}bin/pydoc ## WARN: skip if other pythons in local exist.

Use-o com cuidado (por exemplo, adicione a opção -I em rm cmd para verificar cada morte).

    
por 07.07.2018 / 14:53