Ever had the system update a package, which winds up breaking the most random things? How can you roll back? How can you prevent that same buggy package from updating itself again the next time the system checks for updates, yet still get newer versions of that package when its released?
I ran across something like this recently. The symptom was that PHPMyAdmin was no longer working on this LAMP server. In short, it was found that an Apache update was to blame, which was found in this bug report: https://bz.apache.org/bugzilla/show_bug.cgi?id=61202
So how can the update to Apache be rolled back? First, try to confirm that Apache was indeed updated recently:
[[email protected] ~]# tail /var/log/yum.log Jul 08 04:23:49 Updated: httpd24u-filesystem-2.4.26-1.ius.centos6.noarch Jul 08 04:23:49 Updated: httpd24u-tools-2.4.26-1.ius.centos6.x86_64 Jul 08 04:23:50 Updated: httpd24u-2.4.26-1.ius.centos6.x86_64 Jul 08 04:23:50 Updated: 1:httpd24u-mod_ssl-2.4.26-1.ius.centos6.x86_64
Now find the transaction ID within yum by running:
[[email protected] ~]# yum history ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 220 | root
| 2017-07-08 04:23 | Update | 4
View the details of this transaction by running:
[[email protected] ~]# yum history info 220 ... Transaction performed with: Installed rpm-4.8.0-55.el6.x86_64 @centos6-x86_64 Installed yum-3.2.29-81.el6.centos.noarch @centos6-x86_64 Installed yum-metadata-parser-1.1.2-16.el6.x86_64 @anaconda-CentOS-201410241409.x86_64/6.6 Installed yum-plugin-fastestmirror-1.1.30-40.el6.noarch @centos6-x86_64 Installed yum-rhn-plugin-2.4.6-1.el6.noarch @spacewalk Packages Altered: Updated httpd24u-2.4.25-4.ius.centos6.x86_64 @rackspace-centos6-x86_64-ius Update 2.4.26-1.ius.centos6.x86_64 @rackspace-centos6-x86_64-ius Updated httpd24u-filesystem-2.4.25-4.ius.centos6.noarch @rackspace-centos6-x86_64-ius Update 2.4.26-1.ius.centos6.noarch @rackspace-centos6-x86_64-ius Updated httpd24u-mod_ssl-1:2.4.25-4.ius.centos6.x86_64 @rackspace-centos6-x86_64-ius Update 1:2.4.26-1.ius.centos6.x86_64 @rackspace-centos6-x86_64-ius Updated httpd24u-tools-2.4.25-4.ius.centos6.x86_64 @rackspace-centos6-x86_64-ius Update 2.4.26-1.ius.centos6.x86_64 @rackspace-centos6-x86_64-ius history info ...
To roll back the updates, getting us back to Apache 2.4.25 in this case, simple undo the transaction by running:
[[email protected]web01 ~]# yum history undo 220
Then confirm Apache is back to the previous version 2.4.25:
[[email protected] ~]# rpm -qa |grep -i httpd24u httpd24u-filesystem-2.4.25-4.ius.centos6.noarch httpd24u-2.4.25-4.ius.centos6.x86_64 httpd24u-mod_ssl-2.4.25-4.ius.centos6.x86_64 httpd24u-tools-2.4.25-4.ius.centos6.x86_64
Next, restart Apache so the changes take place:
[[email protected] ~]# service httpd restart
Finally, exclude the buggy packages from ever being installed again. In this example, Apache 2.4.26 will never be installed, however any newer versions released after that will install/update normally.
[[email protected] ~]# yum install yum-plugin-versionlock [[email protected] ~]# yum versionlock add! httpd24u-mod_ssl-2.4.26-1.ius.centos6.x86_64 httpd24u-2.4.26-1.ius.centos6.x86_64 httpd24u-tools-2.4.26-1.ius.centos6.x86_64 httpd24u-filesystem-2.4.26-1.ius.centos6.noarch