CentOS/Ubuntuのパッケージ管理で、次のことを行う方法です。
・システム上のファイルやコマンドは、どのパッケージでインストールされたか調べる
・特定のファイルやコマンドを入れるには、どのパッケージをインストールすれば良いか調べる
・パッケージ(インストール済み)でインストールされたファイルはどれかリストアップする
・パッケージ(未インストール)でインストールされるファイルを調べる
システム上のファイルやコマンドは、どのパッケージでインストールされたか調べる
CentOS
次の手順で調べます。
nbsp;rpm -qf ファイル・コマンドのフルパス rpm名が表示されます
nbsp;yum list installed rpm名 パッケージ名が「インストール済みパッケージ」または「Installed Packages」の行の次に表示されます
「ファイル・コマンドのフルパス」で指定するものは、シンボリックリンクでは無い方が良いです。
実行例です。
nbsp;rpm -qf /etc/httpd/conf/httpd.conf httpd-2.2.15-39.el6.centos.x86_64
nbsp;yum list installed httpd-2.2.15-39.el6.centos.x86_64 読み込んだプラグイン:downloadonly, fastestmirror, security Loading mirror speeds from cached hostfile * epel: ftp.iij.ad.jp インストール済みパッケージ httpd.x86_64 2.2.15-39.el6.centos @base
Ubuntu
次の手順で調べます。
nbsp;dpkg -S ファイル・コマンドのフルパス パッケージ名:ファイル・コマンドのフルパス が表示されます。
「ファイル・コマンドのフルパス」で指定するものは、シンボリックリンクはダメです。
実行例です。
nbsp;dpkg -S /etc/apache2/apache2.conf apache2: /etc/apache2/apache2.conf
特定のファイルやコマンドを入れるには、どのパッケージをインストールすれば良いか調べる
CentOS
次の手順で調べます。
nbsp;yum provides ファイル・コマンドのフルパス または
nbsp;yum provides */ファイル・コマンド名 rpmパッケージ名が表示されます
nbsp;yum list rpmパッケージ名 パッケージ名が「インストール済みパッケージ」または「Installed Packages」の行の次に表示されます
ファイル・コマンドのフルパスが分かっていれば、yum provides で指定します。
フルパスが分からない場合は、*/ファイル・コマンド名 で指定します。
実行例です。
nbsp;yum provides /etc/init.d/ntpd Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp ntp-4.2.6p5-1.el6.centos.x86_64 : The NTP daemon and utilities Repo : installed Matched from: Other : Provides-match: /etc/init.d/ntpd
nbsp;yum list ntp-4.2.6p5-1.el6.centos.x86_64 Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp Installed Packages ntp.x86_64 4.2.6p5-1.el6.centos @anaconda-CentOS-201311272149.x86_64/6.5
備考:
yum provides */ファイル・コマンド名 の形式では、指定したファイルを含むパッケージが複数見つかることがあるので、ファイル・コマンドのフルパスが分かっていれば、それを指定した方が確実です。
例えば、yum provides */sqlite3.h とすると、下記のように複数パッケージが見つかります。
nbsp;yum provides */sqlite3.h 読み込んだプラグイン:downloadonly, fastestmirror, security Loading mirror speeds from cached hostfile * epel: ftp.iij.ad.jp xulrunner-devel-17.0.10-1.el6.centos.x86_64 : Development files for Gecko リポジトリー : base 一致 : ファイル名 : /usr/include/xulrunner-17.0.10/sqlite3.h xulrunner-devel-17.0.10-1.el6.centos.i686 : Development files for Gecko リポジトリー : base 一致 : ファイル名 : /usr/include/xulrunner-17.0.10/sqlite3.h sqlite-devel-3.6.20-1.el6.x86_64 : Development tools for the sqlite3 embeddable SQL database engine リポジトリー : base 一致 : ファイル名 : /usr/include/sqlite3.h sqlite-devel-3.6.20-1.el6.i686 : Development tools for the sqlite3 embeddable SQL database engine リポジトリー : base 一致 : ファイル名 : /usr/include/sqlite3.h
また、yum providesで指定する「ファイル・コマンドのフルパス」は、パッケージインストール時にハードリンクやシンボリックリンクとなるものは、見つからないことがあります。
例えば、mysql-server のインストールで ハードリンク /etc/rc.d/init.d/mysqld , /etc/init.d/mysqld が出来ます。
これらはハードリンクですが、下記のように一方のみ、yum providesで検索成功します。
成功 : yum provides /etc/rc.d/init.d/mysqld 失敗 : yum provides /etc/init.d/mysqld
Ubuntu
apt-fileコマンドを使います。
apt-file をインストールします。
sudo apt-get install apt-file
毎回 apt-file使用前に下記を実行します。
apt-file update
下記を実行します。
nbsp;apt-file search ファイル・コマンドのフルパス パッケージ名:ファイル・コマンドのフルパス が表示されます。 または
nbsp;apt-file -x search "ファイル・コマンド名$" ファイル・コマンド名を含むパッケージが表示されます。 表示は、パッケージ名:ファイル・コマンド名 の書式で列挙されます。
実行例です。
nbsp;apt-file search /usr/bin/sqlite3 sqlite3: /usr/bin/sqlite3
nbsp;apt-file -x search "mysqld$" mariadb-server-core-5.5: /usr/sbin/mysqld mysql-server-5.5: /etc/apparmor.d/usr.sbin.mysqld mysql-server-5.6: /etc/apparmor.d/usr.sbin.mysqld mysql-server-core-5.5: /usr/sbin/mysqld mysql-server-core-5.6: /usr/sbin/mysqld percona-xtradb-cluster-server-5.5: /usr/sbin/mysqld
パッケージ(インストール済み)でインストールされたファイルはどれかリストアップする
CentOS
rpmコマンドを使用する場合と、repoqueryコマンドを使用する場合の2通りあります。
まず、rpmコマンドの場合です。
nbsp;rpm -ql パッケージ名 指定されたパッケージでインストールされたファイル一覧が表示されます。
実行例です。
nbsp;rpm -ql sqlite /usr/bin/sqlite3 /usr/lib64/libsqlite3.so.0 /usr/lib64/libsqlite3.so.0.8.6 /usr/share/doc/sqlite-3.6.20 /usr/share/doc/sqlite-3.6.20/README /usr/share/man/man1/sqlite3.1.gz
次に、repoqueryコマンドを使用する場合です。
repoqueryコマンドを使用するには、yum-utilsパッケージのインストールが必要です。
yum install yum-utils
コマンドは下記で実行します。
nbsp;repoquery --installed --list パッケージ名 指定されたパッケージでインストールされたファイル一覧が表示されます。
実行例です。
nbsp;repoquery --installed --list sqlite /usr/bin/sqlite3 /usr/lib64/libsqlite3.so.0 /usr/lib64/libsqlite3.so.0.8.6 /usr/share/doc/sqlite-3.6.20 /usr/share/doc/sqlite-3.6.20/README /usr/share/man/man1/sqlite3.1.gz
Ubuntu
下記を実行します。
nbsp;dpkg -L パッケージ名 パッケージでインストールされたファイルが表示されます。
実行例です。
nbsp;dpkg -L firefox /. /usr /usr/lib /usr/lib/firefox /usr/lib/firefox/defaults /usr/lib/firefox/defaults/pref /usr/lib/firefox/defaults/pref/channel-prefs.js /usr/lib/firefox/defaults/pref/vendor-gre.js /usr/lib/firefox/libplds4.so /usr/lib/firefox/firefox /usr/lib/firefox/libfreebl3.chk /usr/lib/firefox/libnssdbm3.chk /usr/lib/firefox/libnssckbi.so : :
パッケージ(未インストール)でインストールされるファイルを調べる
CentOS
repoqueryコマンドを使用します。
使用するには、yum-utilsパッケージのインストールが必要です。
yum install yum-utils
コマンドは下記で実行します。
nbsp;repoquery パッケージ名 rpmパッケージが表示されます
nbsp;repoquery --list rpmパッケージ名 ファイル一覧が表示されます
実行例です。
nbsp;repoquery sqlite sqlite-0:3.6.20-1.el6.i686 sqlite-0:3.6.20-1.el6.x86_64
nbsp;repoquery --list sqlite-0:3.6.20-1.el6.x86_64 /usr/bin/sqlite3 /usr/lib64/libsqlite3.so.0 /usr/lib64/libsqlite3.so.0.8.6 /usr/share/doc/sqlite-3.6.20 /usr/share/doc/sqlite-3.6.20/README /usr/share/man/man1/sqlite3.1.gz
Ubuntu
下記を実行します。
nbsp;apt-file -F show パッケージ名 パッケージでインストールされたファイルが表示されます。
実行例です。
nbsp;apt-file -F show sqlite3 sqlite3: /usr/bin/sqlite3 sqlite3: /usr/share/doc/sqlite3/changelog.Debian.gz sqlite3: /usr/share/doc/sqlite3/copyright sqlite3: /usr/share/man/man1/sqlite3.1.gz
参考
第04回 「apt-get, dpkg コマンドでパッケージ管理」
APT HOWTO (Obsolete Documentation)
わからないファイルのパッケージを探すyum providesとapt-file search:学びの道案内:So-netブログ
rpmコマンドの便利な使い方 パソコン鳥のブログ
(Linux)パッケージ管理コマンドの使い方 – OasisHalfmoon
yumでインストールされたファイル一覧を表示する方法 repoquery –list
ubuntu コンパイル入門 ~ PCまわりクイックメモ
コメント