Redhat系Linuxで、OSパッケージを戻す方法

More than 1 year has passed since last update.

ウェブアプリ周辺のバージョンは、下記のように戻せるので、安心感があります。


  • ウェブアプリは、gitのtagと、Capistranoを組合せることにより、いつでも特定のバージョンに戻せます。

  • サーバー設定は、gitのtagと、AnsibleやChefの組合せで、いつでも特定のバージョンに戻せます。

  • RDBMSは、デイリーバックアップや、PITリカバリで、ある範囲に戻すことができます。

OSパッケージは、どうやって戻すのか。Redhat系Linuxで調べました。


yumでインストール可能なバージョンを調べたい

yum --showduplicate list <packagename>


  • 複数指定、アスタリスク指定などが可能

  • インストール可能な全バージョンが表示される

  • 色の意味は下記。(ターミナルのカラースキームによって違うかも...


    • 黒;過去入れたことのないバージョン

    • 水;過去入れたことのあるバージョン

    • 緑&太字;いま入ってるバージョン

    • 青&太字;アップデート可能な新バージョン



  • AmazonLinuxは、バージョン「YYYY/MM」の範囲で表示される


    • 2016/03なら、その範囲でのバージョンが表示される



  • 他のリポジトリは、そのリポジトリの方針に従って表示される


    • nginx, remi, datadog, などなど




yumで特定のバージョンに戻したい

showduplicate list の情報を元に、パッケージ名とバージョン名を特定して、downgradeで戻せます。

yum downgrade <packagename>-<version>


yumで直前のバージョンに戻したい

バージョン番号を省略可能

yum downgrade <packagename>


yumコマンドによる変更履歴を調べたい

直近20回の履歴

[root@web01 ec2-user]# yum history list

Loaded plugins: priorities, upgrade-helper
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
104 | EC2 ... <ec2-user> | 2016-08-31 17:40 | Install | 12
103 | EC2 ... <ec2-user> | 2016-08-25 11:10 | Install | 1
102 | EC2 ... <ec2-user> | 2016-07-28 12:07 | Update | 1 EE
101 | EC2 ... <ec2-user> | 2016-07-12 14:35 | Install | 8
100 | EC2 ... <ec2-user> | 2016-07-12 14:34 | Update | 1 EE
99 | EC2 ... <ec2-user> | 2016-05-10 12:48 | Update | 3
98 | EC2 ... <ec2-user> | 2016-05-10 12:40 | Update | 2
97 | EC2 ... <ec2-user> | 2016-05-10 12:40 | Update | 1
96 | System <unset> | 2016-05-10 12:31 | Install | 1
95 | System <unset> | 2016-05-10 12:31 | Erase | 1
94 | EC2 ... <ec2-user> | 2016-05-10 12:15 | I, U | 7 EE
93 | EC2 ... <ec2-user> | 2016-03-18 13:14 | E, I, U | 12 EE
92 | EC2 ... <ec2-user> | 2016-03-13 11:11 | Update | 15
91 | EC2 ... <ec2-user> | 2016-03-13 11:10 | Update | 2
90 | EC2 ... <ec2-user> | 2016-03-10 14:44 | Install | 1
89 | EC2 ... <ec2-user> | 2016-03-10 14:43 | Update | 4 E<
88 | EC2 ... <ec2-user> | 2016-03-09 18:46 | Update | 4 >E
87 | EC2 ... <ec2-user> | 2016-03-01 21:58 | Install | 1
86 | EC2 ... <ec2-user> | 2016-03-01 21:57 | Update | 4 EE
85 | EC2 ... <ec2-user> | 2016-02-23 10:29 | Update | 3
history list

全履歴

yum history list all


yumコマンドの履歴IDごとの作業内容を調べる

yum history listで左端のIDで、作業内容を調べることができます。

履歴ID「96」の内容を調べるなら

[root@web01 ec2-user]# yum history info 96

Loaded plugins: priorities, upgrade-helper
Transaction ID : 96
Begin time : Tue May 10 12:31:56 2016
Begin rpmdb : 620:b2548581121a92f05d2abb13a36606703d422fb6
End time : 12:31:57 2016 (1 seconds)
End rpmdb : 621:151e4d1786935d2faf91e0a13ccef4836a4ee9d9
User : System <unset>
Return-Code : Success
Command Line : -d0 -e0 -y --disablerepo=* localinstall /var/lib/aws/opsworks/cache.stage2/opsworks_assets/opsworks-ruby22.PVoU39yu/opsworks-ruby22-2.2.5-1.x86_64.rpm
Transaction performed with:
Installed rpm-4.11.2-2.73.amzn1.x86_64 @amzn-updates/2015.09
Installed yum-3.4.3-137.65.amzn1.noarch @amzn-updates/2015.09
Packages Altered:
Install opsworks-ruby22-2.2.5.1-1.x86_64 @/opsworks-ruby22-2.2.5-1.x86_64/2015.09
history info


yum install, yum updateなどの作業を取り消したい

履歴ID「96」を取り消すなら。

yum history undo 96


  • yum installなどと同様に、y/nを聞かれるので、答えて進める。

  • この作業もyum historyに記録されるので、undoのundoはもちろん、undoのundoのundoも可能。