パッケージ管理システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
APTのコマンドラインフロントエンド apt-get でパッケージの更新を行っている様子

パッケージ管理システムとは、OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステムである。

主な機能[編集]

以下はパッケージ管理システムに典型的な機能である。ただし、必ずしもすべての機能が備わっているとは限らない。

レポジトリの購読
インターネット上(やインストールCD上)のパッケージレポジトリを指定して、必要に応じてローカルのパッケージリストを更新する。また、パッケージ名や説明を検索して必要なパッケージを探すことができる。
ソフトウェアパッケージのインストール・削除
パッケージ名やパッケージファイルを指定してソフトウェアのダウンロードや完全性の検証、インストールをすることができる。ソースコードや設定ファイルをパッケージ化して、インストールすることができる。設定ファイルなどを完全に削除することもできる。
依存関係の解決
あるパッケージに必要なソフトウェアを自動的にインストールしたり更新することができる。また、同時にインストールまたは更新できないソフトウェアパッケージのインストールや更新を回避できる。
設定管理
パッケージの設定スクリプトを使って、自動的に設定を行える。競合する機能をもつソフトウェアで、どちらを優先して使うかを設定できる。

パッケージ形式[編集]

OSになんらかのソフトウェアを追加インストールする場合には、ソフトウェアに関係するファイル一式をまとめた「パッケージ」が利用される。パッケージの形式は複数あるが、利用される形式はOSによって限定されることが多い。

実行形式でないもの[編集]

以下のパッケージには、インストールされるデータ・依存関係のみが含まれており、OSに搭載されているパッケージ管理システムを用いることでインストールできる。

RPM形式パッケージ
Red Hat Linux用に開発されたパッケージ形式。Red Hat Enterprise LinuxのほかTurbolinuxVine Linux等でも利用される。
deb形式パッケージ
Debian用に開発されたパッケージ形式。dpkgAPTを用いてインストール・管理される。
ports形式パッケージ
FreeBSDで利用されるパッケージ形式。
pkg形式パッケージ
Solarisで利用されるパッケージ形式。

実行形式[編集]

ソフトウェアのアーカイブにインストール処理を行う仕組みを追加した形式。Mac OSWindowsでよく使われ、Linuxディストリビューション向けのソフトウェアでも稀に利用される。依存関係の解決・インストールは、パッケージが独自に行う。

InstallShieldベースのパッケージ
InstallShieldは、Windowsをはじめ、Mac OS XLinux等のPC-UNIX向けのインストーラーを作成できる。
シェルスクリプトベースのパッケージ
主にBashで書かれ、複数のディストリビューションを対象としたLinux向けのプロプライエタリソフトウェアに用いられる形式。

この他、ソフトウェアのソースコードがアーカイブされたパッケージも存在する。LinuxやFreeBSD等を含むUNIX系OS等では、おもにtar.gz形式やtar.bz2形式などで配布されている。利用者は対象とするPC環境に合わせて構成やコンパイル等の作業を行った上でインストールする。多くの場合、Autotoolsによって作成された「configure」という名前のシェルスクリプトが付属しており、これを実行することでその環境における依存関係の確認や、コンパイルのためのMakefileの作成が行われる。ソースコードと、コンパイルのために必要なパッケージ(ビルド依存)は、パッケージ管理システムの機能を利用してダウンロードできる場合もある。

パッケージを扱うツール[編集]

Debian系Linux[編集]

パッケージ管理システムの自動更新機能。
図は、アップデート・マネージャ(update-manager)の画面。
dpkg
deb形式パッケージを対象としたDebian GNU/Linuxで開発されたツール。
APT
deb形式を対象として開発された、dpkgの高機能フロントエンド。apt-getやapt-cache等の複数のコマンドから成る。配布パッケージの自動入手先として、インターネット,LAN,CD-ROM等をapt-lineとして複数指定することができる。追加インストールのほか、導入済パッケージのアップデート作業も自動処理できる。Debianから派生したディストリビューションでは、それぞれ個別のapt-lineを用意していることが多い。
aptitude
TUI上で動くメニュー形式のツール。内部的にAPTを呼び出す仕組みで、DebianのOSインストール中にも、aptitudeが呼び出されるようになっている。
synaptic
GUI(X Window System)上で動くメニュー形式のツール。内部的にAPTを呼び出し処理する。
apt-watch / update-manager
GUI上で動く、自動更新アプレット。Red Hat社のパッケージ管理ツールである RHN と類似した機能を有することが特徴である。内部的に APT を呼び出し処理する。

Red Hat系Linux[編集]

