[メモ] aptのキャッシュサーバ(apt-cacher-ng)

## 概要
- `apt-get update; apt-get upgrade`での、aptのパッケージをキャッシュ。2度目/2台目以降は、LANのキャッシュサーバからファイル取得。
- *Apt-Cacher NG is a caching HTTP proxy* だそうです。
- 関連
    - [Apt-Cacher NG](https://www.unix-ag.uni-kl.de/~bloch/acng/)
    - [Alioth: Apt-Cacher NG: Project Home](https://alioth.debian.org/projects/apt-cacher-ng/)

![AptCacherNG01.png](https://qiita-image-store.s3.amazonaws.com/0/75594/1f4a6b21-3516-5bd5-02f9-be45bd195c5c.png)

\# あー、こんな簡単にできるのに、なんで いままでちゃんと調べなかったんだろうか。



## 環境
- aptキャッシュサーバ
    - Ubuntu 16.04
    - Raspberry Pi 2 (`2016-09-23-raspbian-jessie.img` と lite)
- クライアント
    - Ubuntuマシンたち
    - Raspberry Pi たち

\# らずぱい鯖でUbuntu(Intel)クライアント、もOK。その逆もまた然り。

## 手順
- サーバ: apt-cacher-ngのインストール
- クライアント: aptの設定(1ファイル追加 - `/etc/apt/apt.conf.d/02proxy`)

###　サーバ設定
- `apt-chcher-ng`導入
    - インストール:(パッケージインストールと自分自身へ)<br>`sudo apt-get update; sudo apt-get install apt-cacher-ng ; echo 'Acquire::http::Proxy "http://127.0.0.1:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy`
    - IPアドレス確認:<br>`ifconfig eth0 | grep inet\ addr`

    ```shell-session:表示例
pi@raspberrypi:~ $ ifconfig eth0 | grep inet\ addr 
              inet addr:10.10.6.165  Bcast:10.10.7.255  Mask:255.255.248.0
pi@raspberrypi:~ $ 
```

<!--
    - 一応、apt-cacher-ngの状態とIPアドレス確認:<br>`sudo systemctl status apt-cacher-ng ; ifconfig eth0 | grep inet\ addr`

    ```shell-session:表示例
pi@raspberrypi:~ $ sudo systemctl status apt-cacher-ng ; ifconfig eth0 | grep inet\ addr 
● apt-cacher-ng.service - Apt-Cacher NG software download proxy
       Loaded: loaded (/lib/systemd/system/apt-cacher-ng.service; enabled)
       Active: active (running) since Wed 2016-11-23 23:08:39 UTC; 18min ago
     Main PID: 2572 (apt-cacher-ng)
       CGroup: /system.slice/apt-cacher-ng.service
               └─2572 /usr/sbin/apt-cacher-ng SocketPath=/var/run/apt-cacher-ng/socket -c /etc/apt-cacher-ng ForeGround=1

    Nov 23 23:08:39 raspberrypi systemd[1]: Started Apt-Cacher NG software download proxy.
              inet addr:10.10.6.165  Bcast:10.10.7.255  Mask:255.255.248.0
pi@raspberrypi:~ $ 
```
-->
- 設定ファイル: `/etc/apt-cacher-ng/acng.conf`
    1. ファイルがキャッシュされるところ: `CacheDir: /var/cache/apt-cacher-ng`<br>`tail -f /var/log/apt-cacher-ng/apt-cacher.log`とかやると いろいろキャッシュされてる.
    2. ログが保存されるところ: `LogDir: /var/log/apt-cacher-ng`<br>`tail -f /var/log/apt-cacher-ng/apt-cacher.log` とかみてると、アクセスされてるのが見れる。
    3. 使用ポート: `Port:3142`
    4. レポートのページ: `ReportPage: acng-report.html`<br>`http://サーバのIP:3142/acng-report.html` にアクセスすると、レポートが見れる (\[Count Data\]をクリックしよう。)

### クライアント側設定
<!-- 1. `apt-cacher-ng`をインストールしたサーバの IPアドレスを確認しておく。 -->
2. `/etc/apt/apt.conf.d/02proxy`作成 (`http://鯖のIP:3142/` という感じで)

    ```txt:/etc/apt/apt.conf.d/02proxy 
Acquire::http::Proxy "http://10.10.6.165:3142";
```
    - コマンドラインにて<br>`echo 'Acquire::http::Proxy "http://AptCacherNg_no_IP:3142/";' | sudo tee /etc/apt/apt.conf.d/02proxy ; cat /etc/apt/apt.conf.d/02proxy`

    ```shell-session:実行例
pi@raspberrypi:~ $ echo 'Acquire::http::Proxy "http://10.10.6.165:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy ; cat /etc/apt/apt.conf.d/02proxy
Acquire::http::Proxy "http://10.10.6.165:3142";
Acquire::http::Proxy "http://10.10.6.165:3142";
pi@raspberrypi:~ $ 
```

3. あとは通常通りにインストールやら、アップグレードをすればよい、<br>`sudo apt-get update; sudo apt-get upgrade`

## その他
- サーバにするマシンは、LAN、ストレージアクセスがはやいのがいいとおもう。