【Ubuntu】【debconf-utils】debconf-utils 導入メモ【SW】

 

debconf とは

パッケージ A をインストールする前に、A に関する設定を事前に済ませておけば、インストール時に設定する必要が無くなる。
Debian 系でこの設定情報を管理するパッケージが debconf-utils である。(という認識)

以下、鵜飼さんのページより引用する

debconfで楽々パッケージ設定

debconfとは、Debianにおいてパッケージの設定を行なうために開発されたパッケージである。

そもそもdebconfは前Debian Project LeaderのWichert Akkerman発案のconfiguration database framework構想
に基づくJoey Hessによる実装である。

今やConnectivaやVine、Holonなどで採用されているaptがDebianで開発されたというのを知っているのはどれくらいいるのだろうか。
私の予言した通り(?)新世代のパッケージングシステムaptはDebian以外にも広く採用されるようになってきている。
aptにより多くのパッケージをまとめて扱うのはやりやすくなった。
しかしながらまだパッケージごとの設定というのが統一されていないのが現状だ。

そこであらわれたのがdebconfである。

debconfによりパッケージの設定を統一されたインターフェースで提供することができるのだ。
 
■debconfの裏側

aptを使っている場合、debconfおよびapt-utilsをインストールしておけば、aptがパッケージをダウンロードし
パッケージを展開する前に設定をまとめておこなうことができる。

debconfの設定がおわったあとにパッケージの展開、設定はほぼ自動的におこなえる。
http://ukai.jp/debuan/2001w/debconf.txt

 

debconf-utils のインストール

% sudo apt-get install -y debconf-utils

 

実行例

MySQL のインストール時に自動的に処理させる

1. インストールされる MySQL のバージョン情報を得る

下記より、インストールされる MySQL バージョンが 5.7 だと判明する

% apt search mysql | grep mysql-server

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

default-mysql-server/bionic,bionic 1.0.4 all
default-mysql-server-core/bionic,bionic 1.0.4 all
mysql-server/bionic-updates,bionic-updates,bionic-security,bionic-security 5.7.23-0ubuntu0.18.04.1 all
mysql-server-5.7/bionic-updates,bionic-security 5.7.23-0ubuntu0.18.04.1 amd64
mysql-server-core-5.7/bionic-updates,bionic-security 5.7.23-0ubuntu0.18.04.1 amd64

 

2. defconf に MySQL の設定情報を格納する

事前に MySQL インストール後の設定をしておく。
MySQL のバージョンを「5.7.23」とし、 DB パスワード (ここでは mysql ) を設定している。

% echo 'mysql-server-5.7.23 mysql-server/root_password password mysql' | sudo debconf-set-selections
% echo 'mysql-server-5.7.23 mysql-server/root_password_again password mysql' | sudo debconf-set-selections

 
なお、上記コマンド実行時に sudo debconf-set-selections としないとエラーになる。

% echo 'mysql-server-5.7.23 mysql-server/root_password password mysql' | debconf-set-selections
debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied
debconf: DbDriver "passwords" warning: could not write /var/cache/debconf/passwords.dat-new: Permission denied
debconf: DbDriver "passwords" warning: /var/cache/debconf/passwords.dat-new is locked by another process: Bad file descriptor
debconf: DbDriver "passwords" warning: could not write /var/cache/debconf/passwords.dat-new: Bad file descriptor
debconf: DbDriver "passwords" warning: could not flush /var/cache/debconf/passwords.dat-new: Invalid argument
debconf: DbDriver "passwords" warning: could not sync /var/cache/debconf/passwords.dat-new: Invalid argument
debconf: DbDriver "passwords" warning: rename failed: No such file or directory
debconf: DbDriver "templatedb": could not write /var/cache/debconf/templates.dat-new: Permission denied

 

3. MySQL をインストールする

今回は Zabbix with MySQL をインストールした。
以下、ログ全文を表示するが、特にパスワード設定などは問われなかった。

% sudo apt install -y zabbix-server-mysql

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  activity-log-manager firefox-locale-ja language-pack-gnome-ja language-pack-gnome-ja-base language-pack-ja
  language-pack-ja-base libgeonames-common libgeonames0 libnm-gtk0 libreoffice-help-ja libreoffice-l10n-ja
  libtimezonemap-data libtimezonemap1 libunity-control-center1 libwxgtk3.0-0v5 thunderbird-locale-ja
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  fping galera-3 libaio1 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libhtml-template-perl
  libiksemel3 libopenipmi0 libreadline5 libsnmp30 libssh2-1 libterm-readkey-perl mariadb-client-10.1
  mariadb-client-core-10.1 mariadb-common mariadb-server-10.1 mariadb-server-core-10.1 snmpd socat
提案パッケージ:
  libmldbm-perl libnet-daemon-perl libsql-statement-perl libipc-sharedcache-perl mailx tinyca snmptrapd
  zabbix-frontend-php
