Debian安定版を実行しながらテストからいくつかのパッケージをインストールする方法は?


206

サーバーを実行していて、必要なパッケージを1つまたは2つだけインストールするために、安定版(Lenny)からテスト版(Squeeze)にアップグレードしたくないとします。

テストから特定のパッケージのみをインストールする最良の方法は何ですか?


2
これは最新の公式ドキュメントが言っていることです:アーカイブの混合ソースからのパッケージ
アレクセイ

回答:


183

多くの人は安定とテストを混ぜることを恐れているように見えますが、率直に言って、テスト自体はかなり安定しており、適切な設定とソリューションチェックにより、コアパッケージを不安定なパスに置く「安定性のドリフト」を回避できます。

「テストはかなり安定していますか?」、 あなたが尋ねる。はい。パッケージが不安定版からテスト版に移行するためには、10日間連続して未解決のバグがゼロでなければなりません。特に人気のあるパッケージでは、何かがおかしい場合は誰かが不安定版のバグレポートを提出する可能性があります。

環境を混在させたくない場合でも、安定版よりも新しいバージョンを必要とするものに遭遇した場合に備えて、そこにオプションがあると便利です。

これを設定するための推奨事項は次のとおりです。

最初に、次のファイルを作成します/etc/apt/preferences.d

stable.pref

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

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

testing.pref

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=unstable
Pin-Priority: 50

experimental.pref

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(ここで不安定な/実験的なものを恐れてはいけません。優先順位が低いので、そのようなものは自動的にインストールされません。テストブランチでも動作します。テスト中。)

次に、の一致セットを作成します/etc/apt/sources.list.d

stable.list:オリジナルからコピーします/etc/apt/sources.list。古いファイルの名前をのようなものに変更しsources.list.origます。

testing.list:と同じですがstable.listtesting

unstable.list:と同じですがstable.listunstableセキュリティリストを削除します。

experimental.list:と同じですがunstable.listexperimental

oldstablein sources.lists.dpreferences.d(優先度1を使用)を追加することもできますが、このモニカは次の安定したサイクルの前に期限切れになり、消える傾向があります。そのような場合http://archive.debian.org/debian/、Debianバージョン(etch、lennyなど)を使用して「ハードコード」できます。

パッケージのテストバージョンをインストールするには、単にを使用するaptitude install lib-foobar-package/testingか、単にaptitudeのGUIにジャンプして、パッケージの詳細内のバージョンを選択します(表示しているパッケージに入力します)。

パッケージの競合について苦情を受け取った場合は、最初に解決策を確認してください。ほとんどの場合、最初のものは「このバージョンをインストールしないでください」です。パッケージごとの受け入れ/拒否リゾルバーの選択の使用方法を学びます。たとえば、foobar-package / testingをインストールしていて、最初の解決策が「foobar-package / testingをインストールしない」である場合、その選択を拒否としてマークすると、他のソリューションは再びそのパスに進まなくなります。このような場合、おそらく他のいくつかのテストパッケージをインストールする必要があります。

毛むくじゃらになった場合(libc、カーネル、または他の巨大なコアシステムをアップグレードしようとしている場合)、それらのアップグレードパスを拒否するか、最初のアップグレードから完全に戻すことができます。許可した場合のみ、テスト/不安定にアップグレードすることを忘れないでください。

編集:いくつかの優先ピンを修正し、リストを更新しました。


4
構成apt-get updateファイルを作成した後に実行しましたか?
フロー

3
この方法を使用すると、一貫性のない動作(と思われます)が発生します。(参照「APPX /テストをインストールapt-getを」と同じを与えるものではありません「-tテストAPPXをインストールapt-getを」serverfault.com/q/646934/132528を私はそれが道についてちょうどこの方法だと推測しています- )それは私には直感的ではないにもかかわらず、優先順位が解決されますか?
eugenevd 14

7
重要:著者は、デフォルトリリース値より高い安定/セキュリティの固定設定値を選択しました...詳細については、serverfault.com / a / 653552/120130を参照してください
アレックスライアン

7
この答えは私のシステムを壊しただけです。しようとした後、sudo apt-get update更新エラーが発生しました。その後Xsession error、再起動しましたが、再起動しましたが、今はGUIがありません。これ/dev/sda1/でいっぱいです。すばらしいです。
ルチョナチョ

3
この投稿に対する否定的なコメントに留意することをお勧めします。これらの変更を元に戻すことで修正された最近のDebian 9アップデートで、私は少しそれを理解しました。この問題に関するDebianの記事のアドバイスに注意してください:wiki.debian.org/DontBreakDebian(FrankenDebianを作らないようにスクロールしてください)
Brandon Arnold

98

中には、/etc/apt/apt.conf.d次のファイルを追加します

99defaultrelease

APT::Default-Release "stable";

/etc/apt/sources.list.d-テスト/不安定なソースのURLを追加

stable.list

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

走る

apt-get update

そして、必要なものをインストールします

apt-get -t testing install something

依存関係の多いものをインストールする場合は、非常に注意してください。できれば本番環境でこれを行わないでください。

バックポートまたは同様のリポジトリで運を試すこともできます。


