web-dev-qa-db-ja.com

python2.7をインストールせずにpython3にlibboost-python-devをインストールする

Ubuntu Xenialにpython3のブーストバインディングをインストールしようとしていますが、python2.7依存関係ツリー全体を取り込みます。私のシステム(Dockerイメージ)にpython2.7は必要ないか、必要ありません。 python3バインディングのみをインストールする方法はありますか?

6
Mitar

Boostを自分でコンパイルおよびインストールすることを解決しました(Python 3.6を自分でインストール/コンパイルしました)。私は今、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

次の3つのオプションがあります。

1. Boost.Pythonを自分でビルドする

これは私が推奨するオプションです。クリーンで、システムを台無しにするリスクがなく、取得するものを完全に制御できます。さらに1

Boost.Pythonは個別にコンパイルされた(ヘッダーのみではなく)ライブラリです

それを構築するだけです。アーカイブをダウンロードし、 スタートガイド の指示に従ってください。 (これが OPがした です。)


2. dpkgを使用して、不要な依存関係のインストールを回避します

Boost.Pythonを自分でビルドしたくない場合は、aptdpkg(およびその依存関係チェック)をバイパスできます。

foobarに依存するbazという名前のパッケージをインストールしたいとしますが、実際にはbazは必要ありません。

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

aptは未解決の依存関係について文句を言うことに注意してください(ただし、それが仕事です)。問題は完全には解決されません。カーペットの下でそれをスイープするだけです。

このオプションは前のオプションよりも高速ですが、お勧めしません。


3. equivsを使用してaptをだます

これは私にとって新しいことです。どうやら、 依存関係を満たすためにダミーパッケージを作成する 。この方法では、不要な/不要なパッケージをインストールする必要がなく、aptが文句を言うことはありません。

前にも言ったように、equivsを使用したことはありませんが、詳細は here で確認できます。

1
francescop21

私の研究のため、それは不可能です

libboost-python-devパッケージにはlibboost-python1.67-dev依存関係があります。

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

libboost-python1.67-devにはpython 2を使用するpython-dev依存関係があります

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

あなたはこれを行うことができないので、Debianでこれを行うことはできないと思います。

Arch baseおよびrpm baseディストリビューションを確認することをお勧めします。

0
mahradbt