サーバーを実行していて、Stable(Lenny)からTesting(Squeeze)にアップグレードして、必要なパッケージを1つまたは2つだけインストールしたくないとします。
テストから特定のパッケージのみをインストールする最良の方法は何ですか?
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
多くの人は安定とテストを混在させることを恐れているようですが、率直に言って、テスト自体はかなり安定しており、適切な設定とソリューションチェックを行うことで、コアパッケージを不安定なパスに置く「安定性のドリフト」を回避できます。
「テストはかなり安定していますか?」、と尋ねます。はい。パッケージが不安定版からテスト版に移行するには、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
:testing
を除いて、stable.list
と同じです。
unstable.list
:unstable
を除いてstable.list
と同じで、セキュリティリストを削除します。
experimental.list
:experimental
を除いて、unstable.list
と同じです。
sources.lists.d
およびpreferences.d
にoldstable
を追加することもできます(優先度1を使用)。ただし、このモニカは次の安定したサイクルの前に期限切れになり、消える傾向があります。そのような場合は、http://archive.debian.org/debian/
とDebianバージョン(etch、lennyなど)の「ハードコード」を使用できます。
パッケージのテストバージョンをインストールするには、単にaptitude install lib-foobar-package/testing
を使用するか、aptitudeのGUIにジャンプして、パッケージの詳細内のバージョンを選択します(表示しているパッケージでEnterキーを押します)。
パッケージの競合に関する苦情があった場合は、最初に解決策を確認してください。ほとんどの場合、最初のバージョンは「このバージョンをインストールしない」です。パッケージごとの受け入れ/拒否リゾルバーの選択の使用方法を学びます。たとえば、foobar-package/testingをインストールしていて、最初の解決策が「foobar-package/testingをインストールしない」である場合、その選択を拒否としてマークすると、他の解決策はそのパスに二度と向きません。このような場合、おそらく他のいくつかのテストパッケージをインストールする必要があります。
(libcやカーネル、その他の巨大なコアシステムをアップグレードしようとしているなど)毛がひどくなっている場合は、これらのアップグレードパスを拒否するか、最初のアップグレードから完全に戻ることができます。可能であれば、テスト/不安定版にのみアップグレードすることに注意してください。
編集:いくつかの優先ピンを修正し、リストを更新しました。
/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
依存関係がたくさんあるものをインストールする場合は、十分に注意してください。本番環境ではこれを行わないでください。
backports または同様のリポジトリで運を試すこともできます。
価値があることについて、私がいつも見てきた一般的なアドバイスは、「安定したものを何も混ぜないでください」です。混合システムのチュートリアルのほとんどは、テストの混合と不安定のためのものです。
理論的には、安定版とテスト版を混在させる場合、非常に基本的なパッケージ(libc6など)には(テスト版からソフトウェアをインストールするために)更新が必要であり、これらの基本パッケージがテスト版に移行すると、システム全体がそのようにドリフトする可能性があります。
2つの選択肢があります。
Debianのドキュメンテーションは主題について広範囲に渡っています。debianシステムの美しさを本当に明らかにするため、私はDigに参加することを強くお勧めします。
混合システムを維持する方法 を参照してください。これは、tioが知っておく必要があるすべてを説明します。
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でインストールできます。
安全で便利にできると自信を持てるように、長い間やっています。以下の設定では、安定したバージョンがデフォルトでインストールされますが、Aptitudeでは、必要に応じてバックポートまたは不安定なバージョンを選択することもできます。
編集が必要なものは4つあります。デフォルトのピン留めリリースを設定する必要があります。ソースにバックポートと不安定版を追加する必要があり、バックポート/不安定パッケージのピン留め優先度を下げます。ピン留めを表示するには、aptitudeの表示設定を変更する必要があります。
Apt :: default-Release "stable";
#deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_-Official multi-architecture 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 #squeeze backports #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/unstable main deb-src http://ftp.us.debian.org/debian/unstable main #non free ex 。 Sun Java #deb http://ftp.us.debian.org/debian/ squeeze non-free #deb-src http://ftp.us.debian.org/debian/ 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-インストールされておらず、ターゲットに属していないバージョンの場合release #100-すでにインストールされているパッケージの場合、これは同じパッケージの他のバージョンも意味します #1-実験的パッケージの場合。 「NotAutomatic:yes」のパッケージ # #当社のピンニング #400-他のパッケージを更新する必要なく安全にインストールできるバックポート #50-不安定なパッケージ、詳細画面で強制的にインストールすると、競合が発生する可能性があります パッケージ:* ピン:release n = squeeze-backports ピン優先度:400 パッケージ:* ピン:リリースa = unstable
Aptitude :: UI :: Package-Display-Format "%c%a%M%p%Z%v%V%i";
パッケージの選択がより複雑であるか、インストールが複数のマシンで繰り返される場合は、公式リポジトリのサブセットをミラーリングするプライベートリポジトリを設定することを検討してください。これにはリポジトリを構成するための少しの作業が必要ですが、報酬は各クライアントの最小限の構成と数十のインストールを実行するときに再現可能な結果で維持するのが簡単です。これは、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:[email protected]/ 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
別のオプションは、代わりにテストからソースパッケージをダウンロードすることです。 APTは、ダウンロード後にソースパッケージを自動ビルドできます。これにより、安定したパッケージはテストのアップデートの影響を受けなくなります。唯一のトレードオフは、ダウンロードするよりも時間がかかることです。そして、バイナリパッケージをインストールします。
テストからソースパッケージをダウンロードするようにAPTを構成するには、以下を追加します。
deb-src http://<your debian mirror here> testing main
現在のテストのみを行い、将来のテストは行いたくない場合は、「testing」を現在のコード名に置き換えます(これを書いている時点では「バスター」です)。