誤ってプレリリースアップデート(natty-proposed)リポジトリを有効にしてから、すべてのパッケージをアップグレードしました。
どうすれば元に戻すことができますか?
テスト結果 from @ enzotib's instructions と テスト結果 from my instructions です。
ローカルにインストールされたパッケージ、提案されたパッケージ、およびバックポートされたパッケージからstable + updatesチャネルに戻すより一般的な方法を次に示します。他の答えは正しく、同様の方法で機能しますが、これはよりエレガントなアプローチだと思います。
-proposed
および-backports
ファイルの/etc/apt/sources.list
または/etc/apt/sources.list.d/*
のエントリを削除したことを確認してください。Apt-preferencesファイルを追加します。 /etc/apt/preferences.d/99-back-to-stable-updates
を含む(precise
の場合-ここでバージョンに置き換えてください):
Package: *
Pin: release a=precise
Pin-Priority: 1001
Package: *
Pin: release a=precise-updates
Pin-Priority: 1001
Package: *
Pin: release a=precise-security
Pin-Priority: 1001
Package: *
Pin: release a=precise-proposed
Pin-Priority: -10
Package: *
Pin: release a=precise-backports
Pin-Priority: -10
この1000以上の固定により、aptはそのチャネルからのパッケージを強制的にダウングレードし、-proposed
および-backports
チャネルの優先度<0により、追加のパッケージも削除されます。
今すぐ実行
Sudo apt-get update
Sudo apt-get dist-upgrade
Aptが提案するソリューションを調べて、問題ないと思われる場合は受け入れてください。ダウングレードの理由とバージョンを確認する必要がある場合は、apt-cache policy packagename
を使用してこれを確認し、使用可能なバージョンと、aptがインストールの候補と決定したものを確認してください。
不要になったため、/etc/apt/preferences.d/99-back-to-stable-updates
ファイルを再度削除します。
彼の投稿 5年以上前からのピン留めに関するこの告発について、Ubuntuフォーラムのmlind
に感謝します-それでも、今日はかなり助けになりました。
このページ は、 ピンの優先順位が1000を超えるとパッケージのダウングレードが発生する可能性がある という事実を活用して、Aptピンニングを使用してリポジトリ全体からダウングレードできることを示唆しています。
1つの解決策は、natty-proposed
リポジトリからのものを除くすべてのパッケージファイルのデフォルトの優先順位を一時的に1000ずつ増やすことです。
apt-cache policy | awk '
/^ [0-9]+ / {
p = $1;
getline;
r = $0;
if (r !~ /a=natty-proposed/) p += 1000;
print "Package: *\nPin: " r "\nPin-priority: " p "\n"
}
' | Sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed
(注:このメソッド 優先度を上げることができません リリースフィールドにコンマが含まれるパッケージファイル。= この質問 を参照してください。)
これを行った後、apt-get --simulate upgrade
を使用して、正常なダウングレード検出をテストできます。正しいダウングレードが検出されたことを確認したら、ダウングレードの実行に必要なのはSudo apt-get upgrade
だけです。
ダウングレードが完了したら、ソフトウェアソースを使用してプレリリースアップデート(natty-proposed)リポジトリを無効にし、一時的な優先度の増加を削除します。
Sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed
最後に、実行中のすべてのプログラムがダウングレードバージョンになるように再起動します。
以下よりも簡単な解決策は見つかりません。しかし、誰かがより良い答えを得るのを望んでいます。
ダウングレードを実行できる次のスクリプト
#!/bin/bash
# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages
# run apt-cache policy on each of them, then elaborate with the awk script
apt-cache policy $(<all-packages) |
./get-prev-pkg-vers >old-versions
# install previous version of packages
Sudo apt-get --simulate install $(< old-versions)
get-prev-pkg-vers
という名前のawk
スクリプトは次のとおりです。
#!/usr/bin/awk -f
/^[^ ]/ {
package = $1
gsub(":", "", package)
search_next = 0
}
/^ [^ ]/ {
installed = 0
version = $1
if (search_next == 1) {
print package "=" version
search_next = 0
}
}
/^ \*\*\* [^ ]/ {
installed = 1
}
/^ [^ ]/ {
branch = $3
if (installed == 1 && branch ~ /proposed/) {
search_next = 1
}
installed = 0
}
スクリプトを実行するとき、proposedリポジトリはまだ無効になっていないはずです。
両方のスクリプトで実行可能ビットを設定することを忘れないでください。
このアプローチの問題は、すべてのダウングレードされたパッケージが手動でインストールされたものになることです(また、自動インストールされたパッケージも)。
安全のために、bashスクリプトの最後で--simulate
オプションをapt-get
に追加します。
Natty-proposedからすべてのパッケージを元に戻す必要はおそらくありません。ほとんどのパッケージは、いずれにしてもnatty-updatesを介してすぐに同じバージョンに更新されます。
1つのパッケージに問題がある場合は、(-proposedを無効にした後)darent presentsメソッドを使用してその1つのパッケージを元に戻すか、Sudo aptitude install packagename/natty
を使用できます。しかし、もっと重要なのは、パッケージに対してバグを報告することです。実際に素朴な提案をテストする人はほとんどいないため、リグレッション(新しい問題)が発生した場合は必ず報告する必要があります。そうしないと、すべてのubuntuユーザーの更新で終わる可能性があります。そのため、問題がある場合は報告してください。
Synapticでは、提案されたソースのリポジトリを無効にして、ソースを更新できます。次に、更新されたすべてのパッケージがローカルにインストールされているように表示されます(これらのパッケージはリポジトリにないため)。
次に、これらのパッケージを「ダウングレード」する必要があります。 1つずつ選択し、上部のメニューで次を選択します。
package > force version
(またはControl + E)
使用可能なオプションを含むメニューが表示されます。各パッケージに低いバージョン番号を選択します。間違いを犯し、通常のレポジトリに新しいバージョンがある場合は、後のアップデートで解決されます。
簡単な解決策は、popositedリポジトリを指すpurge-ppaコマンドを使用することですが、それが動作するかどうかはわかりません。外部ppaのパージとパッケージの公式ubuntuバージョンへのダウングレードにのみ使用しました。この場合、これを行うことはお勧めしません。誰かがそれが安全な方法かどうかを知っているかもしれません...
https://bugs.launchpad.net/ubuntu/+source/software-propertiesでppa-purge
と同等の単純な保守コマンドですべてのproposed
パッケージをダウングレードする機能を提供することを提案しました/ + bug/1810499 ここでの投稿はまだシステムの状態を表しているようです。
「提案」-それを得る?