Debian sidに公式配布版のZabbixパッケージがインストールできなかったので

Debian sid 使っていると、 Debian のリポジトリ以外からインストールするパッケージのインストールやアップデートが出来なくなるので「困ったな〜」となることがあったりします。

実際、 Zabbix がそうだったんですが、 Zabbix が公式に用意している Zabbix 3.4 / pre-4.0 のパッケージを sid にインストールするために stretch 対応のものでよかったのですけど、 sid の curl のバージョンが上がったことで libcurl3 から libcurl4 への変更が発生。

# dpkg -i /tmp/zabbix-release_3.4-1+stretch_all.deb
以前に未選択のパッケージ zabbix-release を選択しています。
(データベースを読み込んでいます ... 現在 155180 個のファイルとディレクトリがインストールされています。)
.../zabbix-release_3.4-1+stretch_all.deb を展開する準備をしています ...
zabbix-release (3.4-1+stretch) を展開しています...
zabbix-release (3.4-1+stretch) を設定しています ...
# apt update
ーーー 中略 ーーー
# apt install zabbix-server-mysql zabbix-frontend-php
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
zabbix-server-mysql : 依存: libcurl3 (<= 7.28.0) しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

その影響で libcurl3 に依存していた公式配布版のZabbixパッケージがインストール/アップデートができなくなってしまう、と…。
libcurl3 → libcurl4 になる前に公式配布版の Zabbix パッケージをインストールしていたので、 libcurl4 に依存する apache2 関連のパッケージのアップデートを libcurl3 に依存する Zabbix パッケージが邪魔をするという状態になってしまったというのが、自分のところで起こっていた状況だったわけです。


結局、解決策としては「 libcurl4 対応の Zabbix パッケージを自前でビルドして、それでできたパッケージをインストールすれば良い」ということだったんですが、Zabbix のアップデートができないサーバ上に Zabbix のビルドする環境を準備するにしても、やはり libcurl4 を必要とするパッケージが必要、ということで環境が用意できない。( インストール済みの Zabbix パッケージ全部削除すればできますけど…。)

ということで、Zabbix パッケージをインストールしていない状態の sid の仮想マシンを VirutalBox 上に構築して、そこにパッケージのビルド環境を整えてをすることに。
環境さえ準備できれば、すんなりと終わるんですけどね。

ということで、まず新たに用意した sid の仮想マシンに、Zabbix 公式配布版インストールのためのリポジトリデータを取得して、インストール。

root@debian:~# cd /tmp
root@debian:/tmp# wget https://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
--2018-09-24 10:36:08-- https://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
repo.zabbix.com (repo.zabbix.com) をDNSに問いあわせています... 162.243.159.138
repo.zabbix.com (repo.zabbix.com)|162.243.159.138|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 3876 (3.8K) [application/octet-stream]
`zabbix-release_3.4-1+stretch_all.deb' に保存中

zabbix-release_3.4-1+stretch_al 100%[=======================================================>] 3.79K --.-KB/s 時間 0s

2018-09-24 10:36:09 (68.2 MB/s) - `zabbix-release_3.4-1+stretch_all.deb' へ保存完了 [3876/3876]
root@debian:/tmp# dpkg -i zabbix-release_3.4-1+stretch_all.deb
以前に未選択のパッケージ zabbix-release を選択しています。
(データベースを読み込んでいます ... 現在 155180 個のファイルとディレクトリがインストールされています。)
.../zabbix-release_3.4-1+stretch_all.deb を展開する準備をしています ...
zabbix-release (3.4-1+stretch) を展開しています...
zabbix-release (3.4-1+stretch) を設定しています ...

このあと、"apt update" でパッケージ DB を更新しておきます。
更新が終わったら、ビルドに必要なパッケージのインストール。

