J'ai installé Python 2.7.9 sur Ubuntu 14.04 en compilant sa source , par .configre
, make
et make altinstall
. make altinstall
est parce que je ne veux pas écraser la valeur par défaut Python 2.7.6. Mon auto-installé 2.7.9 est dans /usr/local/bin/python2.7
et de nombreux autres fichiers dans d'autres répertoires sous /usr/local
. De README dans le package d'installation source:
Sur les systèmes Unix et Mac si vous avez l'intention d'installer plusieurs versions de Python en utilisant le même préfixe d'installation (argument --prefix du script de configuration), vous devez vous assurer que votre principal python n'est pas écrasé par l'installation d'une version différente.
Tous les fichiers et répertoires installés à l'aide de "make altinstall" contiennent la version principale et la version mineure et peuvent ainsi vivre côte à côte. "make install" crée également $ {prefix}/bin/python qui fait référence à $ {prefix} /bin/pythonX.Y.
Si vous avez l'intention d'installer plusieurs versions en utilisant le même préfixe, vous devez décider quelle version (le cas échéant) est votre version "principale". Installez cette version en utilisant "make install". Installez toutes les autres versions en utilisant "make altinstall".
Par exemple, si vous souhaitez installer Python 2.5, 2.6 et 3.0 avec 2.6 étant la version principale, vous exécuterez "make install" dans votre répertoire de compilation 2.6 et "make altinstall" dans les autres .
Maintenant, je veux désinstaller ma version 2.7.9 auto-installée.
Heureusement, j'ai toujours le code source, mais malheureusement, la Makefile n'a pas de section de désinstallation
$ Sudo make uninstall
make: *** No rule to make target `uninstall'. Stop.
Ensuite, j'ai essayé une autre façon: d'abord créer un deb à partir de la source et de la compilation, installer le deb (en remplaçant, espérons-le, les fichiers installés de make altinstall
), puis désinstallez le deb.
Mais quand je crée le fichier deb par checkinstall
, je ne sais pas si et comment je dois faire différemment pour make altinstall
de pour make install
. Ce que j'ai essayé c'est:
$ checkinstall altinstall
...
Installing with altinstall...
========================= Installation results ===========================
/var/tmp/tmp.4ZzIiwqBNL/installscript.sh: 4: /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: altinstall: not found
...
Je me demande comment je peux créer un deb pour que son installation reproduise le processus d'installation de make altinstall
?
Ou quelle est votre façon de désinstaller mon python 2.7.9?
Remarque: le paquet source dans le premier lien a également setup.py
, install-sh
outre README
.
Les commandes suivantes supprimeront votre make altinstall
- ed python:
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
Vous devrez peut-être aussi faire
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
Bien que make altinstall
m'a bien servi si le "système python" a un numéro major.minor différent de celui que vous installez, cela ne fonctionne pas si bien que seul le micro numéro (la troisième position) diffère. Ce nombre est exclu du binaire installé et vous vous retrouvez avec deux versions pythonX.Y. Cela a toujours été un problème, mais une fois que les distributions ont commencé à être livrées avec des utilitaires système basés sur 2.7.X, ce problème a été plus grave car 2.7 est censé être le dernier de la série Python2.
IMO la meilleure approche pour résoudre ce problème est de l'empêcher d'en devenir un: configurez python pour l'installer dans un répertoire qui n'est utilisé par aucun autre python. Sur mon système ils vont sous /opt/python/X.Y.Z
.
Pour utiliser l'un des Pythons qui y sont installés, vous utilisez [virualenv][1]
pour créer un nouvel environnement:
virtualenv --python=/opt/python/2.7.9/bin/python2.7 venv
source venv/bin/activate
ou utiliser [virtualenvwrapper][2]
. J'ai quelques alias pour les dernières versions de la série avec laquelle je travaille.
Si vous utilisez tox
pour effectuer des tests sur plusieurs versions (vous devriez) l'alias suivant l'aidera à trouver les différentes versions:
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'
(ce sont actuellement les dernières versions, j'utilise une configuration légèrement différente en conservant les liens de /opt/python/2.7
au plus tard /opt/python/2.7.9
, ainsi que pour les autres numéros mineurs, dans le cadre du processus de téléchargement, de création et d'installation d'une nouvelle python)
Ces installations ne sont jamais utilisées directement. Ils sont toujours utilisés comme base pour les environnements virtualenv
uniquement, donc je m'en fiche qu'ils ne soient pas dans mon PATH normal.
En partant de la liste rm
de @ Anthon et en appliquant les conseils de @ bin-s pour rechercher des fichiers plus récents, j'ai trouvé ce script bash pour effacer complètement mon Python-3.6.6 (qui avait été installé à partir de sources avec 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.
Utilisez-le avec précaution (par exemple, ajoutez -I
option dans rm cmd pour vérifier chaque kill).
Habituellement, tous les fichiers sont installés en presque une minute. Vous pouvez utiliser "find" pour vérifier tous les fichiers installés presque en même temps, puis les "rm" manuellement. Je le souhaite utile.
find /usr/local/ -type f -newer <some latest old file>
J'ai fini par faire ce qui suit:
$HOME/opt/Python-3.8.0
: tar tJf Python-3.8.0.tar.xz && cd Python-3.8.0 && ./configure --prefix $HOME/opt/Python-3.8.0 && make && make install
cd $HOME/opt/Python-3.8.0 && find * -type f | Perl -pe's(^)(/usr/)' | Sudo xargs rm
rm -rf ~/opt/Python-3.8.0