web-dev-qa-db-fra.com

Installation de libboost-python-dev pour python3 sans installer python2.7

J'essaie d'installer des liaisons de renforcement pour python3 sur Ubuntu Xenial, mais il génère une arborescence de dépendances python2.7 complète. Je ne veux pas ou n'ai pas besoin de python2.7 sur mon système (image Docker). Existe-t-il un moyen d'installer uniquement des liaisons python3?

6
Mitar

J'ai résolu de compiler et d'installer boost moi-même (j'ai également installé/compilé Python 3.6 moi-même.). J'ai maintenant dans mon Dockerfile:

# We have to compile it ourselves against the custom Python and cannot use Debian package.
# Includes a symlink workaround for: https://svn.boost.org/trac10/ticket/11120
RUN cd /usr/src && \
 wget --no-verbose https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz && \
 tar xzf boost_1_65_1.tar.gz && \
 cd boost_1_65_1 && \
 ln -s /usr/local/include/python3.6m /usr/local/include/python3.6 && \
 ./bootstrap.sh --with-python=$(which python3) && \
 ./b2 install && \
 rm /usr/local/include/python3.6 && \
 ldconfig && \
 cd / && rm -rf /usr/src/*
3
Mitar

Vous avez trois options:

1. Construisez Boost.Python vous-même

C'est l'option que je recommande: c'est propre, il n'y a aucun risque de gâcher votre système et vous avez le plein contrôle sur ce que vous obtenez. en outre1

Boost.Python est une bibliothèque compilée séparément (par opposition à une en-tête uniquement)

afin que vous puissiez simplement construire cela. Téléchargez les archives et suivez les instructions sur Guide de démarrage . (C'est ce que l'OP a fait .)


2. Utilisez dpkg pour éviter l’installation de dépendances indésirables.

Si vous ne voulez pas construire Boost.Python vous-même, vous pouvez ignorer apt (et ses dépendances en guettant) avec dpkg.

Supposons que vous souhaitiez installer un package nommé foo qui dépend de bar et baz, mais vous n'avez pas réellement besoin de baz.

apt download foo bar
Sudo dpkg --ignore-depends=baz --install foo.deb bar.deb

Notez que apt continuera à se plaindre des dépendances non résolues (mais bon, c'est son travail), donc le problème n'est pas entièrement résolu: vous venez de le balayer sous le tapis.

Cette option est plus rapide que la précédente, mais je ne le recommanderais pas.


3. Utilisez equivs pour tromper apt

C'est nouveau pour moi. Apparemment, vous pouvez créer des paquets factices pour répondre aux dépendances . De cette façon, vous n'avez pas à installer de paquetages indésirables/inutiles et apt ne s'en plaindra pas.

Comme je l'ai dit, je n'ai jamais utilisé equivs auparavant, mais vous pouvez en savoir plus à ce sujet ici .

1
francescop21

en raison de mes recherches, ce n'est pas possible

Le paquet libboost-python-dev a une dépendance libboost-python1.67-dev.

https://packages.debian.org/sid/libboost-python-dev

et libboost-python1.67-dev a une dépendance python-dev qui utilise python 2

https://packages.debian.org/sid/libboost-python1.67-dev

donc vous ne pouvez pas faire cela, je pense que vous ne pouvez pas faire cela dans Debian.

Je recommande de vérifier les distributions Arch base et rpm base.

0
mahradbt