パッケージ管理システム
この記事の正確性に疑問が呈されています。 |
パッケージ管理システムとは、OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステムである。
主な機能
以下はパッケージ管理システムに典型的な機能である。ただし、必ずしもすべての機能が備わっているとは限らない。
- レポジトリの購読
- インターネット上(やインストールCD上)のパッケージレポジトリを指定して、必要に応じてローカルのパッケージリストを更新する。また、パッケージ名や説明を検索して必要なパッケージを探すことができる。
- ソフトウェアパッケージのインストール・削除
- パッケージ名やパッケージファイルを指定してソフトウェアのダウンロードや完全性の検証、インストールをすることができる。ソースコードや設定ファイルをパッケージ化して、インストールすることができる。設定ファイルなどを完全に削除することもできる。
- 依存関係の解決
- あるパッケージに必要なソフトウェアを自動的にインストールしたり更新することができる。また、同時にインストールまたは更新できないソフトウェアパッケージのインストールや更新を回避できる。
- 設定管理
- パッケージの設定スクリプトを使って、自動的に設定を行える。競合する機能をもつソフトウェアで、どちらを優先して使うかを設定できる。
パッケージ形式
OSになんらかのソフトウェアを追加インストールする場合には、ソフトウェアに関係するファイル一式をまとめた「パッケージ」が利用される。パッケージの形式は複数あるが、利用される形式はOSによって限定されることが多い。
実行形式でないもの
以下のパッケージには、インストールされるデータ・依存関係のみが含まれており、OSに搭載されているパッケージ管理システムを用いることでインストールできる。
- RPM形式パッケージ
- Red Hat Linux用に開発されたパッケージ形式。Red Hat Enterprise LinuxのほかTurbolinuxやVine Linux等でも利用される。
- deb形式パッケージ
- Debian用に開発されたパッケージ形式。dpkgやAPTを用いてインストール・管理される。
- ports形式パッケージ
- FreeBSDで利用されるパッケージ形式。
- pkg形式パッケージ
- Solarisで利用されるパッケージ形式。
実行形式
ソフトウェアのアーカイブにインストール処理を行う仕組みを追加した形式。Mac OSやWindowsでよく使われ、Linuxディストリビューション向けのソフトウェアでも稀に利用される。依存関係の解決・インストールは、パッケージが独自に行う。
- InstallShieldベースのパッケージ
- InstallShieldは、Windowsをはじめ、Mac OS XやLinux等の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やFedora、CentOSなどで標準として採用されている。
rPath系Linux
- Conary
- ConaryはForesight LinuxやrPath Linuxにより採用され、RPM、CVS、Portageなどの優れた点を集め、さらにいくつか優れた機能を追加し、明解なリビジョン・コントロールを行う先進的な次世代パッケージ管理システムである。Conaryはアップデートされる必要があるパッケージにおいて、特定のファイルのみをアップデートするので、RPMやdebなどパッケージ全体がダウンロードされる他のフォーマットよりも効率的である。
Gentoo Linux
- portage
- Gentoo Linuxでは、ソフトは原則的にソースをコンパイルしてインストールするようになっている。このため、マシンごとに最適化された、無駄の少ない環境を構築できる。ただし、インストールに多くの時間がかかる。OpenOffice.org や Adobe Reader などのバイナリパッケージもある。FreeBSD の ports に着想を得て開発された。FreeBSD や Mac OS X にも移植されている。
openSUSE
- YaST
- rpm 形式パッケージを対象とした SuSE Linux で開発されたツール。YaST は単なるパッケージ管理ツールではなく、統合的なシステム管理ツールである。
Slackware
- pkgtool
- Slackware標準のパッケージ管理ツール。APTやYumと比較して極めてシンプルなツールであり、バージョン管理は行えない。
- slackpkg
- Slackwareで使用できるパッケージ管理ツール。標準ではインストールされない。Slackware標準パッケージしか扱えないものの、インストールすればAPTやYumのようなバージョン管理をSlackwareで実現することができる。
- sbopkg
- Slackware用リポジトリ、SlackBuilds.org用のパッケージ管理ツール。上記のとおり、slackpkgではサードパーティパッケージを扱えないため、独自に提供されている。
ディストリビューション非依存
- nix
- Debian、openSUSE、Fedora等多数のディストリビューションに対応した環境非依存型パッケージ管理ツール。既存環境の依存関係に関わりなくサードパーティ製ソフトウェアをインストールできるうえ、旧来のパッケージ管理ツールでは実現できなかった同一ソフトウェアの複数バージョン共存が実現できる。
FreeBSD
- ports
- 原則的にソースをコンパイルしてインストールするようになっている。このため、PCごとに最適化された、無駄の少ない環境を構築できる。ただし、インストールに長時間かかる。FreeBSDにはこの他にPackagesというバイナリパッケージも存在し、こちらはコンパイルを行わないため時間を要しない。
NetBSD
- pkgsrc
- 原則的にソースをコンパイルしてインストールするようになっている。このため、PCごとに最適化された、無駄の少ない環境を構築できる。ただし、インストールに長時間かかる。また、OSには依存せず、NetBSD以外にも Linux や Mac OS X、Solaris などでも使える。