#49 | apt コマンド(サードパーティリポジトリ編)

今回やること

今回は apt コマンドを利用して、サードパーティリポジトリから標準以外のソフトをインストールしてみる。

標準以外のソフトとは?

ここでは、以下のような意味で用いている。

apt の設定を変更すれば、後者も apt コマンドでインストールできるようになる。設定変更の方法は以下のいずれか。

  • /etc/apt/sources.list を編集して、設定を追加
  • /etc/apt/sources.list.d ディレクトリに、設定ファイルを追加

/etc/apt/sources.list の書式

SourcesList - Debian Wiki をざっと読んだ感じ、以下のような書式で記述する。

{Archive type} {Repository URL} {Distribution} {Component}
項目名 説明
Archive type debdeb-src のいずれかを指定する。前者はバイナリ、後者はソースコードを表す。
Repository URL リポジトリの URL を指定する。
Distribution Debian のコードネーム」か「リリースクラス」を指定する。前者は bullseyebookworm など。後者は stabletesting など。
Component maincontribnon-free のいずれかを指定する。

Distribution の補足

Distributionstable で固定しても、時間が経つにつれて stable が指すバージョンが上がっていくことに注意。

ディストリビューションのバージョンを固定したい場合は、コードネームを指定するのが良さそう。

Component の補足

第4章 debian/ ディレクトリー以下に無くてはならないファイル をざっと読んだ感じ、Component で指定する 値の意味は以下の通り。

  • main:完全にフリーなソフトウェア
  • non-free:フリーでないソフトウェア
  • contrib:フリーだが、non-free ソフトウェアに依存するソフトウェア

第767回 Debian 12 "Bookworm"の紹介 | gihyo.jp をざっと読んだ感じ、以下は Bookworm で新たに追加された模様。

/etc/apt/sources.list の編集

/etc/apt/sources.list は root ユーザしか編集できないようになっている。

編集するときは、事前にバックアップを取っておくと安心。

標準以外のソフトウェアをインストールする

MySQL :: A Quick Guide to Using the MySQL APT Repository を参考に MySQL をインストールしてみる。

手順を整理すると、以下のようになる。

# Step 1. apt-key コマンドを利用して GPG キーを取得
$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys A8D3785C

# Step 2. サードパーティリポジトリの設定を追加
$ sudo echo "deb http://repo.mysql.com/apt/debian/ bookworm mysql-8.0 mysql-tools" >> /etc/apt/sources.list.d/mysql.list

# Step 3. パッケージ情報の更新
$ sudo apt-get update

# Step 4. パッケージのインストール
$ sudo apt-get install mysql-server

Step 1. apt-key コマンドを利用して GPG キーを取得

apt-key コマンドを実行すると、エラーになる。

エラーメッセージを読んだ感じ、gnupggnupg1gnupg2 のいずれかをインストールすれば解消しそう。

apt searchgnupggnupg1gnupg2 をそれぞれ検索してみる。

ざっと読んだ感じ、以下のような気がする。

  • gnupg:本流
  • gnupg1:廃止済(deprecated)
  • gnupg2:ダミー(gnupg と中身が同じ?)

とりあえず、gnupg をインストールしてみる。

y で続行すると、インストールが実行される。

gnupg のインストール後に以下を実行すると、(警告は出るが)エラーなく鍵が取得できる。

root@tk2-235-27459:~# apt-key adv --keyserver pgp.mit.edu --recv-keys A8D3785C
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
(中略)
gpg: Total number processed: 1
gpg:               imported: 1

Step 2. サードパーティリポジトリの設定を追加

/etc/apt/sources.list.d/mysql.list ファイルを作成する前に、/etc/apt/sources.list.d ディレクトリの状態を確認しておく。

デフォルトでは、このディレクトリは空っぽい。このディレクトリへの書き込み権限があるのは root ユーザのみ。

echo コマンドとリダイレクトを利用して、設定ファイルを作成する。

