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


41

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

私が見つけたすべてのことは、ソースリストにJessieリポジトリを追加し、すべてをwheezyに保ち、jessieから単一のパッケージのみを取り出すように固定を設定する必要があることを示しています。しかし、それは私には適していない。次の内容で/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と、おそらく Jessieの他の少数のパッケージを取り込み、インストールされたシステムの残りの部分はそのままにされることを期待しています。(私のシステムはWheezyの完全に最新のインストールです。)あるいは、ピンの優先度が低すぎると、何もしないと予想されます。むしろ、私のシステムでは、apt-getは数百のパッケージをアップグレードしたいと考えています。

私のWheezyシステムの残りの部分に手を加えずに、Jessieバージョンのこの1つのパッケージだけをインストールするために正確に必要なものは何ですか?

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


4
これを処理する通常の方法は、バックポートすることです-Wheezy上のDebianソースからパッケージを再構築します。使用しているパッケージはperl(または少なくともそれに依存している)のように見えるため、おそらくバックポートするのは難しくありません。詳細が必要な場合は、そう言ってください。本当に必要な場合は、おそらくチュートリアルを提供できます。
ファヒムミタ14

回答:


15

各エントリ(安定、テスト、不安定)には、ピン優先度500があります。ピン> 1000は使用しないでください。何かをダウングレードする場合にのみ1001を使用します。testing + sid + experimentalエントリが指定され/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は不安定版のデフォルトです。それでは、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をインストールしようとすると、優先度が最も高いためテストブランチからダウンロードされます。

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

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

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

sudo apt-get -u install kpcli/jessie316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.提案された優先順位を引き続き提供します。apt-cache policy perlアップグレードする場合(アップグレードするパッケージの1つ)、優先度500の候補として5.18.1-5が表示され、優先度500でも5.14.2-21 + deb7u1がインストールされました。何らかの理由で、 aptのは...優先順位を拾っていない
からCVn

OK、私は何かを得た。トリックはPackage: kpcli*(ではなくPackage: kpcli)を使用Package: * Pin: release o=Debian Pin-Priority: -10し、最後にa を使用するように見えました。それからもちろん、Jessieでのみ利用可能なPerlのバージョンにつながるハードな依存関係があり、それはより新しいlibc6を必要とします!正直に言って、私はその道を行くつもりはありませんが、これは少なくとも私が望んでいた結果を得ました。ありがとうございました!
CVn 14年

25

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

StretchからJessieにパッケージをインストールする場合、これが現在の安定版/テストであるため、これを示しますが、Wh​​eezyに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 aptaptitude、の代わりにを使用する場合"stable"、のDefault-Release代わりにas を使用する必要があることをコメントで指摘しました"jessie"。ありがとうございました!(もちろん、aptitudeその設定でも使用できます。)


…これは非常に洗練された方法のように見えます。なぜこれが正式に受け入れられないのですか?
JamesTheAwesomeDude

1
私が得るThe value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
スティーブンペニー

1
デフォルトのリリースおよびaptを使用する場合は、「jessie」/「stretch」の代わりに「stable」/「testing」/などを使用する必要があります
-amc

6

Pin: release a=wheezyあるべきPin: release n=wheezyかもしれません。

manページから:

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

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

それは正しいです!


3
これは、jessyのすべてのパッケージをインストールしませんか?
rubo77 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.