web-dev-qa-db-ja.com

更新されたパッケージのロールバックをサポートするディストリビューションはありますか?

更新後に変更されたパッケージのロールバックをサポートするツールまたはディストリビューション全体がありますか?

例として、パッケージA、B、Cをアップグレードしました。これらのパッケージを数日間使用した後、Bでバグに遭遇しました。

バグレポートを提出する間、Bを以前のバージョンにダウングレードして、これからやろうとしていることを完了できるようにする必要があります。一方、AはBに依存しているため、ダウングレードする必要もありますが、Cは両方に依存しないため、現在のバージョンを維持できます。

これをサポートするツールまたはディストリビューションはありますか?

ほとんどのディストリビューションにはパッケージをダウングレードする方法があることは知っていますが、以前のパッケージがリポジトリから削除されていて、場合によっては(たとえば、XサーバーとMesaをアップグレードした後)、パッケージをダウングレードすることができます。乱雑。

23
Steffen Winkler

NixOS はアップグレードのロールバックをサポートしますが、私が理解しているように、希望するほどには行きません:A、B、Cを1つの操作でアップグレードすると、その操作全体をロールバックできますAとBだけではありません。(A、B、CをロールバックしてからCをアップグレードできるはずです...)トランザクションの観点からは、これは理にかなっています。

Debian( スナップショットアーカイブ と組み合わせて、古いパッケージがなくなった場合)を使用すると、Bをダウングレードでき、aptaptitudeなどのツールは多くの場合ケースでは、Aもダウングレードする必要があることがわかります(Bを単純にアップグレードしたくないと確信したら)。しかし、あなたが言うように多少厄介である傾向があり、とにかくパッケージのダウングレードはDebianでサポートされていません(つまり、ほとんどの場合機能しますが、機能しない場合はバグではありません)。

21
Stephen Kitt

yumベースのディストリビューション(例: Red Hat ELCentOS など)では、次のことができます。

  1. Sudo yum history listを使用して、システムの変更履歴を調べます

    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    ------------------------------------------------------------------------------
        10 | Administrator <admin>    | 2016-03-08 09:08 | Install        |   11   
         9 | Administrator <admin>    | 2016-03-03 16:48 | Install        |    1   
         8 | Administrator <admin>    | 2016-03-03 16:09 | Install        |    5   
         7 | Administrator <admin>    | 2016-02-26 18:13 | Install        |    1   
         6 | Administrator <admin>    | 2016-02-26 15:12 | Install        |   27   
         5 | Administrator <admin>    | 2016-02-26 15:07 | Install        |    1   
         4 | Administrator <admin>    | 2016-02-26 15:05 | Install        |    3  <
         3 | Administrator <admin>    | 2016-02-26 15:03 | Install        |    1 > 
         2 | Administrator <admin>    | 2016-02-26 15:01 | I, U           |   49   
         1 | System <unset>           | 2016-02-26 14:38 | Install        |  296   
    history list
    
  2. Sudo yum history info 10を使用して詳細を確認します

  3. Sudo yum history rollback 9を使用して、履歴の前のポイントにロールバックします

警告

いくつかの明らかな警告があります:

  1. 古いパッケージがもう利用できない場合は、乾杯です(@vonbrandを引用)、
  2. Yum以外に何かをインストールすると、歴史を壊す可能性があります。

私の例では、IDが<の行(最後の列)の4は、そのポイントを過ぎてロールバックできないことを意味します。

Sudo yum history rollback 2
Loaded plugins: fastestmirror
Transaction history is incomplete, before 4.
 You can use 'history rollback force', to try anyway.
Error: Failed history rollback, incomplete
15
andcoz

OpenSUSE では Snapper with the Btrfs filesystem を簡単に使用できます。

インストール中に標準ファイルシステム構成を使用する場合、デフォルトで有効になっています

Snapperを有効にすると、yast2およびzypperと完全に統合されます。何かをインストールまたはアップグレードする(またはユーザーを作成する)たびに、ファイルシステムのスナップショットを作成します。

システムを前の状態にロールバックするには、yast2 snapperを実行するだけです。

enter image description here

7
andcoz

AIXはvery更新のロールバックに優れています。まあ-私たちはUnix/Linuxサイトにいて、Linuxが欲しいと指定したことはありません:)

単一のAIX更新ごとに、変更されたすべてのファイルが/ varファイルシステム内の個別のサブディレクトリに保存されます。更新は単純なネイティブコマンドで元に戻すことができ、元に戻すの必要はありませんネットワークが稼働している必要があります =)しないメディア/パッケージは必要ありません、それは何も再インストールせず、スナップショットテクノロジーに依存しません-効果は単にファイルが次のように再表示されることです彼らは更新前でした。

おまけとして、起動可能なスタンドアロンシステムバックアップを作成する簡単なネイティブコマンドmksysbが1つあります。何らかの誤動作/破損のために起動しない、完全に機能しないシステムで単純に起動できるファイル。

そして、それは何十年もの歴史を持つすべての実績のあるテクノロジーです:)

6
kubanczyk

Fedoraでは(そして他のディストリビューションでも確かです)、以前のバージョンに戻るように頼むことができます:

dnf downgrade <packages>

次から最後のバージョンのパッケージを取得します。特定のバージョンを要求するには、次のようにします。

dnf downgrade <package>.<version>

これは、パッケージがリポジトリでまだ利用可能な場合にのみ機能します。機能は、決して前例がないわけではありません。障害があり、アップグレードの一部が構成の変更であった場合、ロールバックは必ずしも正確に過去のバージョンになるわけではありません。

5
vonbrand

Arch Linuxも ダウングレードをサポート パッケージとカーネル。 downgraderおよびdowngradeツールをインストールして、プロセスを自動化することもできます。 btrfsソリューションも機能します。以前は手動でロールバックするために使用しました。

システムをロールバックする方法:

Sudo -i
mount /dev/sda3 /mnt/hd #mount the top btrfs subvolume
ls #find the version you want
mv @ @-old #move the '/' subvolume (I named mine '@')
btrfs sub snap @-<date> @ #replace @ with the backup from <date>
sync
reboot #the changes will take effect once the system restarts

Btrfsの利点の1つは、サブボリュームと動的な「パーティション」を使用できることです。たとえば、/(@と呼ばれる)、/ tmp(@tmp)、および/ home(@home)のサブボリュームがあります。その後、これらのバックアップとロールバックは簡単です。/tmpは別のサブボリュームにあります。これは、システムの残りの部分と一緒にバックアップすると、ほとんどのリブートごとに消去されるため、無意味に見えるためです。

2
Caleb Reister

私はArch Linuxを使用しており、ダウンロードしたすべてのパッケージを/var/cache/pacman/pkg/に保存するため、いつでも任意のパッケージをダウングレードできます(起動できない場合は、ライブUSBを使用してください)。 Arch Wiki から:

pacman -U <file_name_of_the_package>

パッケージがアップグレードされないようにするには、次のように、パッケージ名を/etc/pacman.confに含めます。

IgnorePkg=linux

スペースを節約するには、次のコマンドでキャッシュフォルダーをクリアします。

pacman -Sc

古いパッケージをすべて削除して最新のパッケージを保持するか、-Sccを使用してすべてを削除します。

2
Alko