更新後に変更されたパッケージのロールバックをサポートするツールまたはディストリビューション全体がありますか?
例として、パッケージA、B、Cをアップグレードしました。これらのパッケージを数日間使用した後、Bでバグに遭遇しました。
バグレポートを提出する間、Bを以前のバージョンにダウングレードして、これからやろうとしていることを完了できるようにする必要があります。一方、AはBに依存しているため、ダウングレードする必要もありますが、Cは両方に依存しないため、現在のバージョンを維持できます。
これをサポートするツールまたはディストリビューションはありますか?
ほとんどのディストリビューションにはパッケージをダウングレードする方法があることは知っていますが、以前のパッケージがリポジトリから削除されていて、場合によっては(たとえば、XサーバーとMesaをアップグレードした後)、パッケージをダウングレードすることができます。乱雑。
NixOS はアップグレードのロールバックをサポートしますが、私が理解しているように、希望するほどには行きません:A、B、Cを1つの操作でアップグレードすると、その操作全体をロールバックできますAとBだけではありません。(A、B、CをロールバックしてからCをアップグレードできるはずです...)トランザクションの観点からは、これは理にかなっています。
Debian( スナップショットアーカイブ と組み合わせて、古いパッケージがなくなった場合)を使用すると、Bをダウングレードでき、apt
やaptitude
などのツールは多くの場合ケースでは、Aもダウングレードする必要があることがわかります(Bを単純にアップグレードしたくないと確信したら)。しかし、あなたが言うように多少厄介である傾向があり、とにかくパッケージのダウングレードはDebianでサポートされていません(つまり、ほとんどの場合機能しますが、機能しない場合はバグではありません)。
yum
ベースのディストリビューション(例: Red Hat EL 、 CentOS など)では、次のことができます。
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
Sudo yum history info 10
を使用して詳細を確認します
Sudo yum history rollback 9
を使用して、履歴の前のポイントにロールバックしますいくつかの明らかな警告があります:
私の例では、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
OpenSUSE では Snapper with the Btrfs filesystem を簡単に使用できます。
インストール中に標準ファイルシステム構成を使用する場合、デフォルトで有効になっています。
Snapperを有効にすると、yast2
およびzypper
と完全に統合されます。何かをインストールまたはアップグレードする(またはユーザーを作成する)たびに、ファイルシステムのスナップショットを作成します。
システムを前の状態にロールバックするには、yast2 snapper
を実行するだけです。
AIXはvery更新のロールバックに優れています。まあ-私たちはUnix/Linuxサイトにいて、Linuxが欲しいと指定したことはありません:)
単一のAIX更新ごとに、変更されたすべてのファイルが/ varファイルシステム内の個別のサブディレクトリに保存されます。更新は単純なネイティブコマンドで元に戻すことができ、元に戻すの必要はありませんネットワークが稼働している必要があります =)しないメディア/パッケージは必要ありません、それは何も再インストールせず、スナップショットテクノロジーに依存しません-効果は単にファイルが次のように再表示されることです彼らは更新前でした。
おまけとして、起動可能なスタンドアロンシステムバックアップを作成する簡単なネイティブコマンドmksysb
が1つあります。何らかの誤動作/破損のために起動しない、完全に機能しないシステムで単純に起動できるファイル。
そして、それは何十年もの歴史を持つすべての実績のあるテクノロジーです:)
Fedoraでは(そして他のディストリビューションでも確かです)、以前のバージョンに戻るように頼むことができます:
dnf downgrade <packages>
次から最後のバージョンのパッケージを取得します。特定のバージョンを要求するには、次のようにします。
dnf downgrade <package>.<version>
これは、パッケージがリポジトリでまだ利用可能な場合にのみ機能します。機能は、決して前例がないわけではありません。障害があり、アップグレードの一部が構成の変更であった場合、ロールバックは必ずしも正確に過去のバージョンになるわけではありません。
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は別のサブボリュームにあります。これは、システムの残りの部分と一緒にバックアップすると、ほとんどのリブートごとに消去されるため、無意味に見えるためです。
私はArch Linuxを使用しており、ダウンロードしたすべてのパッケージを/var/cache/pacman/pkg/
に保存するため、いつでも任意のパッケージをダウングレードできます(起動できない場合は、ライブUSBを使用してください)。 Arch Wiki から:
pacman -U <file_name_of_the_package>
パッケージがアップグレードされないようにするには、次のように、パッケージ名を/etc/pacman.conf
に含めます。
IgnorePkg=linux
スペースを節約するには、次のコマンドでキャッシュフォルダーをクリアします。
pacman -Sc
古いパッケージをすべて削除して最新のパッケージを保持するか、-Scc
を使用してすべてを削除します。