1
ワオ。早かった。出会ったばかりの情報を共有するために投稿していました!良いですね!
ガレス

以前にapt.confメソッドを実際に使用したことはありません。設定ファイルの方法は簡単に見えますが、制御の精度は低くなります。-小屋
小屋

4
回答にはアップグレードが必要です。squeezeが安定し、lennyが旧安定になったため、この構成は完全に問題を解決します。
エルヨボ

1
もう使用できません、更新してください
ロサール

4
新しいdebianリリースではapt.confファイルはありませんが、代わりに/etc/apt/apt.conf.d/70debconfを編集します
Hayden Thring

49

apt_preferences

/ etc / apt / preferencesファイルで、システムが「安全にアップグレード」するデフォルトレベルを定義します
。man apt_preferences

apt_preferencesでできることはたくさんありますが、簡単にするために...

テストでのみ使用可能な単一のパッケージ(autoMysqlBackup)をインストールする必要がありました。解決策は、次を/ etc / apt / preferencesに追加することでした。

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

複数のリポジトリを/etc/apt/sources.listに追加すると、aptitudeは、後のリリースのリポジトリ(この場合は「安定」)がリストされていても、指定したリリースにのみアップグレードします。

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

したがって、そのパッケージをインストールするには、あなたがしなければならないことは次のとおりです。

$ aptitude install -t testing packageName 

これも良い方法で、apt.confほど簡単ではありませんが、さまざまなソースをすべて相対的な方法で制御できます。
コープス

2
これはタスクには複雑すぎます... APT :: Default-Releaseを使用すると、リリースのピンプライオリティが990に設定され(900に設定する方法と同様)、残りのネガティブピンは実際には必要ありません。 。dist-upgradesの間、安定版パッケージはとにかく優先度があり、コマンドラインで何かを明示的にリストするとすぐに、その負の固定優先度はほとんど無視されます。
ラファエルヘルツォグ

@Raphaelに返信する方法がわかりません。これは非常にエレガントなやり方です。私は何年も前に適切なピン留めを使用しましたが、私は本当にそれを「決して」見つけませんでした。上記で使用した例は、apt_preferencesのマニュアルページから直接引用したものです。
ガレス

2
これがスクイーズで
正常に

3
@Lothar:Debian 6で動作します。ファイルが存在しないからといって、動作しないわけではありません。ファイルを作成して設定を追加するだけです。マニュアルページからの引用:「設定ファイルがない場合、または特定のバージョンに適用されるエントリがファイルにない場合、そのバージョンに割り当てられる優先度は、そのバージョンが属するディストリビューションの優先度です。」
rzetterberg

13

価値のあることについては、私がいつも見てきた一般的なアドバイスは「安定したものと混ぜないでください」です。混合システムのチュートリアルのほとんどは、テストと不安定版を混合するためのものです。

理由は、安定版とテスト版を混在させると、非常に基本的なパッケージ(libc6など)が(テスト版からソフトウェアをインストールするために)更新を必要とし、これらの基本的なパッケージがテスト版に移行すると、システム全体がそのようにドリフトする可能性があるためです。

次の2つの選択肢があります。

  1. Backportsを使用します。
  2. テストからソース行をインストールし、必要な新しいバージョンをsourceからビルドしてみてください。

1
同意する。wheezy / stableのバージョンのバグのため、libdvdread4をテストから更新しようとしました。しかし、最新のlibcを導入したいと考えています。そのため、私はlibdvdread4のソースパッケージを安定版から取得し、1行のソース変更でパッチを適用して再構築しました。あらゆる種類のパッケージをテストから取り込むよりもはるかに優れています。現在、すべてのパッケージはまだ「安定した」ものであり、必要な変更は1行だけです。
-dgrant

12

debianのドキュメンテーションは主題について広範囲に渡り、debianシステムの美しさを明らかにするので、掘り下げることを強くお勧めします。

見てい混合系を維持するためにどのように、それはあなたが知っているTIO必要なすべてを説明しますが。


1
これは@pQdによる回答で使用されたのと同じ方法であると思われるため、debian> = 6.0には適用されません。また、リンクのタイトルには「廃止されたドキュメント」と記載されています。また、主にリンクのみの回答。
dequis

@dequisはリンクが古くなっているように見えるという点で正しいですが、Debian 8(テスト)の指示に従って不安定版からパッケージをインストールしたところ、すべてが完璧に機能しているようです。誰でも最新のドキュメントリンクを持っていますか?
domsson

1
:これは、あなたが探しているものである可能性が高いdebian.org/doc/manuals/debian-reference/...
tomdeb

7

TestingまたはSidから多くの依存関係をインストールすることを防ぐことができる別の方法は、これです:apt-getにTestingまたはSidからパッケージのソースを取得し、Debianツールを使用してシステムのパッケージを作成するように指示します(手動で調整する必要はありません)ソースで)。

ここから引用:https :
//wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

sidパッケージをテストまたは安定版にバックポートするにはどうすればよいですか?

Debianソース(および開発ツール、特にdebhelper、devscripts、build-essential)をインストールしてから、パッケージをビルドします。

