回答:
ローカルでインストールされたパッケージ、提案されたパッケージ、およびバックポートされたパッケージから安定版+更新チャネルに戻すより一般的な方法を次に示します。他の答えは正しく、同様の方法で機能しますが、これはよりエレガントなアプローチだと思います。
-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の力、そのチャネルからのパッケージのダウングレードと上の優先順位<0になります-proposed
し、-backports
あまりにも任意の追加パッケージを削除するようになりますチャンネル。
今すぐ実行
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年以上前の彼の投稿mlind
にピン留めすることに対するこの主張をUbuntuフォーラムに感謝します-しかし、それは今日、私を大いに助けてくれました。
このページでは、Aptピンニングを使用して、ピンの優先順位が1000を超えるとパッケージのダウングレードが発生する可能性があるという事実を活用して、リポジトリ全体からダウングレードできることを示しています。
解決策の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
、ダウングレードを実行するために必要なすべての必要があります。
ダウングレードが完了したら、ソフトウェアソースを使用してプレリリースアップデート(提案された)リポジトリを無効にし、一時的な優先度の増加を削除します。
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)
awk
名前のスクリプトは、get-prev-pkg-vers
以下の通りであります
#!/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
}
スクリプトを実行するとき、提案されたリポジトリはまだ無効になっていないはずです。
両方のスクリプトで実行可能ビットを設定することを忘れないでください。
このアプローチの問題は、すべてのダウングレードされたパッケージが手動でインストールされたものになることです(自動インストールされたパッケージも)。
安全のために、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バージョンへのダウングレードにのみ使用しました。この場合、これを行うことはお勧めしません。誰かがそれが安全な方法かどうかを知っているかもしれません...
私は、すべてのダウングレードする機能を提供することが提案proposed
にコマンドequiavalentを維持シンプルなパッケージをppa-purge
でhttps://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499ここの記事はまだ表しているように見えるので、システムの状態。
「提案」-それを得る?