Debian testingのsystemdをダウングレードする


概要

Debian testing amd64 systemd version 240-4 がメモリリーク起こしている模様。
いったん、メモリリークしていなかった(と思う)前のバージョン 240-2 へダウングレードする手順。

240-2で今のところリークしている様子はなし。

(2019/2/7 追記)
buster(testing)にsystemd 240-5 がリリースされましたのでメモリリークは解消済。

メモリリークしている様子

muninのグラフで右肩が上がりで何かリークしているな、と思ってたら systemd-journal が激しく仮想メモリ使ってる。実メモリもちょっといつもより食っている気もするが、仮想メモリに比べれば微々たるもん。

uptime 3日のsshしか動いてない1コア512MBのサーバで 14GB 以上使ってる。結構な勢い。

あの伝説の OOM Killer 君も Kill 候補 No.1 としてマークしています。怖。
このまま放置したらどうなるんやろ。

Debian package downgrade

ダウングレードする方法で比較的安全で、楽なのが preferences を使う方法。

ところが、ダウングレード先のバージョンのパッケージはアーカイブミラーにもうないので、どっかから deb パッケージを入手せなあかん。公式は https://snapshot.debian.org/ なので、ここからダウンロードできる。

今回は /var/cache/apt/archive に残ってた版を使います。
自分が使ったものはこちらに置いときます。
https://ftp.pw2.org/deb/

1. 現在入ってるバージョンを確認

% sudo dpkg -i list | grep systemd


240-4 が入ってますね。これを、240-2 にダウングレードします。
systemd以外の4パッケージも依存関係なので、合わせてダウングレードします。

2. ダウングレード先のパッケージを入手する

snapshot.debian.orgや/var/cache/apt/archivesにあるdebをコピーしてきてください。
自分の使ったやつを使う手順は以下。

% wget https://ftp.pw2.org/deb/systemd_240-2.tar
% ls -l
% tar tvf systemd_240-2.tar
% tar xvf systemd_240-2.tar
% ls -l

3. preferencesファイルを配置する

preferences設定はどのパッケージを使うか優先度を指定するもの。
通常は最新版を使う優先設定になっているので、240-2をdpkg -iで入れても apt-get dist-upgrade で 240-4 にアップグレードされてしまうので、これを防ぐため、240-2がより高い優先度になるようにする。

/etc/apt/preferences.d/ 配下にテキストファイルを置くと、apt系コマンド実行時に毎回読み込んでくれます。

今回置くファイルの内容は以下。

% cd systemd_240-2
% ls
% cat systemd

設置する

% sudo mv systemd /etc/apt/preferences.d/
% cat /etc/apt/preferences.d/systemd

これで、apt-get updateaptitude dist-upgradeとかやっても240-4にならないので大丈夫。240-5か240-6がリリースされたときには、/etc/apt/preferences.d/systemd を削除すればOK。

4. ダウングレード実行

ようやくダウングレード実行。急いでるならこれだけでよいね。

% sudo dpkg -i *.deb

5. 解消したか確認する

% ps aux | grep systemd

大丈夫そうですね。
為念、サーバ再起動しといたほうがよいでしょう。

% sudo shutdown -r now

おわり