以下のパッケージが新たにインストールされます:
  fping galera-3 libaio1 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libhtml-template-perl
  libiksemel3 libopenipmi0 libreadline5 libssh2-1 libterm-readkey-perl mariadb-client-10.1
  mariadb-client-core-10.1 mariadb-common mariadb-server-10.1 mariadb-server-core-10.1 snmpd socat
  zabbix-server-mysql
以下のパッケージはアップグレードされます:
  libsnmp30
アップグレード: 1 個、新規インストール: 20 個、削除: 0 個、保留: 496 個。
26.1 MB 中 26.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 185 MB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 mariadb-common all 1:10.1.34-0ubuntu0.18.04.1 [15.5 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 galera-3 amd64 25.3.20-1 [947 kB]    
取得:3 http://repo.zabbix.com/zabbix/3.4/ubuntu bionic/main amd64 zabbix-server-mysql amd64 1:3.4.14-1+bionic [1,827 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 libdbi-perl amd64 1.640-1 [724 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 libreadline5 amd64 5.2+dfsg-3build1 [99.5 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 mariadb-client-core-10.1 amd64 1:10.1.34-0ubuntu0.18.04.1 [4,743 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 libconfig-inifiles-perl all 2.94-1 [40.4 kB]
取得:8 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 mariadb-client-10.1 amd64 1:10.1.34-0ubuntu0.18.04.1 [5,633 kB]
取得:9 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 mariadb-server-core-10.1 amd64 1:10.1.34-0ubuntu0.18.04.1 [4,939 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 socat amd64 1.7.3.2-2ubuntu2 [342 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 mariadb-server-10.1 amd64 1:10.1.34-0ubuntu0.18.04.1 [5,089 kB]
取得:12 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libiksemel3 amd64 1.4-3build1 [26.9 kB]
取得:13 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libopenipmi0 amd64 2.0.22-1.1ubuntu2.1 [450 kB]
取得:14 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libsnmp30 amd64 5.7.3+dfsg-1.8ubuntu3.1 [930 kB]
取得:15 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libssh2-1 amd64 1.8.0-1 [73.2 kB]
取得:16 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 fping amd64 4.0-6 [32.1 kB]
取得:17 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libdbd-mysql-perl amd64 4.046-1 [82.0 kB]
取得:18 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libterm-readkey-perl amd64 2.37-1build1 [24.4 kB]
取得:19 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 snmpd amd64 5.7.3+dfsg-1.8ubuntu3.1 [57.0 kB]
26.1 MB を 2秒 で取得しました (12.8 MB/s)                                       
パッケージを事前設定しています ...
以前に未選択のパッケージ mariadb-common を選択しています。
(データベースを読み込んでいます ... 現在 283203 個のファイルとディレクトリがインストールされています。)
.../0-mariadb-common_1%3a10.1.34-0ubuntu0.18.04.1_all.deb を展開する準備をしています ...
mariadb-common (1:10.1.34-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ galera-3 を選択しています。
.../1-galera-3_25.3.20-1_amd64.deb を展開する準備をしています ...
galera-3 (25.3.20-1) を展開しています...
以前に未選択のパッケージ libdbi-perl を選択しています。
.../2-libdbi-perl_1.640-1_amd64.deb を展開する準備をしています ...
libdbi-perl (1.640-1) を展開しています...
以前に未選択のパッケージ libaio1:amd64 を選択しています。
.../3-libaio1_0.3.110-5_amd64.deb を展開する準備をしています ...
libaio1:amd64 (0.3.110-5) を展開しています...
以前に未選択のパッケージ libreadline5:amd64 を選択しています。
.../4-libreadline5_5.2+dfsg-3build1_amd64.deb を展開する準備をしています ...
libreadline5:amd64 (5.2+dfsg-3build1) を展開しています...
以前に未選択のパッケージ mariadb-client-core-10.1 を選択しています。
.../5-mariadb-client-core-10.1_1%3a10.1.34-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
mariadb-client-core-10.1 (1:10.1.34-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ libconfig-inifiles-perl を選択しています。
.../6-libconfig-inifiles-perl_2.94-1_all.deb を展開する準備をしています ...
libconfig-inifiles-perl (2.94-1) を展開しています...
以前に未選択のパッケージ mariadb-client-10.1 を選択しています。
.../7-mariadb-client-10.1_1%3a10.1.34-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
mariadb-client-10.1 (1:10.1.34-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ mariadb-server-core-10.1 を選択しています。
.../8-mariadb-server-core-10.1_1%3a10.1.34-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
mariadb-server-core-10.1 (1:10.1.34-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ socat を選択しています。
.../9-socat_1.7.3.2-2ubuntu2_amd64.deb を展開する準備をしています ...
socat (1.7.3.2-2ubuntu2) を展開しています...
mariadb-common (1:10.1.34-0ubuntu0.18.04.1) を設定しています ...
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/mariadb.cnf を使います
以前に未選択のパッケージ mariadb-server-10.1 を選択しています。
(データベースを読み込んでいます ... 現在 283575 個のファイルとディレクトリがインストールされています。)
.../00-mariadb-server-10.1_1%3a10.1.34-0ubuntu0.18.04.1_amd64.deb を展開する準備をしています ...
mariadb-server-10.1 (1:10.1.34-0ubuntu0.18.04.1) を展開しています...
以前に未選択のパッケージ libiksemel3:amd64 を選択しています。
.../01-libiksemel3_1.4-3build1_amd64.deb を展開する準備をしています ...
libiksemel3:amd64 (1.4-3build1) を展開しています...
以前に未選択のパッケージ libopenipmi0 を選択しています。
.../02-libopenipmi0_2.0.22-1.1ubuntu2.1_amd64.deb を展開する準備をしています ...
libopenipmi0 (2.0.22-1.1ubuntu2.1) を展開しています...
.../03-libsnmp30_5.7.3+dfsg-1.8ubuntu3.1_amd64.deb を展開する準備をしています ...
libsnmp30:amd64 (5.7.3+dfsg-1.8ubuntu3.1)(5.7.3+dfsg-1.8ubuntu3 に) 上書き展開しています ...
以前に未選択のパッケージ libssh2-1:amd64 を選択しています。
.../04-libssh2-1_1.8.0-1_amd64.deb を展開する準備をしています ...
libssh2-1:amd64 (1.8.0-1) を展開しています...
以前に未選択のパッケージ fping を選択しています。
.../05-fping_4.0-6_amd64.deb を展開する準備をしています ...
fping (4.0-6) を展開しています...
以前に未選択のパッケージ zabbix-server-mysql を選択しています。
.../06-zabbix-server-mysql_1%3a3.4.14-1+bionic_amd64.deb を展開する準備をしています ...
zabbix-server-mysql (1:3.4.14-1+bionic) を展開しています...
以前に未選択のパッケージ libdbd-mysql-perl を選択しています。
.../07-libdbd-mysql-perl_4.046-1_amd64.deb を展開する準備をしています ...
libdbd-mysql-perl (4.046-1) を展開しています...
以前に未選択のパッケージ libhtml-template-perl を選択しています。
.../08-libhtml-template-perl_2.97-1_all.deb を展開する準備をしています ...
libhtml-template-perl (2.97-1) を展開しています...
以前に未選択のパッケージ libterm-readkey-perl を選択しています。
.../09-libterm-readkey-perl_2.37-1build1_amd64.deb を展開する準備をしています ...
libterm-readkey-perl (2.37-1build1) を展開しています...
以前に未選択のパッケージ snmpd を選択しています。
.../10-snmpd_5.7.3+dfsg-1.8ubuntu3.1_amd64.deb を展開する準備をしています ...
snmpd (5.7.3+dfsg-1.8ubuntu3.1) を展開しています...
libsnmp30:amd64 (5.7.3+dfsg-1.8ubuntu3.1) を設定しています ...
libconfig-inifiles-perl (2.94-1) を設定しています ...
libhtml-template-perl (2.97-1) を設定しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
socat (1.7.3.2-2ubuntu2) を設定しています ...
snmpd (5.7.3+dfsg-1.8ubuntu3.1) を設定しています ...
adduser: 警告: ホームディレクトリ `/var/lib/snmp' は、現在作成中のユーザーの所属になっていません。
Created symlink /etc/systemd/system/multi-user.target.wants/snmpd.service → /lib/systemd/system/snmpd.service.
libiksemel3:amd64 (1.4-3build1) を設定しています ...
libterm-readkey-perl (2.37-1build1) を設定しています ...
libssh2-1:amd64 (1.8.0-1) を設定しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
libaio1:amd64 (0.3.110-5) を設定しています ...
galera-3 (25.3.20-1) を設定しています ...
fping (4.0-6) を設定しています ...
systemd (237-3ubuntu10.3) のトリガを処理しています ...
man-db (2.8.3-2) のトリガを処理しています ...
libreadline5:amd64 (5.2+dfsg-3build1) を設定しています ...
libdbi-perl (1.640-1) を設定しています ...
libopenipmi0 (2.0.22-1.1ubuntu2.1) を設定しています ...
mariadb-server-core-10.1 (1:10.1.34-0ubuntu0.18.04.1) を設定しています ...
mariadb-client-core-10.1 (1:10.1.34-0ubuntu0.18.04.1) を設定しています ...
libdbd-mysql-perl (4.046-1) を設定しています ...
mariadb-client-10.1 (1:10.1.34-0ubuntu0.18.04.1) を設定しています ...
zabbix-server-mysql (1:3.4.14-1+bionic) を設定しています ...
mariadb-server-10.1 (1:10.1.34-0ubuntu0.18.04.1) を設定しています ...
Created symlink /etc/systemd/system/mysql.service → /lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /lib/systemd/system/mariadb.service.
ureadahead (0.100.0-20) のトリガを処理しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
systemd (237-3ubuntu10.3) のトリガを処理しています ...

 

効果確認をする

以下のようにパスワードなしで DB にアクセスできれば debconf の設定が正しかったと言える。

% sudo mysql -u root -pmysql

( パスワードなしで DB にアクセスできれば, debconf の設定が正しかったといえる )