Step 3. パッケージ情報の更新

apt update でパッケージ情報を更新する。

パッケージ情報を更新すると、mysql-serverapt search でヒットするようになっていることが分かる。

Step 4. パッケージのインストール

ここまで来れば、あとは apt install でインストールするだけ。

y で続行すると、インストールが実行される。

ログ

root@tk2-235-27459:~# apt-get install mysql-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libaio1 libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client mysql-common mysql-community-client mysql-community-client-core mysql-community-client-plugins mysql-community-server mysql-community-server-core psmisc
The following NEW packages will be installed:
  libaio1 libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client mysql-common mysql-community-client mysql-community-client-core mysql-community-client-plugins mysql-community-server mysql-community-server-core
  mysql-server psmisc
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 44.8 MB of archives.
After this operation, 368 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian bookworm/main amd64 libaio1 amd64 0.3.113-4 [13.4 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 libmecab2 amd64 0.996-14+b14 [222 kB]
Get:3 http://deb.debian.org/debian bookworm/main amd64 psmisc amd64 23.6-1 [259 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 mecab-utils amd64 0.996-14+b14 [6328 B]
Get:5 http://deb.debian.org/debian bookworm/main amd64 mecab-ipadic all 2.7.0-20070801+main-3 [6718 kB]
Get:6 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-common amd64 8.0.40-1debian12 [59.6 kB]
Get:7 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-community-client-plugins amd64 8.0.40-1debian12 [1285 kB]
Get:8 http://deb.debian.org/debian bookworm/main amd64 mecab-ipadic-utf8 all 2.7.0-20070801+main-3 [5496 B]
Get:9 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-community-client-core amd64 8.0.40-1debian12 [1870 kB]
Get:10 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-community-client amd64 8.0.40-1debian12 [3163 kB]
Get:11 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-client amd64 8.0.40-1debian12 [58.4 kB]
Get:12 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-community-server-core amd64 8.0.40-1debian12 [31.0 MB]
Get:13 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-community-server amd64 8.0.40-1debian12 [68.7 kB]
Get:14 http://repo.mysql.com/apt/debian bookworm/mysql-8.0 amd64 mysql-server amd64 8.0.40-1debian12 [58.4 kB]
Fetched 44.8 MB in 6s (7562 kB/s)   
Preconfiguring packages ...
Selecting previously unselected package mysql-common.
(Reading database ... 33398 files and directories currently installed.)
Preparing to unpack .../00-mysql-common_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-common (8.0.40-1debian12) ...
Selecting previously unselected package mysql-community-client-plugins.
Preparing to unpack .../01-mysql-community-client-plugins_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-community-client-plugins (8.0.40-1debian12) ...
Selecting previously unselected package mysql-community-client-core.
Preparing to unpack .../02-mysql-community-client-core_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-community-client-core (8.0.40-1debian12) ...
Selecting previously unselected package mysql-community-client.
Preparing to unpack .../03-mysql-community-client_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-community-client (8.0.40-1debian12) ...
Selecting previously unselected package mysql-client.
Preparing to unpack .../04-mysql-client_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-client (8.0.40-1debian12) ...
Selecting previously unselected package libaio1:amd64.
Preparing to unpack .../05-libaio1_0.3.113-4_amd64.deb ...
Unpacking libaio1:amd64 (0.3.113-4) ...
Selecting previously unselected package libmecab2:amd64.
Preparing to unpack .../06-libmecab2_0.996-14+b14_amd64.deb ...
Unpacking libmecab2:amd64 (0.996-14+b14) ...
Selecting previously unselected package mysql-community-server-core.
Preparing to unpack .../07-mysql-community-server-core_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-community-server-core (8.0.40-1debian12) ...
Selecting previously unselected package psmisc.
Preparing to unpack .../08-psmisc_23.6-1_amd64.deb ...
Unpacking psmisc (23.6-1) ...
Selecting previously unselected package mysql-community-server.
Preparing to unpack .../09-mysql-community-server_8.0.40-1debian12_amd64.deb ...
adduser: Warning: The home dir /var/lib/mysql you specified can't be accessed: No such file or directory
Unpacking mysql-community-server (8.0.40-1debian12) ...
Selecting previously unselected package mecab-utils.
Preparing to unpack .../10-mecab-utils_0.996-14+b14_amd64.deb ...
Unpacking mecab-utils (0.996-14+b14) ...
Selecting previously unselected package mecab-ipadic.
Preparing to unpack .../11-mecab-ipadic_2.7.0-20070801+main-3_all.deb ...
Unpacking mecab-ipadic (2.7.0-20070801+main-3) ...
Selecting previously unselected package mecab-ipadic-utf8.
Preparing to unpack .../12-mecab-ipadic-utf8_2.7.0-20070801+main-3_all.deb ...
Unpacking mecab-ipadic-utf8 (2.7.0-20070801+main-3) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../13-mysql-server_8.0.40-1debian12_amd64.deb ...
Unpacking mysql-server (8.0.40-1debian12) ...
Setting up libmecab2:amd64 (0.996-14+b14) ...
Setting up mysql-common (8.0.40-1debian12) ...
update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Setting up psmisc (23.6-1) ...
Setting up mecab-utils (0.996-14+b14) ...
Setting up mysql-community-client-plugins (8.0.40-1debian12) ...
Setting up libaio1:amd64 (0.3.113-4) ...
Setting up mecab-ipadic (2.7.0-20070801+main-3) ...
Compiling IPA dictionary for Mecab.  This takes long time...
reading /usr/share/mecab/dic/ipadic/unk.def ... 40
emitting double-array: 100% |###########################################| 
/usr/share/mecab/dic/ipadic/model.def is not found. skipped.
reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120
reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146
reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393
reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42
reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750
reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999
reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91
reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795
reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032
reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146
reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210
reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668
reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208
reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477
reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171
reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151
reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19
reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135
reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202
reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221
reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328
reading /usr/share/mecab/dic/ipadic/Others.csv ... 2
reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42
reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199
reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252
reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27328
emitting double-array: 100% |###########################################| 
reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316
emitting matrix      : 100% |###########################################| 

done!
update-alternatives: using /var/lib/mecab/dic/ipadic to provide /var/lib/mecab/dic/debian (mecab-dictionary) in auto mode
Setting up mysql-community-client-core (8.0.40-1debian12) ...
Setting up mysql-community-server-core (8.0.40-1debian12) ...
Setting up mecab-ipadic-utf8 (2.7.0-20070801+main-3) ...
Compiling IPA dictionary for Mecab.  This takes long time...
reading /usr/share/mecab/dic/ipadic/unk.def ... 40
emitting double-array: 100% |###########################################| 
/usr/share/mecab/dic/ipadic/model.def is not found. skipped.
reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120
reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146
reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393
reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42
reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750
reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999
reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91
reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795
reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032
reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146
reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210
reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668
reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208
reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477
reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171
reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151
reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19
reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135
reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202
reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221
reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328
reading /usr/share/mecab/dic/ipadic/Others.csv ... 2
reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42
reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199
reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252
reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27328
emitting double-array: 100% |###########################################| 
reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316
emitting matrix      : 100% |###########################################| 

done!
update-alternatives: using /var/lib/mecab/dic/ipadic-utf8 to provide /var/lib/mecab/dic/debian (mecab-dictionary) in auto mode
Setting up mysql-community-client (8.0.40-1debian12) ...
Setting up mysql-client (8.0.40-1debian12) ...
Setting up mysql-community-server (8.0.40-1debian12) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service -> /lib/systemd/system/mysql.service.
Setting up mysql-server (8.0.40-1debian12) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u8) ...
root@tk2-235-27459:~#

インストール後、MySQL自動起動されていることを確認する。