安定したパッケージの構築とインストール

安定したパッケージの構築とインストール

ノート:この質問をより具体的に説明するために、パッケージのインストールを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のパッケージを構築できることを示唆しています。

  1. source.listにsidのdeb-src行を追加します。
  2. apt-get update
  3. apt-get build-dep PACKAGE_NAME
  4. 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安定したシステムにインストールするには、次の手順を実行します。

  1. バックポート済みbinutilsDEB_BUILD_OPTIONS=nocross,nomult,nogoldクロスツールチェーンのビルドを防ぎ、goldJessieでビルドできないg++
  2. libllvm3.8Jessieのバックポートのインストール。
  3. インストールするlibstd-rust-devlibstd-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を使用する方が簡単です。

関連情報