root@debian:~# apt-get build-dep zabbix
パッケージリストを読み込んでいます... 完了
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
autoconf automake autopoint autotools-dev build-essential debhelper dh-autoreconf dh-strip-nondeterminism diffstat dpkg-dev
dwz g++ g++-8 gcc gcc-8 gettext gir1.2-harfbuzz-0.0 icu-devtools intltool-debian libarchive-zip-perl libasan5
libcurl4-openssl-dev libdpkg-perl libevent-core-2.1-6 libevent-dev libevent-extra-2.1-6 libevent-openssl-2.1-6
libevent-pthreads-2.1-6 libfile-stripnondeterminism-perl libgcc-8-dev libgcrypt20-dev libgdbm-dev libglib2.0-dev
libglib2.0-dev-bin libgpg-error-dev libgraphite2-dev libharfbuzz-dev libharfbuzz-gobject0 libicu-dev libicu-le-hb-dev
libiksemel-dev libiksemel3 libldap2-dev libltdl-dev libmysqlclient-dev libmysqlclient20 libodbc1 libopenipmi-dev
libopenipmi0 libpci-dev libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpq-dev libsensors4-dev libsigsegv2
libsnmp-base libsnmp-dev libsnmp30 libsqlite3-dev libssh2-1-dev libssl-dev libstdc++-8-dev libtool libubsan1 libudev-dev
libwrap0-dev libxml2-dev m4 make mysql-common odbcinst odbcinst1debian2 openjdk-11-jdk openjdk-11-jdk-headless
openjdk-11-jre openjdk-11-jre-headless patch pkg-config po-debconf python3-distutils python3-lib2to3 quilt unixodbc-dev
zlib1g-dev
アップグレード: 0 個、新規インストール: 86 個、削除: 0 個、保留: 12 個。
307 MB のアーカイブを取得する必要があります。
この操作後に追加で 623 MB のディスク容量が消費されます。
続行しますか? [Y/n]
ーーー 以下略 ーーー

続いて、Zabbix のソースを取得。取得が終わったらソースが展開されていることも確認。

root@debian:~# apt-get source zabbix
パッケージリストを読み込んでいます... 完了
17.5 MB のソースアーカイブを取得する必要があります。
取得:1 http://repo.zabbix.com/zabbix/3.4/debian stretch/main zabbix 1:3.4.14-1+stretch (dsc) [2,314 B]
取得:2 http://repo.zabbix.com/zabbix/3.4/debian stretch/main zabbix 1:3.4.14-1+stretch (tar) [17.5 MB]
取得:3 http://repo.zabbix.com/zabbix/3.4/debian stretch/main zabbix 1:3.4.14-1+stretch (diff) [9,744 B]
17.5 MB を 0秒 で取得しました (732 MB/s)
dpkg-source: info: extracting zabbix in zabbix-3.4.14
dpkg-source: info: unpacking zabbix_3.4.14.orig.tar.gz
dpkg-source: info: unpacking zabbix_3.4.14-1+stretch.debian.tar.xz
dpkg-source: info: applying font-config
dpkg-source: info: applying fping3-sourceip-option.patch
W: ファイル 'zabbix_3.4.14-1+stretch.dsc' がユーザ '_apt' からアクセスできないため、ダウンロードは root でサンドボックスを通さずに行われます。 - pkgAcquire::Run (13: 許可がありません)

root@debian:/usr/local/src# ls -l
合計 17088
drwxr-xr-x 16 root root 4096 9月 24 08:49 zabbix-3.4.14
-rw-r--r-- 1 root root 9744 9月 14 17:39 zabbix_3.4.14-1+stretch.debian.tar.xz
-rw-r--r-- 1 root root 2314 9月 14 17:39 zabbix_3.4.14-1+stretch.dsc
-rw-r--r-- 1 root root 17476022 9月 14 17:39 zabbix_3.4.14.orig.tar.gz

展開されたソースのディレクトリに移動後、dpkg-buildpackage コマンドでパッケージをビルド。

root@debian:/usr/local/src# cd zabbix-3.4.14/
root@debian:/usr/local/src/zabbix-3.4.14# dpkg-buildpackage -d -us -b -rfakeroot
ーーー 以下略 ーーー

エラーが出なければ、パッケージが生成されているはずなので、生成されたことを確認。

