ノート:この質問をより具体的に説明するために、パッケージのインストールをrustc
例にしてみましょう。それにもかかわらず、この質問は主に一般的なソフトウェアパッケージに適用されます。
Debian Stableシステムを使用しています。rustc
不安定なディストリビューションからこのパッケージをインストールしたいです(現在の安定ディストリビューションには存在しません)。私の/etc/apt/sources.list
ファイルに不安定なソースを追加しました。
# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free
を実行してapt update
からyesを実行しますapt install rustc
。予想通り、APT は依存関係の問題によりインストールを拒否します。
The following packages have unmet dependencies:
rustc : Depends: libstd-rust-dev (= 1.12.0+dfsg1-1) but it is not going to be installed
Depends: binutils (>= 2.26) but 2.25-5 is to be installed
Recommends: rust-gdb but it is not going to be installed or
rust-lldb but it is not going to be installed
リポジトリにパッケージをインストールするために私が考えることができる唯一の方法は、ソースからパッケージをビルドすることです。私は読んだこのページDebian Wikiは、次のプロセスを使用してUnstableのパッケージを構築できることを示唆しています。
- source.listにsidのdeb-src行を追加します。
apt-get update
apt-get build-dep PACKAGE_NAME
apt-get -b source PACKAGE_NAME
ただし、ステップ3は、満たされていない依存関係のため失敗します。
だから私の質問は、不安定なシステムからパッケージをビルドして安定したシステムにインストールすることが可能かどうかです。では、どうすればよいですか?すべての依存関係をビルド/ダウンロードし、それを私が望むパッケージの最終バイナリにマージする方法があるべきだと思います。その後、パッケージをインストールします。
答え1
まず、あなたのように安定したシステムに不安定なシステムを追加することです。ㅏ本物悪い考え:デプロイツールは不安定なパッケージを有効なアップグレードターゲットとして扱い、注意しても一般的に広く使用されているライブラリをアップグレードする必要があり、ほとんどのパッケージはパッケージ内の不安定なソフトウェアを追跡します。短期注文。 (必要に応じて固定機能を使用してください。)
お客様の質問に関しては、一般的に以下を実行して、安定版から不安定なソースパッケージを構築できます。あなたがリンクしたプログラム。指摘されているように、依存関係をバックポートまたは信頼性の高いビルドにするためにソースパッケージを調整することが含まれる可能性があります。このapt-get build-dep
手順が失敗した場合、その理由は、不安定なソースパッケージの一部のビルド依存関係を安定版で満たすことができないためです。必要なすべての項目がバックポートされ、結果のパッケージがインストールされるまで、このプロセスを繰り返す必要があります。人気のあるパッケージの場合は、バグを報告して公式ウェブサイトにリクエストすることをお勧めします。バックポート。
これが失敗した場合は、apt-get build-dep
ビルド依存関係を手動でインストールする必要があります。dpkg-buildpackage
何が欠けているのか教えてくれます。これはビルド依存関係をバックポートするのに役立ちます。バックポートされたビルドの依存関係を追加すると、報告された欠落パッケージのリストがdpkg-buildpackage
減り、文句が止まると完了しました。また、ビルドの依存関係に対するすべての変更を考慮しますdebian/control
(そうではありませんapt-get build-dep
)。
~のためrustc
ものはたくさんもっと複雑です。rustc
直接ビルドする必要があるため、「ブートストラップ」が必要です。これは数ヶ月前に不安定なFTP専門家の助けを借りて行われました。信頼性の高いシステムでこれをクリーンな方法で複製することは容易ではありません。
実際にrustc
安定したシステムにインストールするには、次の手順を実行します。
- バックポート済み
binutils
(DEB_BUILD_OPTIONS=nocross,nomult,nogold
クロスツールチェーンのビルドを防ぎ、gold
Jessieでビルドできないg++
) libllvm3.8
Jessieのバックポートのインストール。- インストールする
libstd-rust-dev
、libstd-rust-1.12
そしてrustc
不安定性から。
答え2
あなたのコメントを読んでいますが、本当にRustcが欲しい場合は、テスト/ストレッチバージョンをインストールしてみてください。https://packages.debian.org/stretch/rustc
テスト/ストレッチ(Test/Stretch)は不安定なものほど新しいものではありませんが、確かに安定したものより新しいものです。
apt-getソースを使用してソースコードをインポートし、特定のバージョンを必要としないように./debian/controlファイルを変更できますが、ビルドされるかどうかはわかりません。また、このwikiにリストされている他の方法の代わりにsudo dpkg-buildpackage -B -us -ucを使用する方が簡単です。