ステップバイステップ:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

結果のdebsは現在のディレクトリにあり、dpkg -i the.debでインストールできます。


4

私はそれが十分に安全で便利にできると自信を持って言うために長い間やっています。以下のセットアップでは、安定バージョンがデフォルトでインストールされますが、Aptitudeでは、必要に応じてバックポートバージョンまたは不安定バージョンを選択することもできます。

ここに画像の説明を入力してください

編集が必要なものは4つあります。デフォルトのピン留めリリースを設定する必要があります。ソースにバックポートと不安定版を追加する必要があり、バックポート/不安定なパッケージのピン留め優先度を下げます。

  • 「/etc/apt/apt.conf.d/10defaultrelease」を作成し、次のように内容を作成します。
Apt :: default-Release "stable";
  • '/etc/apt/sources.list'を編集して、不安定なソースとバックポートソースを追加して、次のようにします。
#deb cdrom:[Debian GNU / Linux 6.0.0 _Squeeze_-公式マルチアーキテクチャamd64 / i386 NETINST#1 20110205-14:45] / squeeze main

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze / updates main
deb-src http://security.debian.org/ squeeze / updates main

#squeeze-update、以前は「volatile」として知られていました
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

#バックポートを絞る
#http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

#不安定
#http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/不安定なメイン
deb-src http://ftp.us.debian.org/debian/不安定なメイン

#無料 サンジャワ
#deb http://ftp.us.debian.org/debian/ squeeze non-free
#deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • etc/apt/preferencesピン留めファイルの編集-ファイルが存在しない場合は作成してください。
#パッケージの固定優先順位
#http://wiki.debian.org/AptPreferencesおよびhttp://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferencesを参照
#
#ナットシェルに最高のPINがインストールされます
#
#デフォルト設定は次のとおりで、設定に追加されます:
#990-インストールされていないが、 `APT :: Default-Relase" stable "`設定に属しているバージョンの場合。
#500-インストールされておらず、ターゲットリリースに属していないバージョンの場合
#100-既にインストールされているパッケージの場合、これは同じパッケージの他のバージョンも意味する
#1-実験パッケージ用。「NotAutomatic:yes」のパッケージ
#
#私たちのピニング
#400-他のパッケージを更新する必要なく安全にインストールできるバックポート
#50-不安定なパッケージ、詳細画面で強制的にインストールすると、競合が発生する可能性がある

パッケージ: *
ピン:リリースn = squeeze-backports
ピン優先順位:400

パッケージ: *
ピン:リリースa =不安定
  • '/etc/apt/apt.conf.d/100guiconf'を作成し、Aptitudeをセットアップしてピン情報を表示します。
Aptitude :: UI :: Package-Display-Format "%c%a%M%p%Z%v%V%i";

1
上記に加えて、「テスト」開発リポジトリからすべてのシステムパッケージを実行することで解決した更新プログラムです。そのため、の代わりにsource.listコード名を言う必要があります。Debianのポリシーはほぼ安定しており、パッケージはリポジトリのものとほぼ同じくらい新しいものです。私はそうで見てください、ここでスペースが不足しています:wiki.debian.org/DebianReleaseswiki.debian.org/StableUpdates、およびwiki.debian.org/StableProposedUpdates。最後の2つは追加のリポジトリソースです。jessiesqueezetestingunstable
ダニエルソコロウスキ

2

パッケージの選択がより複雑である場合、またはインストールが複数のマシンで繰り返される場合は、公式リポジトリのサブセットをミラー化するプライベートリポジトリのセットアップを検討できます。これにはリポジトリを設定するのに少しの作業が必要ですが、報酬は各クライアントの最低限の設定と数十のインストールを実行したときに再現可能な結果で維持しやすいです。これは、1つまたは2つのパッケージのみがインストールされている場合でも役立ちます。この方法を使用して、クラウドインストールを自動化および保守します。安価なVPS上の単一のサーバーは、数十のプライベートリポジトリを処理できます。

プライベートリポジトリサーバーを構成するには:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

次に、選択したWebサーバーを構成して、静的リポジトリファイルを提供します。セキュリティ証明書と基本認証でリポジトリを保護する可能性があります。

プライベートリポジトリを自動的に維持し、アップストリームから更新を取り込むには、上記をスクリプトに入れてcronジョブから実行します。

クライアントマシンでクライアントマシンを設定するには:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

クライアントマシンを保守し、クライアントマシンでプライベートリポジトリの更新をすべて取り込むには:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

1

別のオプションは、テストからソースパッケージを代わりにダウンロードすることです。APTは、ダウンロード後にソースパッケージを自動ビルドできます。このようにして、安定版パッケージはテストアップデートの影響を受けません。唯一のトレードオフは、バイナリパッケージをダウンロードしてインストールするよりも時間がかかることです。

テストからソースパッケージをダウンロードするようにAPTを構成するには、次を追加します。

deb-src http://<your debian mirror here> testing main

将来のテストではなく現在のテストのみを行いたい場合は、「testing」を現在のコード名に置き換えます(この記事の執筆時点では「buster」です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.