平衡点
2017/12/11
_ apt-cacher-ng: Apt のキャッシュプロキシ
この記事は Debian/Ubuntu Advent Calendar 2017 の 2017/11 の記事です. 前日は @fumiyasu によるホームディレクトリをログインパスワードで暗号化でした.
「何か書きます」とか宣言しておきながら, 何をネタにするか結局決まらず... というわけで, 今までちゃんと書いてなかったネタとしてapt-cacher-ngについてまとめておきます.
apt-cacher-ng とは?
apt-cacher-ngは 「apt でパッケージを取得してインストール」する際に, 取得してくる Release ファイルや deb ファイルをキャッシュするための サーバプログラムです.
ユーザとして1台の計算機に Debian or Ubuntu を導入して作業している場合にはあまり恩恵に預かれないかもしれませんが,
- 複数台の計算機を管理している
- パッケージの作成作業を行なう
といった場合には, 頻繁に同じパッケージを取得する事になるため, この手のキャッシュプロキシは大変便利です.
私は試していませんが, 設定ファイルを見ると apt だけではなく Cygwin, Arch, Fedora なんかのキャッシュプロキシとしても動作できる様です.
導入と最低限の設定
apt を使いましょう
% sudo apt install apt-cacher-ng
これで
"http://localhost:3142"において キャッシュプロキシが動作しています. /etc/apt/apt.conf.d/99proxy あたりに
Acquire::http::Proxy "http://127.0.0.1:3142";
とでも書いておくと良いでしょう. これによって
apt ⇔ apt-cacher-ng ⇔ 外部リポジトリ
といった塩梅で動作します. apt-getなんかを実行すると モリモリとキャッシュにデータが貯まっていきます.
外部からのアクセス
他の計算機においても /etc/apt/apt.conf.d/99proxy あたりに
Acquire::http::Proxy "http://<apt-cacher-ng を動かしている計算機のIP>:3142";
を指定することでLAN内のキャッシュプロキシとして動作させることができます. 「数10〜数100台の stable を管理する」なんて用途の時には パッケージのキャッシュは非常に有効です.
メンテナンス
簡易なメンテナンス用の Web サービスが
http://localhost:3142
で機能していますので, これにアクセスしてみましょう. 利用状況やキャッシュの開放といった作業が可能です.
Tips
Tips というわけでもないですけれど 最近ハマった幾つかの事柄等.
外部リポジトリを HTTPS で公開している所がありますよね. こいう所へのアクセスに cache proxy を介する際には CONNECT request にする必要がありますので, 以下を設定します
PassThroughPattern: ^(deb\.nodesource\.com|desktop-download\.mendeley\.com):443$
といった塩梅です. ところで mendeley のリポジトリはいつ復活させるんでしょうかね.
まとめ
apt-cacher-ng を紹介しました.
個人で一台の Debian/Ubuntu 環境を利用している場合には あまり恩恵には預かれませんが,
- 複数台の計算機を管理している
- パッケージの作成作業を行なう
といった場合には, キャッシュとして動作するので非常に有用です.
また, 手元でコンテナや VM を複数上げる際(LXC, vagrantとか)にも有用だと期待されます (とか言いつつ, あんまり vagrant は使ってないんですけれど. LXC には有効です. オススメ).
そんなこんなで.
明日は @yohgami の予定です.