En supposant que vous avez toutes les dépendances installées (sur Ubuntu qui serait tas de choses comme sudo apt-get install libdb4.8-dev
et divers autres paquets -dev, alors voilà comment je construis . Python
tar zxvf Python-2.7.1.tgz
cd Python-2.7.1
# 64 bit self-contained build in /opt
export TARG=/opt/python272
export CC="gcc -m64"
export LDFLAGS='-Wl,-rpath,\$${ORIGIN}/../lib -Wl,-rpath-link,\$${ORIGIN}/../lib -Wl,--enable-new-dtags'
./configure --prefix=$TARG --with-dbmliborder=bdb:gdbm --enable-shared --enable-ipv6
make
make install
Les seuls modules qui ne construisent pas pendant le make sont:
_tkinter - I don't do GUI apps and would use wxWindows if I did
bsddb185 - horribly obsolete version of bdb
dl - deprecated in 2.6
imageop - deprecated in 2.6
sunaudiodev - obsolete interface to some SparcStation device I think
Suivant Je collectionne tous les fichiers .so qui ne sont pas déjà dans les répertoires installer Python et les copier:
# collect binary libraries ##REDO THIS IF YOU ADD ANY ADDITIONAL MODULES##
cd /opt/python272
find . -name '*.so' | sed 's/^/ldd -v /' >elffiles
echo "ldd -v bin/python" >>elffiles
chmod +x elffiles
./elffiles | sed 's/.*=> //;s/ .*//;/:$/d;s/^ *//' | sort -u | sed 's/.*/cp -L & lib/' >lddinfo
# mkdir lib
chmod +x lddinfo
./lddinfo
Et puis ajoutez setuptools pour faire bonne mesure
#set the path
export PATH=/opt/python272/bin:$PATH
#install setuptools
./setuptools-0.6c11-py2.7.egg
À ce stade, je peux faire un tarball/opt/python272 et l'exécuter sur tout 64 distro sous Linux, même une version dépouillée qui n'a aucune des dépendances installées, ou une ancienne distribution qui a d'anciennes versions obsolètes des dépendances.
Je reçois également pip
installé mais à ce stade, il y a un écart dans mes notes en raison de certaines difficultés avec virtualenv. Fondamentalement, virtualenv ne supporte pas ce scénario. On peut supposer que je l'ai fait easy_install pip
puis:
export LD_RUN_PATH=\$${ORIGIN}/../lib
pip install cython
pip install {a whole bunch of other libraries that I expect to use}
Après que je suis fait installer des modules, je revenir en arrière et ré-exécuter les commandes pour collecter les fichiers .so et faire une nouvelle tarball. Il y avait quelques paquets où je devais tourner autour avec LDFLAGS
pour les faire installer correctement, et je n'ai pas encore fait assez de tests approfondis, mais jusqu'à présent cela fonctionne et j'utilise cette version de Python pour lancer les applications de production les machines qui n'ont pas toutes les bibliothèques de support préinstallées.
Je voudrais essayer d'aller dans Synaptic et de chercher Python et de télécharger tous les kits de développement, etc. – Scott
Je pense que ce serait mieux pour unix.se, ubuntu.se, superutilisateur ou serverfault. – Chris