用語集
パッケージの探し方
UNIX/Linux におけるパッケージ名の確認方法や探し方について
最終更新 2017-05-23
UNIX/Linux においては、外部パッケージが提供されており、簡単にインストールすることができる。しかしながらパッケージの名前やパッケージの分け方にいろいろクセがあるので、パッケージ名を確認する方法やパッケージの探し方のコツを述べる。
● パッケージ検索
パッケージを検索したい場合、下記から検索するとよい。パッケージ名・説明・ファイル名などで検索が可能である。
FreeBSD の場合:
RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) の場合:
Ubuntu の場合:
また、RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) の場合は、yum コマンドなどを使ってコマンドラインから検索することもできる。
以下、パッケージ名称の典型的なパターンを示す。
● コマンド単体系
パッケージ名とコマンド名が同じ、という一番わかりやすいパターンが多い。例えば Linux の RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) の telnet パッケージをインストールすると、telnet コマンドと telnet のマニュアルのみがインストールされる。
/usr/bin/telnet
/usr/share/man/man1/telnet.1.gz
● クライアント・サーバ
Linux の RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) では、MySQL は以下のように分割されている。
mysql … mysql コマンドなどのクライアントと、それが利用するライブラリ
mysql-server … mysqld などのサーバ
mysql-libs … mysql・mysql-server が共通で利用する設定ファイル (/etc/my.cnf 等) やライブラリ等
一方で、FreeBSD や Ubuntu では
mysql-client … mysql コマンドなどのクライアント
mysql-server … mysqld などのサーバ
と分かれている。
● ライブラリ
ライブラリとは
/usr/lib/libc.a
/usr/lib/libc.so
/lib64/libc-2.12.so
などに置かれる、プログラムの共通部品である。パッケージ内にコマンドとライブラリ両方が含まれている場合もあるし、ライブラリが単体でパッケージとして提供されているものもある。
そのライブラリを開発するためのプロジェクトが存在する場合、libXXX や XXXlib というパッケージ名で提供されることが多い。
libpng … 画像フォーマット PNG に関するライブラリ。libpng プロジェクトが開発している。
libiconv … 文字エンコーディング変換のライブラリ。GNU プロジェクトのひとつ
zlib … 圧縮・伸長ライブラリ。zlib プロジェクトにて開発している。
一方、コマンドなどと一体となって開発されているライブラリであるが、OS またはディストリビューションの判断でライブラリが別に提供されているものもある。例えば bzip2 は、オフィシャルのソースをビルドすると、bzip2 コマンドと libbz2.so などのライブラリが生成されるが、配布物としては "bzip2" である。
しかしながら、bzip2 のライブラリを利用している (bzip2 プロジェクトとは直接関係のない) コマンドが存在するため、ディストリビューターはライブラリを切り出したいと考えた。このような場合、lib または libs という名前が付くことが多い。
その結果、Linux の RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) では、
bzip2 パッケージ … bzip2 などのコマンドやマニュアル
bzip2-libs パッケージ … /lib64/libbz2.so.1.0.4 などのライブラリ
という分け方をしている。一方、Ubuntu では
bzip2 パッケージ … コマンド
libbz2 パッケージ … ライブラリ
という名前で分けている。オフィシャルの配布物で分かれていないものを、各ディストリビューションの都合で分割したので、名前が統一されていないわけだ (ちなみに lbzip2 というマルチコア対応の gzip2 もあるが、これはライブラリではない)。
一方、FreeBSD では bzip2 パッケージがコマンドとライブラリを提供し、bzip2 のライブラリを使うコマンドは bzip2 に依存関係がある、と定義することになっている。
RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) では、スタティックリンク用のライブラリ (libc.a など) はパッケージ名に static が付けられているようだ。
glibc-static
libxml2-static
● GNU 系
Linux ではおおむね GNU 系のコマンドが入っているが、FreeBSD などの BSD 標準コマンドではなんらかの問題があり、あえて GNU 系のコマンドを使いたい場合がある。その場合、gnu- または g で始まるパッケージが用意されていることがある (しかしながら patch のように gnu も g もつかないものをあるようだ)
以下は FreeBSD の ports をざっと見て、FreeBSD 標準コマンドで存在するが、別途 GNU のパッケージも用意されているものをリストアップしたものである (2017/05 調査)。
gawk パッケージ … GNU の awk コマンド
gcpio パッケージ … GNU の cpio コマンド
getopt パッケージ … GNU の getopt コマンド
gindent パッケージ … GNU の indent コマンド
gmake パッケージ … GNU の make コマンド
gnu-watch パッケージ … GNU の watch コマンド
gnubc パッケージ … GNU の bc・dc コマンド
gnugrep パッケージ … GNU の grep コマンド
gnuls パッケージ … GNU の ls コマンド
groff パッケージ … GNU の roff コマンド
gtar パッケージ … GNU の tar コマンド
binutils パッケージ … GNU の ld・as・gprof・strings・strip コマンドなど
findutils パッケージ … GNU の find・locate・updatedb・xargs コマンド
diffutils パッケージ … GNU の diff・diff3・cmp・sdiff コマンド
shtool パッケージ … 各 OS で非互換性が発生してしまったコマンドの作り直し版
patch パッケージ … GNU の patch コマンド
上記でインストールされるコマンドは、おおむね先頭に g が付くようになっているが、gnubc だと g なしで /usr/local/bin/bc、/usr/local/bin/dc としてインストールされるような気がする (未確認)。
● devel
devel とついているパッケージは、開発者向けのヘッダファイルやコマンドを含むことが多い。そのパッケージ自体のビルドを行いたいときや、そのパッケージを利用する別パッケージのビルドを行いたい場合にインストールするとよい。
例えば zlib-devel であれば
/usr/include/zconf.h
/usr/include/zlib.h
/usr/share/doc/zlib-devel-1.2.3/example.c
/usr/share/man/man3/zlib.3.gz
のように、ヘッダファイル・サンプルソース・ライブラリのマニュアルなどが含まれている。
● 名前がわかりづらいもの
Apache HTTP Server は、Linux の RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) でのパッケージ名は httpd であるが、FreeBSD や Ubuntu では apache である。
前者は、Apache HTTP Server のソースアーカイブは httpd-2.xx.tar.gz などであることから httpd としたのであろう。後者は Apache と言えば昔は Apache HTTP Server の開発グループであったため apache としたのであろう。現在の Apache は多種多様なソフトウェアを作成する財団であるため、apache-httpd とすべきではと思うが、今更変えるメリットもないし、パッケージ名を他プロジェクトとあわせるメリットも特にないので放置されているのであろう。
Apache ソフトウェア財団が作成しているソフトウェアについて、apache が付いているかはバラバラである。例えばビルドツールの Apache Ant は下記のとおり。
FreeBSD では apache-ant パッケージ
RedHat 系 OS では ant パッケージ
Ubuntu では ant パッケージ
例えば Apache Tomcat は、FreeBSD・RedHat 系 OS・Ubuntu いずれも tomcat パッケージである。
● 開発言語系
Perl・Python・PHP などのモジュール名の規則はいろいろである。
Perl の場合:
FreeBSD では Perl5 のモジュールは p5- から始まる。例えば HTTP::Cookies モジュールは、p5-HTTP-Cookies パッケージに含まれる (Perl6 はどうするんだろう)
Linux の RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) では、Perl モジュールは perl から始まる。例えば URI::Encode モジュールは perl-URI-Encode パッケージにに含まれる。
Ubuntu では lib*-perl となる。例えば Exception::Handler モジュールは libexception-handler-perl パッケージに含まれる。
Python の場合:
FreeBSD では Python2系は py27-、Python3系は py36- が先頭に付く (そのうち py37 になるのだろうか)。
RedHat 系 OS では 先頭の python-、python3-、python34-、末尾の -python など、いろいろあってよくわからない。
Ubuntu では Python2系は python-、Python3系は python3- が先頭に付く。