Linuxを始める前に読むと良いかもしれないドキュメント



パッケージマネージャーとは


目次

  1. 目次
  2. そもそもパッケージとは
  3. パッケージマネージャーとは
  4. リポジトリ(Repository)
  5. パッケージマネージャーの一覧
  6. パッケージマネージャーサブコマンド 早見表
  7. 参考

コマンドや引数の表記について

そもそもパッケージとは


Linuxに置いて、配布されているソフトウェア(プログラム)は多くの場合、依存関係を持っています。多くのソフトウェアで使用されるライブラリなどは手元に1つを置き、各ソフトウェアで共有すると言ったことが多いです。ライブラリ以外にもインタープリターやグラフ描画ツールなどプログラム自体に依存することも多いです。

またそれ以外にもソフトウェアは、実際に動作するプログラムだけでなく、名前,バージョン,アーキテクチャ, 設定などの様々なメタデータを持ちます。これらを1つのものとして扱ったものをパッケージと呼びます。

これらの記述や設計の違いにより、debrpmと言ったパッケージ方式がいくつか存在します。(debはDebian/Ubuntu系, rpmはRedHat系)

パッケージマネージャーとは


パッケージが配布されればそれを使うことでそのソフトウェアを利用できますが、先の依存関係などを自力で解決するのは面倒なため、これらを自動で管理してくれるパッケージマネージャーというものがあります。多くの(ほとんどの)ユーザーはこれを用いて自身のLinuxシステムのパッケージを管理します。

パッケージマネージャーそのものについてはこちらをご参照ください。

リポジトリ(Repository)


上記のパッケージマネージャーがパッケージを探してくるネットワーク上のWebサーバーのことです。これは多くのディストリビューション(特にベースになりがち)ごとに用意されており(パッケージ方式が違うため)、それらをベースとした派生ディストリビューションで独自のリポジトリを持つこともあります。

パッケージマネージャーの一覧


先の説明のように、ディストリビューションごとに扱うパッケージ形式もリポジトリも異なるため、基本的にはベースとなるディストリビューションごとにパッケージマネージャーが存在します。(正確にはディストリビューション単位というわけではなく、パッケージを管理できればいいので複数の同じディストーションでも複数のパッケージマネージャーが存在することもある1)

本来ならば3大ディストリビューションとしてslackwareのパッケージマネージャーも紹介するべきなのですが、あまりユーザー数も多くなく、何より筆者の知見が0すぎるため、今回はArchのパッケージマネージャーであるpacmanについて説明します。

基本的にパッケージ管理はシステムレベルなのでsudoを使います。

apt Debian/Ubuntu系


bash
# パッケージを探す sudo apt search pkg-name # パッケージをインストールする(パッケージ名は正確に) sudo apt install pkg-name # パッケージリストをアップデート sudo apt update # あくまでアップデート可能なものをリストする # (ローカルの情報をリポジトリと同期する)だけ # パッケージのアップグレード sudo apt upgrade # 実際にバージョンアップを行う # 個別にアップデート sudo apt upgrade pkg-name # パッケージのアンインストール sudo apt remove pkg-name # purgeとすると設定ファイルなどまで完全に削除 # 不要な依存関係を削除 sudo apt autoremove # removeなどで消されたパッケージが依存していて # 勝手にインストールされていただけの孤立パッケージを自動削除

dnf RedHat系


aptと同様にサブコマンド形式で行われます。またサブコマンド名もほとんどaptと同じ。

bash
# パッケージを探す sudo dnf search pkg-name # パッケージをインストールする(パッケージ名は正確に) sudo dnf install pkg-name # パッケージリストをアップデート sudo dnf update # dnfはアップデート時に自動で更新されるため`upgrade`も同様の意味 # 個別にアップデート sudo apt upgrade pkg-name # パッケージのアンインストール sudo dnf remove pkg-name

pacman Arch


Arch Linuxで使われるpacmanは他のパッケージマネージャーと違い、サブコマンドを用いずにオプションという形でpacman -Syuなどと使用します。

pacmanはアップデートやインストールなどといった操作ではなく、リポジトリとの同期をオプション付きで行うという操作になります。

bash
# パッケージを探す sudo pacman -Ss pkg-name # 多くの場合は検索だけならsudoは不要 # パッケージをインストールする(パッケージ名は正確に) sudo pacman -S pkg-name # 多くの場合は以下のアップデート相当の操作でpkg-nameを # 指定してインストールすることが多い # パッケージリストをアップデート sudo pacman -Syu [pkg-name] # pkg-nameはオプションなのでない場合はただのアップデート # パッケージのアンインストール sudo pacman -R pkg-name # purgeとすると設定ファイルなどまで完全に削除 # 依存関係ごとパッケージを削除 sudo pacman -Rns pkg-name

-Sはリポジトリのパッケージをローカルに、-SyはリポジトリのDBとローカルを同期、-Syuは古いパッケージに更新をかけるといった感じです。

パッケージマネージャーサブコマンド 早見表


controlsaptdnfpacman
searchsearchsearch-Ss
installinstallinstall-S
uninstallremoveremove2-R
purgepurgeremove2-Rns
updateupdateupdate3-
upgradeupgradeupgrade3-Syu

参考


Footnotes


  1. 基本的にはパッケージの扱いはそのパッケージに従うはずなので、問題は起こりにくいと思いますが、マネージャー独自の機能などがあったりすると、競合する可能性もあるため、あまり複数のマネージャーの同時運用は推奨しません。

  2. dnfにおいてはデフォルトで依存関係も消えるためremoveで統一されている 2

  3. dnfは自動更新のためupdateupgradeも同様に意味になる 2