お金をかけずにサーバーの勉強をしよう

Ubuntuのパッケージインストール(apt編)

2025年6月28日

メニューへ戻る

GUIのツールを使わないでソフトをインストールしましょう。

Ubuntu Linuxをインストールして色々と遊びましたら、何かとソフトをインストールしたくなってくると思います。

Desktop版ですと GUIのパッケージ管理ソフトがあるのでそれで事足りてしまいますが、サーバーのお勉強をしたいのであればやはり黒い画面でやるべきです。

そういう訳で、ここでは Ubuntuのパッケージ管理コマンドの apt を使ってソフトをインストールすることにします。

ここでは Ubuntu Desktop 24.04 を使っていますが、Server版でもやることは同じです。

Ubuntuは Debian系のパッケージ管理システムを使っていますので、当然 Debianも同じ。

RedHat Enterprise Linuxは dnfを使う別体系の管理システムを採用していますが、基本的な考え方は同じですね。


1.構成

apt を使ったパッケージ管理の登場人物はこんな感じです。
aptの構成図 1

インターネットにあるパッケージリポジトリという様々なソフトが登録してあるデータベースから、対象のソフトのインストール用ファイル(debパッケージ)をダウンロードして、自分が使っている Ubuntu OSの中にファイルを展開・配置します。

Ubuntuのデフォルトでは、(多分 Ubuntuを作っている Canonicalという会社が運営していると思う) Ubuntuリポジトリを使うように設定されています。

他にも Ubuntu用のパッケージリポジトリはありまして、法人・OSSコミュニティ・個人の運営まで幅広く存在しているようです。


2.どのリポジトリを利用するか

図で言うとここに設定があります。 aptの構成図 2

利用するリポジトリのリストは [/etc/apt]ディレクトリの下で管理されています。
中はこんな感じ。

subro@Ubuntu2404:~$ ls -l /etc/apt
合計 32
drwxr-xr-x 2 root root 4096  6月 25 07:14 apt.conf.d
drwxr-xr-x 2 root root 4096  4月  1  2024 auth.conf.d
drwxr-xr-x 2 root root 4096  4月  1  2024 keyrings
drwxr-xr-x 2 root root 4096  8月 28  2024 preferences.d
drwxr-xr-x 2 root root 4096  8月 28  2024 preferences.d.save
-rw-r--r-- 1 root root   70  6月 25 07:14 sources.list
drwxr-xr-x 2 root root 4096  6月 25 07:14 sources.list.d
drwxr-xr-x 2 root root 4096  8月 28  2024 trusted.gpg.d

このうち [sources.list]ファイルにインターネット上のリポジトリの URLが記載されています。

subro@Ubuntu2404:~$ cat /etc/apt/sources.list
# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources

なんですけど、コメントしかなくてリストの実体がなく、[/etc/apt/sources.list.d/ubuntu.sources]ファイルに移動した旨が書いてあります。

[/etc/apt/sources.list.d]ディレクトリは Ubuntu以外の他リポジトリのリストを置く場所だったんですが、Ubuntuはリストの配置をここに一本化したいようです。

以前の Ubuntuでは[/etc/apt/sources.list]ファイルに書いてあったんですが 24.04以降からだったか、この配置になりました。

[/etc/apt/sources.list.d]ディレクトリの下では [.list]拡張子と [.sources]拡張子のファイルが有効になりますが、この 2つは目的は同じながらも書式が違っているものです。

Ubuntuの新しいバージョンでは今後は [.sources]拡張子のフォーマットを使っていきたいという意図があるのかも知れません。

[/etc/apt/sources.list.d/ubuntu.sources]ファイルの中身。

subro@Ubuntu2404:~$ cat /etc/apt/sources.list.d/ubuntu.sources
Types: deb
URIs: http://jp.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

ピンクの URLからファイルを取得しようとしているのが分かります。

図で言うとこの箇所です。
aptの構成図 3