RPM
rpm 形式パッケージを対象とした Red Hat Linux で開発されたツール。単純なインストールのほか、src.rpm 形式や nosrc.rpm 形式 + ソースアーカイブなどを使って、ソースからの rebuild を行い rpm パッケージを生成する機能もある。以下のパッケージ管理ツールはいずれも RPM を置き換えるものではなく、RPM をバックエンドとして利用し、より高度な機能を提供している。
apt-rpm、aptitude、synaptic
本来 deb 形式対応のこれらのツールは RPM 対応版が作成され、Fedora や Vine Linux 等で利用されている。
TurboPackage
rpm 形式パッケージを対象とした Turbolinux で開発されたツール。
up2date
rpm 形式パッケージを対象にした Red Hat 社のパッケージ管理ツール。同社の Red Hat Enterprise Linux (バージョン4まで)で採用されている。Fedora の古いバージョンでも採用されていた。
Yum
rpm 形式パッケージを対象とした Yellow Dog Linux で開発されたツール。Red Hat Enterprise LinuxやCentOSなどで標準として採用されている。Fedoraではバージョン21まで標準で採用されていた。
DNF
rpm 形式パッケージを対象としたYumからフォークして開発されたツール。Fedoraではバージョン22より標準として採用された。

rPath系Linux[編集]

Conary
ConaryForesight LinuxrPath Linuxにより採用され、RPM、CVSPortageなどの優れた点を集め、さらにいくつか優れた機能を追加し、明解なリビジョン・コントロールを行う先進的な次世代パッケージ管理システムである。Conaryはアップデートされる必要があるパッケージにおいて、特定のファイルのみをアップデートするので、RPMやdebなどパッケージ全体がダウンロードされる他のフォーマットよりも効率的である。

Gentoo Linux[編集]

Gentoo Linuxでは原則として、ソフトウェアをソースコードからコンパイルしてインストールするようになっている。そのため、最適化された効率的で高速なシステムを構築可能である。しかし、コンパイルするために多くの時間と演算処理を要する。

インストールするソフトウェア自体は公式のものかミラーサイトからダウンロードするため、Gentoo Linuxにおけるパッケージの本体部分は、インストール手順が書かれたBashスクリプトである。

Mozilla FirefoxLibreOfficeなどはコンパイルに時間がかかるため、バイナリパッケージも用意されている。Adobe FlashGoogle Chromeなどのプロプライエタリ・ソフトウェアも、公式に配布されているバイナリファイルをダウンロードしてインストールすることが可能なようになっている。

Gentoo Linuxのパッケージ管理システムは当初はPortageのみであったが、現在では規格として標準化されているため、承認されたパッケージ管理システムが複数あり、そのいずれかを使用することになる。

Portage
Gentoo Linuxのデフォルトのパッケージ管理システムである。プログラミング言語にはスクリプト言語であるPythonを採用して書かれている。FreeBSD の ports に着想を得て開発された。Gentoo Linuxの他にも、FreeBSD や Mac OS X にも移植されている。
Paludis
Gentoo Linuxから派生したディストリビューションであるExherbo Linuxのパッケージ管理システムであり、Gentoo Linuxでも使用可能になっている。プログラミング言語には主にC++が用いられている。
pkgcore
Portageと互換性が高くこれに代替しうる、より効率的なパッケージ管理システムを目指してつくられた。主にPythonで書かれている。

openSUSE[編集]

YaST
rpm 形式パッケージを対象とした SuSE Linux で開発されたツール。YaST は単なるパッケージ管理ツールではなく、統合的なシステム管理ツールである。

Slackware[編集]

pkgtool
Slackware標準のパッケージ管理ツール。APTやYumと比較して極めてシンプルなツールであり、バージョン管理は行えない。
slackpkg
Slackwareで使用できるパッケージ管理ツール。標準ではインストールされない。Slackware標準パッケージしか扱えないものの、インストールすればAPTやYumのようなバージョン管理をSlackwareで実現することができる。
sbopkg
Slackware用リポジトリ、SlackBuilds.org用のパッケージ管理ツール。上記のとおり、slackpkgではサードパーティパッケージを扱えないため、独自に提供されている。

Arch Linux[編集]

pacman
Arch Linux 向けに開発されたパッケージ管理ツール。コンパイル済みバイナリとパッケージ情報を含んだ独自の .pkg.tar.xz フォーマットを用いる。

ディストリビューション非依存[編集]

nix
Debian、openSUSE、Fedora等多数のディストリビューションに対応した環境非依存型パッケージ管理ツール。既存環境の依存関係に関わりなくサードパーティ製ソフトウェアをインストールできるうえ、旧来のパッケージ管理ツールでは実現できなかった同一ソフトウェアの複数バージョン共存が実現できる。

FreeBSD[編集]

ports
原則的にソースをコンパイルしてインストールするようになっている。このため、PCごとに最適化された、無駄の少ない環境を構築できる。ただし、インストールに長時間かかる。FreeBSDにはこの他にPackagesというバイナリパッケージも存在し、こちらはコンパイルを行わないため時間を要しない。

NetBSD[編集]

pkgsrc
原則的にソースをコンパイルしてインストールするようになっている。このため、PCごとに最適化された、無駄の少ない環境を構築できる。ただし、インストールに長時間かかる。また、OSには依存せず、NetBSD以外にも Linux や Mac OS X、Solaris などでも使える。

Mac OS X[編集]

MacPortsFinkHomebrewなどがある。

関連項目[編集]