1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux パッケージ管理

1
Last updated at Posted at 2025-01-19

はじめに

Linux のパッケージ管理における リポジトリ は、主にソフトウェアの配布や管理のために使用され、.deb.rpm などのパッケージファイルがまとめて格納された保管庫のことを指す。

またリポジトリの実体は、インターネット上のサーバ上にある「公開ディレクトリ」である。

Git のリポジトリのように、特定のディレクトリのバージョン管理といった目的では使用されないため、両者は意味や仕組みが大きく異なるものを指している。

$ apt では、リポジトリ自体の URL は /etc/apt/sources.list などで管理される。リポジトリから取得したパッケージ一覧データは /var/lib/apt/lists/ に保存される。

/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 が推奨。

$ apt$ apt-get の比較表

リポジトリの設定

パッケージのインストール元であるリポジトリの URL などは

  • /etc/apt/sources.list ファイル
  • /etc/apt/sources.list.d ディレクトリ配下の ***.list ファイル

で管理される。

Ubuntu では、公式パッケージのリポジトリを /etc/apt/sources.list で管理し、サードパーティ製のパッケージは /etc/apt/sources.list.d ディレクトリで管理される。

以下のような形式のテキストファイルになっている。

パッケージ.list
deb URL バージョン 種類
deb-src URL バージョン 種類

deb : バイナリ形式で取得(通常のインストール)
deb-src : ソースコードで取得(ダウンロードのみ)
種類main(公式)、universe(コミュニティによってサポート)、restrictedmultiversecontribnon-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-upgrade
distribution 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 ファイルをダウンロードする。インストールまでは行わない

特定のバージョンのパッケージをインストールするなど、開発環境を構築する際によく利用される。

rpm ファイルをダウンロードする(インストールはしない)
$ yumdownloader パッケージ
rpm ファイルをダウンロードする(依存関係のあるファイルも含める)
$ 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 をインストールする
$ gem install Gem名
$ gem install cocoapods

$ gem list

インストール済みのGemを確認する
$ gem list

$ gem uninstall

Gem をアンインストールする
$ gem uninstall Gem名

$ gem update

すべてのインストール済みの Gem をアップデートする
$ gem update

引数に特定の Gem 名を与えると、指定された Gem のみアップデートを行う。

指定された Gem をアップデートする
$ gem update Gem名

$ gem search

公式の Gem リポジトリである RubyGems.org からキーワードを含むライブラリ、パッケージを検索する。

パッケージを検索する
$ gem search 検索ワード
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?