提案されたリポジトリへのアップグレードから元に戻すにはどうすればよいですか?


23

誤って、プレリリースアップデート(提案済み)リポジトリを有効にしてから、すべてのパッケージをアップグレードしました。

どうすれば元に戻すことができますか?

ここにあるテスト結果からenzotibの指示@およびテスト結果から、私の命令が


1
テスト結果のペーストビンは死んでいます。
エンゾチブ

回答:


24

ローカルでインストールされたパッケージ、提案されたパッケージ、およびバックポートされたパッケージから安定版+更新チャネルに戻すより一般的な方法を次に示します。他の答えは正しく、同様の方法で機能しますが、これはよりエレガントなアプローチだと思います。

  1. あなたがのエントリを削除していることを確認し-proposedたり-backports、あなたの中/etc/apt/sources.list/etc/apt/sources.list.d/*ファイル。
  2. 以下を含むapt-preferencesファイルを追加します/etc/apt/preferences.d/99-back-to-stable-updatespreciseここでは、バージョンに置き換えます):

    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あまりにも任意の追加パッケージを削除するようになりますチャンネル。

  3. 今すぐ実行

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    aptが提案するソリューションを調べて、問題ないと思われる場合は受け入れてください。ダウングレードの理由とバージョンを確認する必要がある場合は、これをapt-cache policy packagename使用して、使用可能なバージョンと、aptがインストールの候補と決定したものを確認してください。

  4. /etc/apt/preferences.d/99-back-to-stable-updates不要になったため、ファイルを再度削除します。

5年以上前の彼の投稿mlindにピン留めすることに対するこの主張をUbuntuフォーラムに感謝します-しかし、それは今日、私を大いに助けてくれました。


debianでも動作するはずです。残念ながら、それは私のために何もしません:/
マイケル

@Michael 1)Debianには、公式リポジトリの提案という概念がありません。2)このサイトはUbuntuではなく、Debianについてです。Unix.SEで新しい質問をすることをお勧めします。
gertvdijk

このソリューションは、「xenial」バージョンでも機能しました!(もちろん、ファイル内のprecisionをxenialに置き換えた後)どうもありがとう!
morhook

4

このページでは、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

最後に、実行中のすべてのプログラムがダウングレードバージョンになるように再起動します。


1
おもしろい解決策で、おそらく私のものよりも最高で一般的です。ところで、ダウングレードされたパッケージの数は同じであり、両方のアプローチの正確性を確認しています。
-enzotib

2

以下よりも簡単な解決策は見つかりません。しかし、誰かがより良い答えを得るのを望んでいます。

ダウングレードを実行できる次のスクリプト

#!/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


2

natty-proposedからすべてのパッケージを元に戻すことはおそらく必要ありません。ほとんどのパッケージは、いずれにしてもnatty-updatesによってすぐに同じバージョンに更新されます。

1つのパッケージに問題がある場合は、(-proposedを無効にしてから)darent presentsメソッドを使用してその1つのパッケージを元に戻すか、を使用できますsudo aptitude install packagename/natty。しかし、もっと重要なのは、パッケージに対してバグを報告することです。実際に素朴な提案をテストする人はほとんどいないため、リグレッション(=新しい問題)が発生した場合は確実に報告する必要があります。そうしないと、すべてのubuntuユーザーの更新で終わる可能性があります。問題がある場合は、報告してください。


1

synapticでは、提案されたソースのリポジトリを無効にして、ソースを更新できます。その後、更新されたすべてのパッケージがローカルにインストールされているように表示されます(それらはもはやリポジトリにないため)。

次に、これらのパッケージを「ダウングレード」する必要があります。1つずつ選択し、上部のメニューで次を選択します。

package > force version

(またはControl + E)

使用可能なオプションを含むメニューが表示されます。各パッケージに低いバージョン番号を選択します。間違えた場合、通常のレポジトリに新しいバージョンがある場合は、後のアップデートで解決されます。

簡単な解決策は、popositedリポジトリを指すpurge-ppaコマンドを使用することですが、それが動作するかどうかはわかりません。外部ppaのパージとパッケージの公式ubuntuバージョンへのダウングレードにのみ使用しました。この場合、これを行うことはお勧めしません。誰かがそれが安全な方法かどうかを知っているかもしれません...


最後の段落は推測に過ぎないため、質問に対するコメントであるか、適切に調査する必要があります。
カールリヒター

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