RHEL系OSのパッケージ管理で知っておくと便利な小ネタをご紹介しようと思います。
インストールしたパッケージの更新履歴を見る
# rpm -qa <パッケージ名> --changelog
使っているパッケージに脆弱性が見つかった時など、
今使っているパッケージのバージョンがいつリリースされたものか知りたいときはこのコマンドを叩くと良いです。
# rpm -qa openssl --changelog
* Tue Jan 13 2015 Tomáš Mráz 1.0.1e-30.5
- fix CVE-2014-3570 - incorrect computation in BN_sqr()
- fix CVE-2014-3571 - possible crash in dtls1_get_record()
- fix CVE-2014-3572 - possible downgrade of ECDH ciphersuite to non-PFS state
- fix CVE-2014-8275 - various certificate fingerprint issues
- fix CVE-2015-0204 - remove support for RSA ephemeral keys for non-export
ciphersuites and on server
- fix CVE-2015-0205 - do not allow unauthenticated client DH certificate
- fix CVE-2015-0206 - possible memory leak when buffering DTLS records
* Thu Oct 16 2014 Tomáš Mráz 1.0.1e-30.4
- use FIPS approved method for computation of d in RSA
:
:
実行するとこのように変更履歴が表示されます。
このままだと過去の変更履歴が全て出てしまうので、head コマンドに渡すと良いです。
新しい順に10件表示されます。
# rpm -qa openssl --changelog | head
* Tue Jan 13 2015 Tomáš Mráz 1.0.1e-30.5
- fix CVE-2014-3570 - incorrect computation in BN_sqr()
- fix CVE-2014-3571 - possible crash in dtls1_get_record()
- fix CVE-2014-3572 - possible downgrade of ECDH ciphersuite to non-PFS state
- fix CVE-2014-8275 - various certificate fingerprint issues
- fix CVE-2015-0204 - remove support for RSA ephemeral keys for non-export
ciphersuites and on server
- fix CVE-2015-0205 - do not allow unauthenticated client DH certificate
- fix CVE-2015-0206 - possible memory leak when buffering DTLS records
新しいパッケージが出ているはずなのに yum update を実行しても更新されない
GHOST脆弱性が出た際、新しいバージョンを入れようと yum update を実行したけど、
インストールされないということがありました。
原因は、/var/cache/yum に古いキャッシュがたまっていることですので、
以下のコマンドを叩くと良いです。
# yum clean all
実行するとこんな感じ。
# yum clean all
Loaded plugins: fastestmirror, priorities, security
Cleaning repos: base epel extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors
これでyum update を実行すると最新のパッケージがインストールされます。
コマンド名からパッケージを推測する
パッケージ名はわからないけどコマンド名はわかる。
というケースって多分にあると思います。
yumの検索をコマンド名で行うことができます。
yum whatprovides "*/whois"
実行するとこんな感じ。
# yum whatprovides "*/whois"
Loaded plugins: fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
irssi-0.8.15-5.el6.i686 : Modular text mode IRC client with Perl
: scripting
Repo : base
Matched from:
Filename : /usr/share/irssi/help/whois
jakarta-commons-net-javadoc-2.0-2.1.el6.noarch : Javadoc for
: jakarta-commons-net
Repo : base
Matched from:
Filename : /usr/share/javadoc/jakarta-commons-net-2.0/org/apache/commons/net/whois
jwhois-4.0-19.el6.i686 : Internet whois/nicname client
Repo : base
Matched from:
Filename : /usr/bin/whois
ScrollZ-2.2.2-4.el6.i686 : Advanced IRC client based on ircII code
Repo : epel
Matched from:
Filename : /usr/share/scrollz/help/whois
ircd-hybrid-7.3.1-2.el6.i686 : Internet Relay Chat Server
Repo : epel
Matched from:
Filename : /usr/share/ircd-hybrid/help/opers/whois
jwhois-4.0-19.el6.i686 : Internet whois/nicname client
Repo : installed
Matched from:
Filename : /usr/bin/whois
正確に言うとインストールされるコマンド名を調べるのではなく、
はパッケージの中のファイルのパスを調べるコマンドです。
コマンドが入る先のパスを知っていると検索パターンにマッチする別のパッケージが表示されず良いと思います。
# yum whatprovides "/usr/bin//whois"
Loaded plugins: fastestmirror, priorities, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
jwhois-4.0-19.el6.i686 : Internet whois/nicname client
Repo : base
Matched from:
Filename : /usr/bin//whois
jwhois-4.0-19.el6.i686 : Internet whois/nicname client
Repo : installed
Matched from:
Other : Provides-match: /usr/bin//whois
いちいちパッケージ名をググっていましたが、
このコマンドを叩けばそんな手間はいらないので知っておくと良いと思います。