rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。
インストールされているかどうかによらず、yumが参照するすべてのレポジトリからrpmパッケージを検索します。
$ yum search perl
...
perl-AppConfig.noarch : Perl module for reading configuration files
perl-Archive-Tar.i686 : A module for Perl manipulation of .tar files
perl-Archive-Zip.noarch : Perl library for accessing Zip archives
perl-Authen-SASL.noarch : SASL Authentication framework for Perl
perl-Business-ISBN.noarch : Perl module to work with International Standard Book
: Numbers
perl-CPAN.i686 : Query, download and build perl modules from CPAN sites
perl-Cache-Memcached.noarch : Perl client for memcached
perl-Carp-Clan.noarch : Perl module to print improved warning messages
perl-Clone.i686 : Recursively copy perl datatypes
...
概要などの情報に文字列が含まれている場合にも search は該当してしまいます。パッケージ名のみを検索対象としたい場合は list を使用します。
$ yum list perl
Installed Packages
perl.x86_64 4:5.10.1-131.el6_4 @updates
Available Packages
perl.x86_64 4:5.10.1-136.el6_6.1 updates
ワイルドカードも使用できます。いずれの場合にも「パッケージ名.アーキテクチャ、バージョン-リリース番号、インストール状態または yum レポジトリ名」が表示されます。
$ yum list perl*
Installed Packages
...
Available Packages
...
perl-parent.x86_64 1:0.221-136.el6_6.1 updates
perl-pmtools.noarch 1.10-3.el6 epel
perl-prefork.noarch 1.04-2.el6 base
perl-redland.x86_64 1.0.7.1-1.el6 epel
更に詳細な情報を検索するためには「パッケージ名.アーキテクチャ」で info 検索します。
$ yum info perl-parent.x86_64
Installed Packages
Available Packages
Name : perl-parent
Arch : x86_64
Epoch : 1
Version : 0.221
Release : 136.el6_6.1
Size : 27 k
Repo : updates
Summary : Establish an ISA relationship with base classes at compile time
URL : http://www.perl.org/
License : GPL+ or Artistic
Description : parent allows you to both load one or more modules, while setting up
: inheritance from those modules at the same time. Mostly similar in
: effect to:
:
: package Baz;
:
: BEGIN {
: require Foo;
: require Bar;
:
: push @ISA, qw(Foo Bar);
: }
rpmにはレポジトリという概念がないため、インストールされているrpmパッケージ一覧から検索します。
$ rpm -q perl
(or $ rpm --query perl)
perl-5.10.1-136.el6.i686
↑ perl:パッケージ名, 5.10.1:バージョン, 136.el6:リリース番号, i686:アーキテクチャ(動作可能なCPU情報)
$ rpm -q hoge
パッケージ hoge はインストールされていません。
$ rpm -qa | grep mysql
(or $ rpm --query --all | grep mysql)
mysql-5.1.73-3.el6_5.i686
mysql-libs-5.1.73-3.el6_5.i686
mysql-server-5.1.73-3.el6_5.i686
configファイルなどの場所探しに重宝します。
$ rpm -ql mysql-libs
(or $ rpm --query --list mysql-libs)
/etc/ld.so.conf.d/mysql-i386.conf
/etc/my.cnf
...
$ rpm -qf /etc/my.cnf
(or $ rpm --query --file /etc/my.cnf)
mysql-libs-5.1.73-3.el6_5.i686
ある "rpmパッケージファイル" に含まれるファイル一覧を表示します。実際にインストールすると、それらのファイルが設置されます。
$ rpm -qpl /path/to/sample.rpm
(or $ rpm --query --package --list /path/to/sample.rpm)
...
/usr/src/debug/x264-20090319/simd/encoder/ratecontrol.c
/usr/src/debug/x264-20090319/simd/encoder/rdo.c
/usr/src/debug/x264-20090319/simd/encoder/set.c
/usr/src/debug/x264-20090319/simd/encoder/slicetype.c
...
$ rpm -qpl http://www.example.com/path/to/sample.rpm
(or $ rpm --query --package --list http://www.example.com/path/to/sample.rpm)
...
/usr/src/debug/x264-20090319/simd/encoder/ratecontrol.c
/usr/src/debug/x264-20090319/simd/encoder/rdo.c
/usr/src/debug/x264-20090319/simd/encoder/set.c
/usr/src/debug/x264-20090319/simd/encoder/slicetype.c
...
$ yum install perl
$ rpm -ivh /path/to/sample.rpm
(or $ rpm --install --verbose --hash /path/to/sample.rpm)
↑ 'hash' は '#' をプログレスバーのように表示するオプション
指定したrpmパッケージに依存しているrpmパッケージもアンインストールされます。
$ yum remove perl
指定したrpmパッケージに依存しているrpmパッケージがある場合はエラーが表示されます。
$ rpm -e perl
(or $ rpm --erase perl)
yum deplist gcc-c++
インストール中にプロセスを kill したこと等が原因で管理情報が壊れてしまった場合は、以下のコマンドでキャッシュを削除します。
削除前
$ du -hs /var/cache/yum/
82M /var/cache/yum/
削除
$ sudo yum clean all
$ du -hs /var/cache/yum/
35M /var/cache/yum/
上述の通り yum コマンドはパッケージをレポジトリから検索およびインストールします。OS に標準で設定されているものは base レポジトリとよばれます。base レポジトリに登録されているパッケージは比較的古いものが多く、最新のバージョンをインストールしたい場合には追加でレポジトリを登録する必要があります。ここでは、有名な epel, remi, repoforge レポジトリの三つを追加します。
具体的には base レポジトリが格納されている以下のディレクトリに epel.repo, remi.repo, rpm.repo の三つを設置します。
$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
深く考えると混乱しそうですが、RPM レポジトリ epel, remi, repoforge の RPM パッケージをダウンロードします。
こちらのダウンロードリンク集から目的のものを探します。ここでは CentOS 6 を想定して 6/ をクリックします。次に、マシンの CPU が 32bit の場合は i386, 64bit の場合は x86_64 をクリックします。最後に「epel-release」という名称のファイルを探して wget などでダウンロードします。
こちらの公式サイトトップページにアクセスします。CentOS 6 を想定して、ページ内にある「remi-release-6.rpm」を wget などでダウンロードします。
こちらのダウンロードリンク集から目的のものを探します。ここでは CentOS 6 を想定して EL 6 を対象とします。そのうち、マシンの CPU が 32bit であれば i386, 64bit であれば x86_64 を wget などでダウンロードします。
本ページの上部に記載してあるように、インストールする前に RPM パッケージ内に格納されている設置予定のファイル一覧を閲覧できます。
$ rpm -qpl epel-release-6-8.noarch.rpm
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
/etc/rpm/macros.ghc-srpm
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/epel.repo
/usr/share/doc/epel-release-6
/usr/share/doc/epel-release-6/GPL
$ rpm -qpl remi-release-6.rpm
/etc/pki/rpm-gpg/RPM-GPG-KEY-remi
/etc/yum.repos.d/remi.repo
$ rpm -qpl rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/rpmforge-extras.list
/etc/apt/sources.list.d/rpmforge-testing.list
/etc/apt/sources.list.d/rpmforge.list
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-fabian
/etc/smart
/etc/smart/channels
/etc/smart/channels/rpmforge.channel
/etc/sysconfig/rhn
/etc/sysconfig/rhn/sources.rpmforge.txt
/etc/yum.repos.d
/etc/yum.repos.d/mirrors-rpmforge
/etc/yum.repos.d/mirrors-rpmforge-extras
/etc/yum.repos.d/mirrors-rpmforge-testing
/etc/yum.repos.d/rpmforge.repo
/usr/share/doc/rpmforge-release-0.5.3
/usr/share/doc/rpmforge-release-0.5.3/RPM-GPG-KEY-rpmforge-dag
/usr/share/doc/rpmforge-release-0.5.3/RPM-GPG-KEY-rpmforge-fabian
/usr/share/doc/rpmforge-release-0.5.3/mirrors-rpmforge.yum
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.apt
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.smart
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.up2date
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.yum
$ sudo rpm -ivh epel-release-6-8.noarch.rpm
$ sudo rpm -ivh remi-release-6.rpm
$ sudo rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
base レポジトリ以外は明示的に指定しない場合は有効化されない設定にしておくとよいとされます。
$ sudo vi /etc/yum.repos.d/epel.repo
$ sudo vi /etc/yum.repos.d/remi.repo
$ sudo vi /etc/yum.repos.d/rpmforge.repo
によって
enabled=1
となっている箇所をすべて
enabled=0
に変更して保存します。remi.repo については既定で =0 になっているはずです。
$ yum --enablerepo=epel,remi,rpmforge list mysql
実行結果例
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp ← base, epel, remi, rpmforge すべてが有効になっていることが分かります。
* epel: ftp.kddilabs.jp (extras, updates についても CentOS-Base.repo で enabled=1 されています)
* extras: ftp.nara.wide.ad.jp
* remi: remi.kazukioishi.net
* rpmforge: ftp.kddilabs.jp
* updates: ftp.nara.wide.ad.jp
Available Packages
mysql.x86_64 5.5.41-1.el6.remi remi
remi レポジトリに MySQL 5.5 が存在することが分かりました。例えば下記コマンドでインストールしましょう。
$ sudo yum --enablerepo=remi install mysql
($ sudo yum --enablerepo=remi install mysql-server)
($ sudo yum --enablerepo=remi install mysql-devel)
無事インストールされました。
$ sudo service mysqld start
Starting mysqld: [ OK ]
$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.41 MySQL Community Server (GPL) by Remi
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
epel, remi, repoforge のうち epel レポジトリについては RPM を手動でダウンロードおよびインストールしなくても、 base レポジトリ内に含まれる epel-release RPM を yum install すればレポジトリが使用可能になります。
$ sudo yum install epel-release
apt コマンド (あるいは apt-cache
, apt-get
) と以下の dpkg
コマンドで操作します。Albert ランチャーの場合は以下のようになります。
インストール
dpkg -i albert_0.14.19_amd64.deb
インストールされているパッケージの表示
dpkg -l | grep albert
apt list --installed
パッケージによって設置されたファイルの確認
dpkg -L albert
パッケージのアンインストール
dpkg -r albert
あるファイルをインストールしたパッケージを特定
dpkg -S /usr/bin/supervisorctl
apt remove
しただけでは以下のように rc 状態になることがあります。
$ dpkg -l | grep mysql
rc mysql-apt-config 0.8.10-1 all Auto configuration for MySQL APT Repo.
rc mysql-common 5.8+1.0.2 all MySQL database common files, e.g. /etc/mysql/my.cnf
rc mysql-community-client 5.7.23-1debian9 amd64 MySQL Client
rc mysql-community-server 5.7.23-1debian9 amd64 MySQL Server
これは設定ファイル等が残っている状態です。以下のようにして設定ファイルを削除できます。
$ sudo apt purge mysql-apt-config
$ sudo apt purge mysql-common
$ sudo apt purge mysql-community-client
$ sudo apt purge mysql-community-server
$ dpkg -l | grep mysql | wc -l
0
古いパッケージは https://snapshot.debian.org を利用してインストールできます。例えば linux-headers-4.9.0-9-amd64
を debian9 (stretch) にインストールしたい場合を考えます。
# apt install linux-headers-`uname -r`
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-headers-4.9.0-9-amd64
E: Couldn't find any package by glob 'linux-headers-4.9.0-9-amd64'
E: Couldn't find any package by regex 'linux-headers-4.9.0-9-amd64'
こちらのページ の source packages または binary packages から検索すると以下の候補が見つかります。
最新バージョンの 4.9.168-1+deb9u5
をクリックすると debian-security on 2019-08-13 05:32:01
が見つかります。
apt の設定を追加します。
sudo vi /etc/apt/sources.list
deb https://snapshot.debian.org/archive/debian/20190813T053201Z/ stretch main
deb-src https://snapshot.debian.org/archive/debian/20190813T053201Z/ stretch main
deb https://snapshot.debian.org/archive/debian-security/20190813T053201Z/ stretch/updates main
deb-src https://snapshot.debian.org/archive/debian-security/20190813T053201Z/ stretch/updates main
パッケージリストを更新します。
sudo apt install apt-transport-https
sudo apt update -o Acquire::Check-Valid-Until=false
以下のようにインストールできるようになっています。
sudo apt install linux-headers-4.9.0-9-amd64
sudo apt list --installed | grep linux-headers
linux-headers-4.9.0-9-amd64/oldstable,now 4.9.168-1+deb9u5 amd64 [installed]
linux-headers-4.9.0-9-common/oldstable,now 4.9.168-1+deb9u5 all [installed,automatic]