root@debian:/usr/local/src/zabbix-3.4.14# cd ../
root@debian:/usr/local/src# ls -l
合計 35704
drwxr-xr-x 16 root root 4096 9月 24 09:00 zabbix-3.4.14
-rw-r--r-- 1 root staff 514420 9月 24 09:00 zabbix-agent-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 401412 9月 24 09:00 zabbix-agent_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 2315552 9月 24 09:00 zabbix-frontend-php_3.4.14-1+stretch_all.deb
-rw-r--r-- 1 root staff 168348 9月 24 09:00 zabbix-get-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 295296 9月 24 09:00 zabbix-get_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 787800 9月 24 09:00 zabbix-java-gateway_3.4.14-1+stretch_all.deb
-rw-r--r-- 1 root staff 1385600 9月 24 09:00 zabbix-proxy-mysql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 717592 9月 24 09:00 zabbix-proxy-mysql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1384476 9月 24 09:00 zabbix-proxy-pgsql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 718412 9月 24 09:00 zabbix-proxy-pgsql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1304132 9月 24 09:00 zabbix-proxy-sqlite3-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 688024 9月 24 09:00 zabbix-proxy-sqlite3_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 194436 9月 24 09:00 zabbix-sender-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 307284 9月 24 09:00 zabbix-sender_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1806208 9月 24 09:00 zabbix-server-mysql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 2097844 9月 24 09:00 zabbix-server-mysql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1805288 9月 24 09:00 zabbix-server-pgsql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 2095684 9月 24 09:00 zabbix-server-pgsql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root root 9744 9月 14 17:39 zabbix_3.4.14-1+stretch.debian.tar.xz
-rw-r--r-- 1 root root 2314 9月 14 17:39 zabbix_3.4.14-1+stretch.dsc
-rw-r--r-- 1 root staff 17512 9月 24 09:00 zabbix_3.4.14-1+stretch_amd64.buildinfo
-rw-r--r-- 1 root staff 7338 9月 24 09:00 zabbix_3.4.14-1+stretch_amd64.changes
-rw-r--r-- 1 root root 17476022 9月 14 17:39 zabbix_3.4.14.orig.tar.gz

出来上がったパッケージを、アップデートしたいサーバに転送して、あとは各サーバで Zabbix パッケージをアップデートをすれば OK 、と。(アップデートする際には libcurl4 も同時にアップデートするのを忘れずに。)

root@vps2:/home/soukaku# ls -l zabbix*.deb
-rw-r--r-- 1 root staff 514420 9月 24 09:00 zabbix-agent-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 401412 9月 24 09:00 zabbix-agent_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 2315552 9月 24 09:00 zabbix-frontend-php_3.4.14-1+stretch_all.deb
-rw-r--r-- 1 root staff 168348 9月 24 09:00 zabbix-get-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 295296 9月 24 09:00 zabbix-get_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 787800 9月 24 09:00 zabbix-java-gateway_3.4.14-1+stretch_all.deb
-rw-r--r-- 1 root staff 1385600 9月 24 09:00 zabbix-proxy-mysql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 717592 9月 24 09:00 zabbix-proxy-mysql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1384476 9月 24 09:00 zabbix-proxy-pgsql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 718412 9月 24 09:00 zabbix-proxy-pgsql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1304132 9月 24 09:00 zabbix-proxy-sqlite3-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 688024 9月 24 09:00 zabbix-proxy-sqlite3_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 194436 9月 24 09:00 zabbix-sender-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 307284 9月 24 09:00 zabbix-sender_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1806208 9月 24 09:00 zabbix-server-mysql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 2097844 9月 24 09:00 zabbix-server-mysql_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 1805288 9月 24 09:00 zabbix-server-pgsql-dbgsym_3.4.14-1+stretch_amd64.deb
-rw-r--r-- 1 root staff 2095684 9月 24 09:00 zabbix-server-pgsql_3.4.14-1+stretch_amd64.deb
root@vps2:/home/soukaku# apt install libcurl4 ./zabbix-agent_3.4.14-1+stretch_amd64.deb ./zabbix-get_3.4.14-1+stretch_amd64.deb ./zabbix-server-mysql_3.4.14-1+stretch_amd64.deb ./zabbix-sender_3.4.14-1+stretch_amd64.deb

と、これで当面は問題がなくなったわけです。
Zabbix 側でパッケージの更新があったときには、ソースからビルドし直したものを入れなくちゃいけないという点で手間がかかりますが、 sid 使っているという点でそういうのは織り込み済みなわけですから、まぁ仕方ないこととして割り切ることにします。

トラックバック(0)

コメントする