試しに Webブラウザで [http://jp.archive.ubuntu.com/ubuntu/] にアクセスしてみるとこんな風になります。

※パッケージのリポジトリは本来は Webブラウザで閲覧する用途ではないはずで、確かこういうアクセスの仕方はルール違反だったと記憶しています。
そういう事を言っている情報を探してみたんですがちょっと見つけられず。
とはいえ、このリポジトリは日本の Ubuntuユーザー全員が「タダで使わせて頂いている」ようなものですので、無用なアクセス負荷をかけること自体が非常識であるはずです。
実際にはやらんで下さい。

Ubuntuのaptリポジトリ

aptコマンドは [/etc/apt/sources.list.d]ディレクトリの下にあるファイルを対象してくれます。

ここに Ubuntuの各バージョン・その他の要素で分類されていて、 [ubuntu.sources]ファイルにかかれている要素からリポジトリ内の適切な場所から欲しい物を取得するようになっています。

[/etc/apt/sources.list.d]ディレクトリの下のファイルは 1つでなくてもよく、例えば Microsoftが提供しているリポジトリを利用すると、ここにファイルが増えますね。


3.リポジトリからパッケージのリストを取得する

リポジトリにどんなパッケージがあるのか、どのバージョンなのか、そのリストを取ってくるのが apt updateコマンドです。

図で言うとこの箇所です。
aptの構成図 4

パッケージは追加・削除・アップデートと日々変更されていくので、何かインストールしようと思ったらまず先にこれをやりましょう。

subro@Ubuntu2404:~$ sudo apt update
ヒット:1 http://security.ubuntu.com/ubuntu noble-security InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu noble InRelease
取得:3 http://jp.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
ヒット:4 http://jp.archive.ubuntu.com/ubuntu noble-backports InRelease
126 kB を 3秒 で取得しました (48.5 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
アップグレードできるパッケージが 216 個あります。表示するには 'apt list --upgradable' を実行してください。

取得したリストは [/var/lib/apt/lists]ディレクトリに収められます。
(ここの内容は自動管理されているので何かする必要はないと思いますが。)

subro@Ubuntu2404:~$ ls -l /var/lib/apt/lists
合計 209704
drwxr-xr-x 2 _apt root     4096  8月 28  2024 auxfiles
-rw-r--r-- 1 root root   126173  6月 25 16:13 jp.archive.ubuntu.com_ubuntu_dists_noble-backports_InRelease
-rw-r--r-- 1 root root   248707  5月 16 03:20 jp.archive.ubuntu.com_ubuntu_dists_noble-backports_main_binary-amd64_Packages
〜〜〜 中略 〜〜〜
-rw-r--r-- 1 root root 32194499  4月 25  2024 jp.archive.ubuntu.com_ubuntu_dists_noble_universe_i18n_Translation-en
-rw-r--r-- 1 root root  9876790  4月 26  2024 jp.archive.ubuntu.com_ubuntu_dists_noble_universe_i18n_Translation-ja
-rw-r----- 1 root root        0  8月 28  2024 lock
drwx------ 2 _apt root    12288  6月 25 21:53 partial
-rw-r--r-- 1 root root   126127  6月 25 16:11 security.ubuntu.com_ubuntu_dists_noble-security_InRelease
-rw-r--r-- 1 root root  5063476  6月 24 22:21 security.ubuntu.com_ubuntu_dists_noble-security_main_binary-amd64_Packages
〜〜〜 中略 〜〜〜
-rw-r--r-- 1 root root    70705  1月 28 14:08 security.ubuntu.com_ubuntu_dists_noble-security_universe_dep11_icons-64x64.tar.gz
-rw-r--r-- 1 root root  1695328  6月 24 22:21 security.ubuntu.com_ubuntu_dists_noble-security_universe_i18n_Translation-en

上に出てきたリポジトリのリストに書かれたところのものを持ってきてるのが分かるでしょうか。

これで Ubuntu OSでは、どのリポジトリにどんなパッケージファイルがあるかの情報を得たことになります。


4.パッケージをインストールする

実際に何かインストールしてみます。

図で言うとこの箇所です。
aptの構成図 5

以前からグラフィックツールが欲しかったので、Photoshopのパク代替となれるフリーの高機能グラフィックツール Gimpをインストールしてみます。

apt searchコマンドで gimpに関係するパッケージの一覧を取ってみます。

subro@Ubuntu2404:~$ apt search gimp
〜〜〜 省略 〜〜〜

gimp/noble-updates 2.10.36-3ubuntu0.24.04.1 amd64
  GNU 画像処理プログラム

〜〜〜 省略 〜〜〜

説明文か何かに「gimp」と入っているパッケージのリスト全て出しているようでもっとモロモロと出てくるんですが、どうやらこれが gimp本体のパッケージですね。

apt infoコマンドでパッケージの詳細情報を得られます。

subro@Ubuntu2404:~$ apt info gimp
Package: gimp
Version: 2.10.36-3ubuntu0.24.04.1
Priority: optional
Section: universe/graphics
Origin: Ubuntu
〜〜〜 以降省略 〜〜〜

インストールします。
-y オプションを使わない場合は途中で「本当に入れるか?」と問うてくれます。

subro@Ubuntu2404:~$ sudo apt install -y gimp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
〜〜〜 以降省略 〜〜〜

実際にはもっとメッセージが出てきます。

gimpに必要な前提となるライブラリやらのパッケージもちゃんと補完して一緒にインストールしてくれますので、そういった情報が出てきますよ。

結果、gimpを無事にインストールできたようです。

立ち上げてみました。
Gimp画面
素晴らしい…Photoshopにクリソ引けを取らない出来栄えです。


5.おまけ:キャッシュ

図ではパッケージのインストールの途中にキャッシュ(用のディレクトリ)を経由しています。
aptの構成図 6

具体的には [/var/cache/apt]ディレクトリがその場所です。

subro@Ubuntu2404:~$ ls -l /var/cache/apt
合計 109248
drwxr-xr-x 3 root root    20480  6月 25 07:32 archives
-rw-r--r-- 1 root root 55943667  6月 25 20:25 pkgcache.bin
-rw-r--r-- 1 root root 55901926  6月 25 20:25 srcpkgcache.bin

[pkgcache.bin]ファイルがインストールされたパッケージの情報を、[srcpkgcache.bin]ファイルがインストールされたソースパッケージ(プログラムのソースファイルなど)の情報をそれぞれ記録したものです。

その下の [archives]ディレクトリが取得したパッケージファイルが入る場所なんですが

subro@Ubuntu2404:~$ ls -l /var/cache/apt/archives
合計 4
-rw-r----- 1 root root    0  8月 28  2024 lock
drwx------ 2 _apt root 4096  6月 25 07:32 partial

gimpのパッケージファイルがあって欲しかったけど何もありませんね。

以前はこのディレクトリにちゃんとパッケージファイルが残っていたのですが、最近の環境ではインストールが完了するとキャッシュされたファイルを削除するようになっています。

ちょっと前の情報を扱っているブログなどでよく書かれている「[/var]のパーティションが一杯になった場合はパッケージのキャッシュを削除しよう! apt clearコマンド実行!!」というのはココのことですね。

確かに以前はそういう作業が必要でしたが運用上問題が大きかったんでしょう、今は自動で消されるようになりました。

例として apt upgradeコマンドを実行してインストールしたパッケージの全アップデートをかけている最中の同ディレクトリの中です。

subro@Ubuntu2404:~$ ls -l /var/cache/apt/archives
合計 105016
-rw-r--r-- 1 root root    39398 10月 15  2024 acl_2.3.2-1build1.1_amd64.deb
-rw-r--r-- 1 root root    66446  6月 12 02:55 alsa-ucm-conf_1.2.10-1ubuntu5.7_all.deb
-rw-r--r-- 1 root root   637462  3月 27 02:36 apparmor_4.0.1really4.0.1-0ubuntu0.24.04.4_amd64.deb
〜〜〜 省略 〜〜〜

末尾に [.deb] が付くパッケージファイルがありました。

インストールが失敗するとこれらのファイルが残ってしまうことはあるようですので、たまに以下のコマンドを実行して掃除してあげると良いようです。

subro@Ubuntu2404:~$ sudo apt clean


==========
以上で aptを使ってみる話はお終いです。

aptについては、技術評論社のこちらのブログに詳しく書かれていて参考にさせて頂きました。
第677回 aptで使うsources.listのオプションいろいろ
Ubuntu 24.04のパッケージ管理では、従来の aptに加えて Ubuntuを作っている Canonicalが作った snapという仕組みが同居しています。

Ubuntu Desktop 22.04からデフォルトインストールされる Firefoxが apt版ではなく snap版になったことが物議を醸していました。

snapは使いにくいところがあって、わざわざ snap版をアンインストールして apt版に入れ直しているユーザーもいる模様。

Canonicalは aptから snapへの移行を進めようとしているようで、22.04からパッケージの新しいバージョンを snapのリポジトリにしか置かない(aptのリポジトリにない)という、ある意味で強硬手段を取るようになってきています。

apt と snap、これらの動向がどうなるか、しばらく目が離せません。