はじめに
Linux のパッケージ管理における リポジトリ は、主にソフトウェアの配布や管理のために使用され、.deb や .rpm などのパッケージファイルがまとめて格納された保管庫のことを指す。
またリポジトリの実体は、インターネット上のサーバ上にある「公開ディレクトリ」である。
Git のリポジトリのように、特定のディレクトリのバージョン管理といった目的では使用されないため、両者は意味や仕組みが大きく異なるものを指している。
$ apt では、リポジトリ自体の URL は /etc/apt/sources.list などで管理される。リポジトリから取得したパッケージ一覧データは /var/lib/apt/lists/ に保存される。
$ ls /var/lib/apt/lists/
auxfiles
lock
partial
ports.ubuntu.com_ubuntu-ports_dists_noble-backports_InRelease
ports.ubuntu.com_ubuntu-ports_dists_noble-backports_main_binary-arm64_Packages
ports.ubuntu.com_ubuntu-ports_dists_noble-backports_main_cnf_Commands-arm64
ports.ubuntu.com_ubuntu-ports_dists_noble-backports_main_dep11_Components-arm64.yml.gz
ports.ubuntu.com_ubuntu-ports_dists_noble-backports_main_i18n_Translation-en
ports.ubuntu.com_ubuntu-ports_dists_noble-backports_multiverse_cnf_Commands-arm64
...
$ apt update を実行した際にはこの /var/lib/apt/lists/ の内容が更新される。
また $ apt search は、ネット上のパッケージを検索する訳ではなく、/var/lib/apt/lists/ 内の検索を行なっているに過ぎない。
$ apt
Advanced Packaging Tool
Debian 系 Linux (Ubuntu、Linux Mint)で使われるパッケージ管理システム。
パッケージのインストール、アップデート、検索、削除を行うことができる。依存関係のあるパッケージも自動で解決される。
インストール中にプログレスバーが表示されるなどのユーザーライクな設計によって開発されているため、日常的に使用するパケージ管理に適している。
一方で、従来から存在する $ apt-get コマンドと比べて比較的新しいツールであるため、出力形式などが今後のアップデート時に変更される可能性がある。
そのため、シェルスクリプトでは依然として枯れた技術である $ apt-get を使用することが推奨されている。
また、一部の高度な操作(例:$ apt-get source や $ apt-get build-dep など)は $ apt-get にしか存在しないことがある。
日常的なパッケージ管理では $ apt が推奨。
シェルスクリプトでは $ apt-get が推奨。
リポジトリの設定
パッケージのインストール元であるリポジトリの URL などは
-
/etc/apt/sources.listファイル -
/etc/apt/sources.list.dディレクトリ配下の***.listファイル
で管理される。
Ubuntu では、公式パッケージのリポジトリを /etc/apt/sources.list で管理し、サードパーティ製のパッケージは /etc/apt/sources.list.d ディレクトリで管理される。
以下のような形式のテキストファイルになっている。
deb URL バージョン 種類
deb-src URL バージョン 種類
deb : バイナリ形式で取得(通常のインストール)
deb-src : ソースコードで取得(ダウンロードのみ)
種類 : main(公式)、universe(コミュニティによってサポート)、restricted、multiverse、contrib、non-free
$ apt search
$ apt search パッケージ
$ apt search ^パッケージ名$
$ apt show
$ apt show パッケージ
$ apt list
$ apt list
$ apt list --installed
$ apt install
$ sudo apt install パッケージ名
$ apt update
リポジトリから最新のパッケージ情報を取得(fetch)する。インストール済みのパッケージはアップデートされない。
$ sudo apt update
$ apt upgrade
$ apt update で更新したパッケージ情報をもとに、インストール済みのファイルをアップデートする。
$ sudo apt upgrade
$ apt full-upgrade
インストールされている全てのパッケージを最新バージョンにアップデートし、依存関係の解決も行う。
$ apt upgrade と異なり、新しいバージョンのパッケージをインストールするために、古いパッケージや依存関係が削除される場合がある。
$ sudo apt full-upgrade
$ apt upgrade では、既存のパッケージが削除されることはない。
$ apt full-upgrade は必要に応じて依存関係を変更する。
$ apt remove
$ sudo apt remove パッケージ
$ apt purgeコマンドと異なり、パッケージのみが削除され、設定ファイルは残る。
$ apt purge
$ sudo apt purge パッケージ
$ apt autoremove
依存関係上、不要になったパッケージファイルを削除する。
$ sudo apt autoremove
$ apt clean
キャッシュされた /var/cache/apt/archives/ の ***.deb ファイルを削除する。
$ sudo apt clean
$ apt-get との比較
| 操作 | $ apt-get |
$ apt |
|---|---|---|
| パッケージのインストール | $ apt-get install |
$ apt install |
| リポジトリの更新 | $ apt-get update |
$ apt update |
| パッケージのアップデート | $ apt-get upgrade |
$ apt upgrade |
| パッケージのアップデート (依存関係の解決を含む) |
$ apt-get dist-upgradedistribution upgrade |
$ apt full-upgrade |
| パッケージの削除 | $ apt-get remove |
$ apt remove |
| パッケージの検索 | $ apt-cache search |
$ apt search |
| システムの情報表示 | - |
$ apt list / $ apt show
|
$ dpkg
$ apt 同様に、Debian 系 Linux(Ubuntu、Linux Mint) で利用されるパッケージ管理コマンド。
パッケージを直接ダウンロードする機能はなく、手動でダウンロードした ***.deb ファイルをインストールするために利用される。
依存関係を自動的に解決しない ため、依存するライブラリやパッケージを手動でインストールする必要がある。
$ apt よりも低級 な操作になるため、日常的に使用されるというよりも、トラブルシューティング、その他特殊な状況でのみ利用される。
$ dpkg-reconfigure
$ dpkg-reconfigure パッケージ
$ dpkg -s
$ dpkg -s パッケージ # インストール済であるかがわかる
$ dpkg --status パッケージ
$ dpkg -l
$ dpkg -l
$ dpkg --list
$ dpkg -S
$ dpkg -S ファイル
$ dpkg --search ファイル
$ dpkg -L
$ dpkg -L パッケージ
$ dpkg --listfiles パッケージ
$ dpkg -i
$ dpkg -i パッケージ.deb
$ dpkg --install パッケージ.deb
$ dpkg -r
$ dpkg -r パッケージ
$ dpkg --remove パッケージ
$ dpkg -P コマンドと異なり、パッケージのみが削除され、設定ファイルは残る。
$ dpkg -P
$ dpkg -P パッケージ
$ dpkg --purge パッケージ
$ dpkg -C
インストール時のエラーによって、部分的にインストールされてしまったパッケージを検索する。
$ dpkg -C
$ dpkg --audit
$ yum
Yellowdog Updater, Modified
RPM ベースの Linux (Red Hat Enterprise Linux、CentOS、Fedora)で利用されるパッケージ管理ツール。
依存関係のあるパッケージも自動で解決される。
また、グループ単位でパッケージをインストールすることができる。
$ dnf は $ yum よりも新しいコマンドで、依存関係の解決や速度の改善などがより高機能になっている。
後継版の $ dnf コマンドは、ほとんど $ yum と同じように使える
リポジトリの設定
/etc/yum.repos.d ディレクトリ配下にある ***.repo ファイルで管理される。
設定
/etc/yum.conf ファイルで管理される。
$ yumdownloader
***.rpm ファイルをダウンロードする。インストールまでは行わない。
特定のバージョンのパッケージをインストールするなど、開発環境を構築する際によく利用される。
$ yumdownloader パッケージ
$ yumdownloader --resolve パッケージ
$ yum repolist
$ yum repolist
$ yum info
$ yum info パッケージ
$ yum list
$ yum list
$ yum list installed
$ yum list updates
$ yum search
$ yum search キーワード
$ yum check-update
$ yum check-update
$ yum install
$ yum install パッケージ
$ yum groupinstall
$ yum groupinstall グループ
$ yum groups install
$ yum groups install グループ
$ yum groups list
$ yum remove / $ yum erase
$ yum remove パッケージ
$ yum erase パッケージ
$ yum update
$ yum update
$ yum update パッケージ
$ rpm
Red Hat Package Manager
Red Hat 系ディストリビューション(RHEL、CentOS、Fedora)で利用されるパッケージ管理コマンド。
RPM 形式のパッケージは、特定のソフトウェアをインストールするためのバイナリファイルやスクリプトがまとめられたアーカイブ形式のファイル(***.rpm)になっている。
依存関係を自動的に解決しない ため、依存するライブラリやパッケージを手動でインストールする必要がある。
$ yum よりも低級 な操作になるため、日常的に使用されるというよりも、トラブルシューティング、その他特殊な状況でのみ利用される。
$ rpm -i
$ rpm -i パッケージ.rpm
$ rpm --install パッケージ.rpm
$ rpm -ivh パッケージ.rpm
$ rpm -i --test パッケージ.rpm
$ rpm -U
パッケージがインストールされていない場合、インストールもしてくれる。
$ rpm -U パッケージ.rpm
$ rpm --upgrade パッケージ.rpm
$ rpm -F
指定したパッケージがインストールされていない場合、何も行わない。
$ rpm -F パッケージ.rpm
$ rpm --freshen パッケージ.rpm
$ rpm -e
$ rpm -e パッケージ
$ rpm --erase パッケージ
$ rpm -q
$ rpm -q パッケージ
$ rpm --query パッケージ
-a / --all : インストール済みのすべてのパッケージを表示
-f ファイル名 / --file ファイル名 : 指定したファイルが含まれるパッケージ名を表示
-i / --info : パッケージの詳細情報を表示
-l / --list : パッケージに含まれるファイル一覧を表示
-R / --requires : パッケージが依存するパッケージを表示
-p / --package : インストールの有無に関わらず、指定したパッケージの情報を表示
-c / --configfiles : 設定ファイルのみを表示する
$ rpm -i パッケージ # パッケージのインストール
$ rpm -q -i パッケージ # パッケージの詳細情報を表示
$ rpm -qi パッケージ # パッケージの詳細情報を表示
$ rpm -v
詳細情報を表示する。
$ rpm -iv パッケージ.rpm
$ rpm -h / $ rpm --hash
進行状況を # で表示してくれる。
$ rpm -ih パッケージ.rpm
$ gem
Ruby で記述されたライブラリを Gem と呼び、Ruby のパッケージ管理システムを RubyGems と言う。
RubyGems を操作するためには $ gem コマンドを使用する。$ gemコマンドを利用することで Gem のインストール、更新、検索、アンイントールが可能。
デフォルトで公式リポジトリ(RubyGems.org)が使用される。
$ gem install
$ gem install Gem名
$ gem install cocoapods
$ gem list
$ gem list
$ gem uninstall
$ gem uninstall Gem名
$ gem update
$ gem update
引数に特定の Gem 名を与えると、指定された Gem のみアップデートを行う。
$ gem update Gem名
$ gem search
公式の Gem リポジトリである RubyGems.org からキーワードを含むライブラリ、パッケージを検索する。
$ gem search 検索ワード