UNIX/Linuxの部屋 用語集:パッケージの探し方


※空白区切りで AND 検索 (例:「ファイル 削除」)

用語集 パッケージの探し方 UNIX/Linux におけるパッケージ名の確認方法や探し方について

最終更新


UNIX/Linux においては、外部パッケージが提供されており、簡単にインストールすることができる。しかしながらパッケージの名前やパッケージの分け方にいろいろクセがあるので、パッケージ名を確認する方法やパッケージの探し方のコツを述べる。


パッケージ検索
パッケージを検索したい場合、下記から検索するとよい。パッケージ名・説明・ファイル名などで検索が可能である。
FreeBSD の場合:
RedHat 系 OS (RedHat Enterprise Linux・CentOS・Amazon Linux 等) の場合:
Ubuntu の場合:
Ubuntu パッケージ検索 https://packages.ubuntu.com/ja/

また、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- が先頭に付く。