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

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

2022年7月24日

メニューへ戻る

Ubuntu Linuxをインストールして色々と遊びましたら、何かとソフトをインストールしたくなってくると思います。
Desktop版ですと GUIのパッケージ管理ソフトがあるのでそれで事足りてしまいますが、サーバーのお勉強をしたいのであれば、やはり黒い画面でやるべきです。

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

aptを使ったパッケージ管理の構成図はこんな感じです。
インターネットにある Ubuntuリポジトリというソフトがいっぱい登録してあるデータベースから、対象のソフトのファイル(debパッケージ)をダウンロードして、ファイル配置します。
これらの作業をしてくれるのが aptコマンドで、良く「apt install」でソフトのインストール手順が紹介されています。
aptの構成図

このリポジトリについてですが、/etc/aptディレクトリの下に、インターネット上のリポジトリの URLを記載しているファイルがあります。

sources.list というファイルを筆頭に、このディレクトリ以下にある .listで終わるファイルがそれになります。

私の Ubuntu 22.04では、こんなファイルがありました。

subro@Ubuntu2204:~$ find /etc/apt -path '*.list'
/etc/apt/sources.list.d/vscode.list
/etc/apt/sources.list.d/microsoft-prod.list
/etc/apt/sources.list

インストール直後は sources.list しかなかったと思いますが、VSCode や .NET6 をインストールしたときにマイクロソフトのUbuntu用リポジトリが追加されているようです。

ファイルの中を見てみます。

subro@Ubuntu2204:~$ cat /etc/apt/sources.list
# Automatically generated by Calamares on 2022-06-27.
# Lines starting with "deb" are mandatory, while lines starting with "deb-src"
# are for more detailed package information.

## See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
## newer versions of Lubuntu.
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ jammy main restricted

## Major bug fix updates produced after the final release of Lubuntu.
## Have you noticed a regression? Please report it!
## https://wiki.ubuntu.com/StableReleaseUpdates#Regressions
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted

## Software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu team.
## Also, please note that software in Universe WILL NOT receive any review or
## updates from the Ubuntu security team directly. Updates in this repository
## are provided by volunteers, but most come from Debian.
deb http://archive.ubuntu.com/ubuntu/ jammy universe
# deb-src http://archive.ubuntu.com/ubuntu/ jammy universe
deb http://archive.ubuntu.com/ubuntu/ jammy-updates universe
# deb-src http://archive.ubuntu.com/ubuntu/ jammy-updates universe

## Software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu team,
## and may not be under a free licence. Please satisfy yourself as your rights
## to use the software. Also, please note that software in Multiverse WILL NOT
## receive any review or updates from the Ubuntu security team directly.
deb http://archive.ubuntu.com/ubuntu/ jammy multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ jammy multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ jammy-updates multiverse

## Software from this repository contains tested security updates from the
## Ubuntu security team.
deb http://security.ubuntu.com/ubuntu jammy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted
deb http://security.ubuntu.com/ubuntu jammy-security universe
# deb-src http://security.ubuntu.com/ubuntu jammy-security universe
deb http://security.ubuntu.com/ubuntu jammy-security multiverse
# deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse

## Software from this repository may not have been tested as extensively as
## software contained in the main release, although it includes newer versions
## of some applications which may provide useful features. Also, please note
## that software in Backports WILL NOT receive any review or updates from the
## Ubuntu security team.
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## "partner" repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu jammy partner
# deb-src http://archive.canonical.com/ubuntu jammy partner

コメントが多いので、生きている行だけピンクにしてあります。

上の方から段々と信頼性のないものになっています。

このファイルを変更することによって、パッケージの探索に入れるか入れないかの設定をすることができます。

そしてサードパーティのリポジトリは、sources.list.d ディレクトリの下に別ファイルとするお作法になってるようです。
マイクロソフトのファイルを見てみましょう。

subro@Ubuntu2204:~$ cat /etc/apt/sources.list.d/vscode.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64,arm64,armhf] http://packages.microsoft.com/repos/code stable main
subro@Ubuntu2204:~$ cat /etc/apt/sources.list.d/microsoft-prod.list
deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/22.04/prod jammy main

普段目にするような WEBサイトの URLと同じなので、リポジトリがインターネット上に存在しているイメージはつきやすいのではないでしょうか。
仕組み的には必ずしも httpか httpsでなくとも良いようですが、殆どこれらではないかと思います。

次にキャッシュを見てみます。

一連のファイルは /var/cache/aptディレクトリ以下にあります。

subro@Ubuntu2204:~$ ls -l /var/cache/apt
total 91552
drwxr-xr-x 3 root root    20480  7月 22 14:09 archives
-rw-r--r-- 1 root root 46879568  7月 22 14:09 pkgcache.bin
-rw-r--r-- 1 root root 46838524  7月 20 11:02 srcpkgcache.bin

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

その下の archivesディレクトリを見てみると

subro@Ubuntu2204:~$ ls -l /var/cache/apt/archives
total 470096
-rw-r--r-- 1 root root  6606224  7月 12 23:27 aspnetcore-runtime-6.0_6.0.7-1_amd64.deb
-rw-r--r-- 1 root root  1306680  7月 12 03:00 aspnetcore-targeting-pack-6.0_6.0.7-1_amd64.deb
-rw-r--r-- 1 root root 85763360  7月  8 03:09 code_1.69.0-1657183742_amd64.deb
-rw-r--r-- 1 root root 85733072  7月 13 02:13 code_1.69.1-1657615746_amd64.deb
-rw-r--r-- 1 root root 85770472  7月 19 05:51 code_1.69.2-1658162013_amd64.deb

こんな感じで、パッケージファイルそのものが保持されていました。
VSCodeのパッケージファイルがバージョンアップ毎に残っていることが分かります。

