「すべてとキッチンのシンク」をJessieバージョンにアップグレードせずに、Debian JessieからWheezyシステムに単一のパッケージ(およびその依存関係、ただしWheezyでは満足できない範囲に限る)をインストールしたい。具体的には、私は kpcli をインストールしたいと思います。これは、Jessieでパッケージ化されていますが、Wheezyではパッケージ化されていません。
私が見つけたものはすべて、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
にはありません。ただし、私が何度か行ったすべての検索で、これを行うための簡単なガイドが思い付かなかった場合、一般的なソリューション(バイナリ、コンパイルされたパッケージでも機能する)は素晴らしいでしょう。
各エントリ(安定、テスト、不安定)に対して、ピン優先度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
実際には、固定/優先度をまったく使用せずにそれを行う方法があります。代わりに、パッケージをインストールするデフォルトのリリースを指定できます。ターゲットのリリースパラメーターを使用して特に指定されていない限り、そのリリースが使用されます。これは、選択したパッケージのみをインストールする場合などと同じように機能します。バックポート。
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
を使用することもできます。)
Pin: release a=wheezy
はPin: release n=wheezy
、 多分。
man page から:
次のレコードは、コードネームが「jessie」であるディストリビューションに属するすべてのパッケージバージョンに高い優先度を割り当てます。
Package: * Pin: release n=jessie Pin-Priority: 900
正解です。