利用者:STS2657/sandbox/3
このページ内容に問題がある場合、利用者:STS2657へ連絡してください。了承のない勝手な編集をしてはなりません。 |
ここはSTS2657さんの利用者サンドボックスです。編集を試したり下書きを置いておいたりするための場所であり、百科事典の記事ではありません。ただし、公開の場ですので、許諾されていない文章の転載はご遠慮ください。
登録利用者は自分用の利用者サンドボックスを作成できます(サンドボックスを作成する、解説)。 その他のサンドボックス: 共用サンドボックス | モジュールサンドボックス 記事がある程度できあがったら、編集方針を確認して、新規ページを作成しましょう。 |
この記事の正確性に疑問が呈されています。 |
パッケージ管理システム(パッケージかんりシステム)、またはパッケージマネージャーとは、コンピュータのプログラムを一貫した方法でインストールやアンインストール、ライブラリなどの依存関係を解決する流れをツールによって管理を自動化するシステムである[1][2]。
パッケージ管理システムが定める、ソースまたはバイナリをパッケージしたアーカイブがある。このパッケージファイルにはソフトウェア名、説明、バージョンナンバー、ベンダー、チェックサム、ソフトウェアが正常に動作するよう依存関係のリストなどがメタデータに含まれている。メタデータはパッケージをツールでインストールした際にローカルのデータベースに保存する。ツールはソフトウェアの整合性や前提条件の欠落を防ぐために、依存関係とバージョン情報のデータベースを維持する。
パッケージ形式
[編集]- RPM形式パッケージ
- Red Hat Linux用に開発されたパッケージ形式。Red Hat Enterprise LinuxのほかTurbolinuxやVine Linux等でも利用される。
- deb形式パッケージ
- Debian用に開発されたパッケージ形式。dpkgやAPTを用いてインストール・管理される。
- ports形式パッケージ
- FreeBSDで利用されるパッケージ形式。
- pkg形式パッケージ
- Solarisで利用されるパッケージ形式。FreeBSD 10.0でも、以前はpkgngと呼ばれていた形式がpkg(8)として採用されている[3]。
- InstallShieldベースのパッケージ
- InstallShieldは、Windowsをはじめ、macOSやLinux等のPC-UNIX向けのインストーラーを作成できる。
- シェルスクリプトベースのパッケージ
- 主にBashで書かれ、複数のディストリビューションを対象としたLinux向けのプロプライエタリソフトウェアに用いられる形式。
ツール
[編集]OS
[編集]ツール | 主要OS | 内容と出典 |
---|---|---|
dpkg | Debian系 | Debian系での主要なパッケージ管理プログラム。deb形式パッケージを対象にインストールやアンインストールなどを行う[4]。 |
APT(Advanced Package Tool) | deb形式パッケージを対象として開発された、dpkg のフロントエンドで、dpkgに依存する。
| |
aptitude | テキストユーザインタフェース上で動くメニュー形式のツール。内部的にapt を呼び出す仕組みであるため、APTに依存する。
|
プログラミング
[編集]プログラミング言語においては、プログラムのソースコードを管理するために、パッケージ管理システムが使われる。その性質からほとんどがソースコード形式で管理・配布されている。
ツール | 主要言語 | 内容と出典 |
---|---|---|
Cargo | Rust | CargoはRust言語製ソフトウェアプロジェクト("crate" と呼ばれる)のCUIのビルドツールであり、パッケージ管理システムの機能も備わっている[5]。 |
CocoaPods | Objective-C / Swift | Objective-Cランタイムで動作する、Objective-C、Swift向けパッケージ管理システムである。 |
Composer[6] | PHP | [7] |
Conan | C言語 / C++ | |
CPAN | Perl | |
CRAN | R言語 | |
Conda | Python | 科学計算のためのPythonプラットフォームAnacondaの一部として提供されているPythonパッケージ管理システム。 |
DUB | D言語 | |
elm-package | Elm | |
Fantom | fantom | BuildPodはfantom言語用のパッケージ管理システムであり、fantomのプログラムと("pod" と呼ばれる)ライブラリの配布用標準フォーマットを提供している。 |
GoMod | Go | GoModはGo言語用のパッケージ管理システムであり、Goのプログラムと("mod" と呼ばれる)ライブラリの配布用標準フォーマットを提供している。 |
Maven | Java | |
npm | JavaScript | Node.jsで扱うパッケージ管理システム。 |
NuGet[8] | .NET Framework(C++、C#など) | [9] |
pip | Python | Pythonの標準的なパッケージ管理システム。condaと違いマシン単位で依存パッケージを管理する。 |
Pub | Dart | PubはDart言語製ソフトウェアプロジェクトのCUIのビルドツールであり、パッケージ管理システムの機能をも持つ。 |
RubyGems | Ruby | RubyGemsはRuby言語用のパッケージ管理システムであり、Rubyのプログラムと("gem" と呼ばれる)ライブラリの配布用標準フォーマットを提供している。 |
Debian系
[編集]- 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上で動く、自動更新アプレット。レッドハットのパッケージ管理ツールである RHN と類似した機能を有することが特徴である。内部的に APT を呼び出し処理する。
Red Hat系
[編集]- RPM
- rpm形式パッケージを対象とした Red Hat Linux で開発されたツール。単純なインストールのほか、src.rpm形式やnosrc.rpm形式 + ソースアーカイブなどを使って、ソースからのリビルドを行いrpmパッケージを生成する機能もある。以下のパッケージ管理ツールはいずれも RPM を置き換えるものではなく、RPMをバックエンドとして利用し、より高度な機能を提供している。
- apt-rpm、aptitude、synaptic
- 本来deb形式対応のこれらのツールは RPM 対応版が作成され、Fedora や Vine Linux 等で利用されている。
- TurboPackage
- rpm形式パッケージを対象としたTurbolinuxで開発されたツール。
- up2date
- rpm 形式パッケージを対象にしたレッドハットのパッケージ管理ツール。同社のRed Hat Enterprise Linux (バージョン4まで)で採用されている。Fedoraの古いバージョンでも採用されていた。
- Yum
- rpm 形式パッケージを対象としたYellow Dog Linuxで開発されたツール。Red Hat Enterprise LinuxやCentOSなどで標準として採用されている。Fedoraではバージョン21まで標準で採用されていた。
- DNF
- rpm 形式パッケージを対象としたYumからフォークして開発されたツール。Fedoraではバージョン22より標準として採用された。
rPath系
[編集]- Conary
- ConaryはForesight LinuxやrPath Linuxにより採用され、RPM、CVS、Portageなどの優れた点を集め、さらにいくつか優れた機能を追加し、明解なリビジョン・コントロールを行う先進的な次世代パッケージ管理システムである。Conaryはアップデートされる必要があるパッケージにおいて、特定のファイルのみをアップデートするので、RPMやdebなどパッケージ全体がダウンロードされる他のフォーマットよりも効率的である。
Gentoo Linux
[編集]Gentoo Linuxでは原則として、ソフトウェアをソースコードからコンパイルしてインストールするようになっている。そのため、最適化された効率的で高速なシステムを構築可能である。しかし、コンパイルするために多くの時間と演算処理を要する。
インストールするソフトウェア自体は公式のものかミラーサイトからダウンロードするため、Gentoo Linuxにおけるパッケージの本体部分は、インストール手順が書かれたBashスクリプトである。
Mozilla FirefoxやLibreOfficeなどはコンパイルに時間がかかるため、バイナリパッケージも用意されている。Adobe FlashやGoogle Chromeなどのプロプライエタリソフトウェアも、公式に配布されているバイナリファイルをダウンロードしてインストールすることが可能なようになっている。
Gentoo Linuxのパッケージ管理システムは当初はPortageのみであったが、現在では規格として標準化されているため、承認されたパッケージ管理システムが複数あり、そのいずれかを使用することになる。
- Portage
- Gentoo Linuxのデフォルトのパッケージ管理システムである。プログラミング言語にはスクリプト言語であるPythonを採用して書かれている。FreeBSDのportsに着想を得て開発された。Gentoo Linuxの他にも、FreeBSDやmacOSにも移植されている。
- Paludis
- Gentoo Linuxから派生したディストリビューションであるExherbo Linuxのパッケージ管理システムであり、Gentoo Linuxでも使用可能になっている。プログラミング言語には主にC++が用いられている。
- pkgcore
- Portageと互換性が高くこれに代替しうる、より効率的なパッケージ管理システムを目指してつくられた。主にPythonで書かれている。
openSUSE
[編集]- YaST
- rpm 形式パッケージを対象としたSuSE Linuxで開発されたツール。YaSTは単なるパッケージ管理ツールではなく、統合的なシステム管理ツールである。
- ZYpp
- 充足可能性問題の解決に焦点を当てて開発されたパッケージ管理システム。
Slackware
[編集]- pkgtool
- Slackware標準のパッケージ管理ツール。APTやYumと比較して極めてシンプルなツールであり、バージョン管理は行えない。
- slackpkg
- Slackwareで使用できるパッケージ管理ツール。標準ではインストールされない。Slackware標準パッケージしか扱えないものの、インストールすればAPTやYumのようなバージョン管理をSlackwareで実現することができる。
- sbopkg
- Slackware用リポジトリ、SlackBuilds.org用のパッケージ管理ツール。上記のとおり、slackpkgではサードパーティーパッケージを扱えないため、独自に提供されている。
Arch Linux
[編集]- pacman
- Arch Linux向けに開発されたパッケージ管理ツール。コンパイル済みバイナリとパッケージ情報を含んだ独自の.pkg.tar.zstフォーマットを用いる。プログラミング言語はCが用いられている。
ディストリビューション非依存
[編集]- nix
- Debian、openSUSE、Fedora等多数のディストリビューションに対応した環境非依存型パッケージ管理ツール。既存環境の依存関係に関わりなくサードパーティー製ソフトウェアをインストールできるうえ、旧来のパッケージ管理ツールでは実現できなかった同一ソフトウェアの複数バージョン共存が実現できる。
- Snap
- カノニカルによる、サンドボックス技術を利用したディストリビューション非依存なパッケージ管理ツールおよびシステム。クラウドやIoTでも利用でき、複数バージョンの共存やAppArmorを使ったアクセス制限も可能。Ubuntuで標準で利用できるが他の多くのディストリビューションで利用できる。
- Flatpak
- GNOME発の技術で、freedesktop.orgのプロジェクトとして開発されている、サンドボックス技術を利用したディストリビューション非依存なパッケージ管理ツールおよびシステム。上記2種と同様に複数バージョンの共存が可能。Snapと違いデスクトップアプリケーション専用で、主要ディストリビューションで利用可。
FreeBSD
[編集]- ports
- 原則的にソースをコンパイルしてインストールするようになっている。このため、PCごとに命令レベルで最適化された、処理効率として無駄の少ない環境を構築できる。ただし、インストールに長時間かかる。バイナリで用意されたパッケージをpkg(8)によりインストールすることもできる。ソースをコンパイルしたものとバイナリでインストールしたものとは単一のデータベースで統一管理されるようになっているため、それぞれのパッケージの性格に応じてソースからのコンパイルとバイナリインストールとを選択することが可能である。詳細はFreeBSDおよびFreeBSD Portsを参照。
NetBSD
[編集]- pkgsrc
- 原則的にソースをコンパイルしてインストールするようになっている。このため、PCごとに最適化された、無駄の少ない環境を構築できる。ただし、インストールに長時間かかる。また、OS/CPUには依存せず、NetBSD以外にもLinuxやmacOS、Solarisなどでも使える[10]。
macOS
[編集]macOSには、MacPorts、Fink、Homebrewなどがある。
Windows
[編集]- PackageManagement
- Windows公式のパッケージ管理ツール。PowerShell 5.0に組み込まれており、様々なリポジトリが存在する。
- Chocolatey
- Windows NT向けのパッケージ管理ツール。.NET Framework向けパッケージ管理システムNuGetのパッケージインフラを利用している。
コマンドの比較
[編集]ここでは各パッケージ管理システムによるパッケージのインストール、アップデート、アンインストールといった基本的なコマンドの一例を比較する。
ツール | インストール | アップデート | アンインストール |
---|---|---|---|
APT[11][12] | apt install <パッケージ名>
|
apt upgrade [パッケージ名] [注釈 1]
|
apt remove <パッケージ名>
|
DNF / yum[13][14] | dnf install <パッケージ名>
|
dnf update [パッケージ名]
|
dnf remove <パッケージ名>
|
Homebrew[15] | brew install <パッケージ名>
|
brew update
|
brew remove <パッケージ名>
|
Pacman[16] | pacman -S <パッケージ名>
|
pacman -Syu
|
pacman -R <パッケージ名>
|
ZYpp[17][18] | zypper install <パッケージ名>
|
zypper update [パッケージ名]
|
zypper remove <パッケージ名>
|
脚注
[編集]注釈
[編集]- ^ APTにおいては、
apt update
がパッケージのアップデートを行うコマンドではない。
出典
[編集]- ^ “What is a package manager?(パッケージマネージャーとは何ですか?)” (英語). Debian. 2022年2月20日閲覧。
- ^ “Debian パッケージ管理システムの基礎”. Debian. p. 7. 2022年2月20日閲覧。
- ^ 4.4. pkg によるバイナリ package の管理
- ^ “Debian パッケージ管理ツール”. Debian. p. 8. 2022年2月20日閲覧。
- ^ Alex Crichton (2014年11月20日). “Cargo: Rust's community crate host”. 2018年1月28日閲覧。
- ^ getcomposer
.org - ^ “Introduction” (英語). Composer. 2022年2月21日閲覧。
- ^ www
.nuget .org - ^ “NuGet の概要”. マイクロソフト. 2022年2月21日閲覧。
- ^ Part I. pkgsrc 利用者向けの手引き
- ^ “第8章 Debian パッケージ管理ツール”. Debian. 2022年2月17日閲覧。
- ^ “Debian リファレンスカード” (PDF). Debian. 2022年2月17日閲覧。
- ^ “YUM/DNF を使用したパッケージ管理”. レッドハット. 2022年2月17日閲覧。 “Red Hat Enterprise Linux 8”
- ^ “Managing software with the DNF tool” (英語). レッドハット. 2022年2月17日閲覧。 “Red Hat Enterprise Linux 9-beta”
- ^ “brew(1) – The Missing Package Manager for macOS (or Linux)” (英語). Homebrew. 2022年2月17日閲覧。
- ^ “pacman(8)” (英語). Arch Linux. 2022年2月17日閲覧。
- ^ “Zypper package manager” (英語). SUSE. 2022年2月17日閲覧。
- ^ “SDB:Zypper manual” (英語). openSUSEプロジェクト. 2022年2月17日閲覧。