以上が仕組みになります。

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

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

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

subro@Ubuntu2204:~$ apt search gimp
ソート中... 完了
全文検索... 完了

gimp/jammy 2.10.30-1build1 amd64
  GNU 画像処理プログラム

実際は説明文か何かに「gimp」と入っているパッケージを拾ってきているようで、もっとモロモロと出てくるんですが、これが gimp本体のパッケージですね。

apt info でパッケージの情報を得られます。

subro@Ubuntu2204:~$ apt info gimp
Package: gimp
Version: 2.10.30-1build1
Priority: optional
Section: universe/graphics
Origin: Ubuntu
Maintainer: Ubuntu Developers 
Original-Maintainer: Debian GNOME Maintainers 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 21.1 MB
Depends: libgimp2.0 (>= 2.10.30), libgimp2.0 (<= 2.10.30-z), gimp-data (>= 2.10.30), gimp-data (<= 2.10.30-z), graphviz, xdg-utils, libaa1 (>= 1.4p5), libbabl-0.1-0 (>= 1:0.1.78), libbz2-1.0, libc6 (>= 2.34), libcairo2 (>= 1.12.2), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.30.8), libgegl-0.4-0 (>= 1:0.4.34), libgexiv2-2 (>= 0.10.6), libglib2.0-0 (>= 2.56.2), libgs9 (>= 9.10~dfsg), libgtk2.0-0 (>= 2.24.10), libgudev-1.0-0 (>= 167), libharfbuzz0b (>= 0.6.0), libheif1 (>= 1.8.0), libilmbase25 (>= 2.5.7), libjpeg8 (>= 8c), libjson-glib-1.0-0 (>= 1.5.2), liblcms2-2 (>= 2.9), liblzma5 (>= 5.1.1alpha+20120614), libmng2 (>= 2.0.2), libmypaint-1.5-1 (>= 1.5.0), libopenexr25 (>= 2.5.7), libopenjp2-7 (>= 2.0.0), libpango-1.0-0 (>= 1.29.4), libpangocairo-1.0-0 (>= 1.29.4), libpangoft2-1.0-0 (>= 1.29.4), libpng16-16 (>= 1.6.2-1), libpoppler-glib8 (>= 0.44.0), librsvg2-2 (>= 2.32.0), libstdc++6 (>= 5.2), libtiff5 (>= 4.0.3), libwebp7, libwebpdemux2, libwebpmux3, libwmf0.2-7 (>= 0.2.8.4), libx11-6, libxcursor1 (>> 1.1.2), libxext6, libxfixes3, libxmu6, libxpm4, zlib1g (>= 1:1.1.4)
Recommends: ghostscript
Suggests: gimp-help-en | gimp-help, gimp-data-extras, gvfs-backends, libasound2
Breaks: gimp-plugin-registry (<< 7.20140602+nmu1~)
Replaces: gimp-plugin-registry (<< 7.20140602+nmu1~)
Homepage: https://www.gimp.org/
Task: xubuntu-desktop, ubuntustudio-photography, ubuntustudio-graphics, ubuntustudio-publishing
Download-Size: 4,921 kB
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
Description: GNU 画像処理プログラム
 GIMP は高度な画像エディタです。写真やスキャンデータを編集、処理、レタッチし
 たり、図面を作成したり、絵を描いたりするのにも使えます。Photoshop にあるよ
 うなプロレベルの大規模な編集ツール・フィルタ集を備えています。多数の微調整
 可能な設定やレイヤ、パス、マスク、スクリプティングのような機能で画像を完全 に操作できます。
 .
 JPEG, Photoshop (.psd), Paint Shop Pro (.psp) ファイルを含む多数の画像ファ
 イル形式に対応しています。写真のスキャンや印刷にも使えます。
 .
 (HTTP 経由のような) リモートのファイルを開くには gvfs-backends パッケージを インストールしてください。
 .
 GIMP の入力コントローラとして (音楽キーボードのような) MIDI デバイスを使う には、libasound2
 をインストールし、/usr/share/doc/gimp/README.MIDI にある手 引きをお読みください。

インストールします。

subro@Ubuntu2204:~$ sudo apt install gimp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
提案パッケージ:
  gimp-help-en | gimp-help gimp-data-extras
以下のパッケージが新たにインストールされます:
  gimp
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
4,921 kB のアーカイブを取得する必要があります。
この操作後に追加で 21.1 MB のディスク容量が消費されます。
取得:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gimp amd64 2.10.30-1build1 [4,921 kB]
4,921 kB を 3秒 で取得しました (1,605 kB/s)
以前に未選択のパッケージ gimp を選択しています。
(データベースを読み込んでいます ... 現在 310861 個のファイルとディレクトリがインストールされています。)
.../gimp_2.10.30-1build1_amd64.deb を展開する準備をしています ...
gimp (2.10.30-1build1) を展開しています...
gimp (2.10.30-1build1) を設定しています ...
man-db (2.10.2-1) のトリガを処理しています ...
mailcap (3.70+nmu1ubuntu1) のトリガを処理しています ...
desktop-file-utils (0.26-1ubuntu3) のトリガを処理しています ...

インストールできたようです。

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


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


aptについては、技術評論社のこちらのブログに詳しく書かれていて参考にさせて頂きました。
第677回 aptで使うsources.listのオプションいろいろ

Ubuntu 22.04のパッケージ管理では、従来の aptに加えて、Ubuntuを作っている Canonicalが作った snapという仕組みが同居しています。

Ubuntu Desktop 22.04にデフォルトインストールされる Firefoxが apt版ではなく snap版になっていることがちょっと物議を醸しています。
使いにくいところがあって、snap版はアンインストールして、apt版に入れ直しているユーザーもいる模様。

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

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