web-dev-qa-db-ja.com

Debianテストからの単一のパッケージまたは安定版の不安定版からどのようにインストールしますか?

「すべてとキッチンのシンク」をJessieバージョンにアップグレードせずに、Debian JessieからWheezyシステムに単一のパッケージ(およびその依存関係、ただしWheezyでは満足できない範囲に限る)をインストールしたい。具体的には、私は kpcli をインストールしたいと思います。これは、Jessieでパッケージ化されていますが、Wh​​eezyではパッケージ化されていません。

私が見つけたものはすべて、Jessieリポジトリをソースリストに追加し、ピン留めを設定してすべてをwheezyに保ち、jessieから1つのパッケージのみを取得する必要があることを示しています。しかし、それは私には適さない。 /etc/apt.d/sources.list.d/jessie.listを次の内容で作成した場合:

deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main

次に/etc/apt/preferences.d/jessieを作成します:

Package: *
Pin: release a=wheezy
Pin-Priority: 1001

Package: kpcli
Pin: release a=jessie
Pin-Priority: 450

そしてapt-get -u updateに続いてapt-get -u install kpcli/jessieを実行すると、apt-getがkpcliとmaybeJessieからのほんの一握りの他のパッケージをプルし、インストールしたシステムの残りの部分はそのままです。 (私のシステムはWheezyの完全に最新のインストールです。)または、ピンの優先度が低すぎると、何も実行されないと予想されます。むしろ、私のシステムでは、apt-getは数百のパッケージをアップグレードしたいと考えています。

私のWheezyシステムの残りの部分をそのままにして、Jessieバージョンのこの1つのパッケージのみをインストールするには、正確に何が必要ですか?

この特定のケースでは、ソフトウェアは実際にはPerlで記述されているため、バイナリやそれに関連するものへのコンパイルはありません。ただし、いくつかのPerlモジュールの依存関係があります。したがって、1つの可能な代替手段は、(1)dpkg -iのようなインストールされる単一のローカル.debアーカイブの指定のみを許可し、(2)ハンドルを使用して.deb(手動でダウンロード)をインストールすることです。依存関係はインテリジェントな方法であり、プレーンなdpkg -iにはありません。ただし、私が何度か行ったすべての検索で、これを行うための簡単なガイドが思い付かなかった場合、一般的なソリューション(バイナリ、コンパイルされたパッケージでも機能する)は素晴らしいでしょう。

41
a CVn

各エントリ(安定、テスト、不安定)に対して、ピン優先度500があります。ピン> 1000は使用しないでください。何かをダウングレードする場合にのみ1001を使用します。私は/etc/apt/sources.listおよび次の/etc/apt/preferencesファイル:

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130

値が500は、unstableのデフォルトです。それでは、iceweaselを確認してみましょう。

# apt-cache policy iceweasel
iceweasel:
  Installed: (none)
  Candidate: 17.0.10esr-1~deb7u1
  Version table:
     26.0-1 0
        130 http://ftp.pl.debian.org/debian/ experimental/main AMD64 Packages
     24.2.0esr-1 0
        500 http://ftp.pl.debian.org/debian/ sid/main AMD64 Packages
     17.0.10esr-1~deb7u1 0
        900 http://ftp.pl.debian.org/debian/ testing/main AMD64 Packages

したがって、iceweaselをインストールしようとすると、優先度が最も高いため、testingブランチからダウンロードされます。

優先順位を次のように変更してみてください。

Package: *
Pin: release a=wheezy
Pin-Priority: 900

Package: kpcli
Pin: release a=jessie
Pin-Priority: 910
15

実際には、固定/優先度をまったく使用せずにそれを行う方法があります。代わりに、パッケージをインストールするデフォルトのリリースを指定できます。ターゲットのリリースパラメーターを使用して特に指定されていない限り、そのリリースが使用されます。これは、選択したパッケージのみをインストールする場合などと同じように機能します。バックポート。

StretchからJessieにパッケージをインストールする場合にこれを示します。これらは現在の安定版/テストであるため、最初に要求されたようにWheezyにJessieパッケージをインストールする場合と同じように機能します。

まず、ストレッチをリポジトリとして追加します。 /etc/apt/sources.list.d/stretch.list

deb http://ftp.debian.org/debian stretch main

次に、デフォルトのリリースを設定するには、/etc/apt/apt.conf.d/default-releaseのようなファイルを作成します。

APT::Default-Release "jessie";

(Wheezyでは、apt.conf.dは存在しなかったと思うので、そのスニペットを/etc/apt/apt.confに入れる必要があります)。

次に、テストからのパッケージのインストールは、優先順位を固定することを心配する必要なく、aptitude -t stretch install kpcliと同じくらい簡単です。

注: @amcがコメントで指摘したように、aptではなくaptitudeを使用する場合、"stable"Default-Releaseとして使用する必要があります"jessie"の代わりに。ありがとうございました! (もちろん、その設定でaptitudeを使用することもできます。)

25
Florian Jacob

Pin: release a=wheezyPin: release n=wheezy、 多分。

man page から:

次のレコードは、コードネームが「jessie」であるディストリビューションに属するすべてのパッケージバージョンに高い優先度を割り当てます。

           Package: *
           Pin: release n=jessie
           Pin-Priority: 900

正解です。

6
user65646