Ubuntu Japanese Team Ubuntu 14.04 日本語パッケージリポジトリのミラーサーバーをローカルに立ててみました。
構成的には以下のようになります
環境
RepoMirror, ClientHost 共に Ubuntu 14.04 Server amd64 です。
本当は Ubuntu Japanese Team とは全く関係が無い重くて遅い別のリポジトリがあって、複数台のサーバーからリポジトリを直接参照するのが大変なので、最終的にはそのリポジトリをミラーする予定です。
ClientHost 側の確認
まず、仮にリポジトリのミラーを使用しない場合に ClientHost に Ubuntu 14.04 日本語パッケージリポジトリを登録するとしたら sources.list に記載すべき内容を確認します。
https://www.ubuntulinux.jp/japanese を参考にすると、Ubuntu 14.04 (trusty) の場合は以下の内容で良いようです。 (読みやすくするために適宜スペースを入れてます。)
$ wget --output-document - --quiet https://www.ubuntulinux.jp/sources.list.d/trusty.list ## Ubuntu Japanese LoCo Team's repository for Ubuntu 14.04 ## Please report any bugs to https://bugs.launchpad.net/ubuntu-jp-improvement deb http://archive.ubuntulinux.jp/ubuntu trusty main deb-src http://archive.ubuntulinux.jp/ubuntu trusty main deb http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse deb-src http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse
https://wiki.debian.org/Multiarch/HOWTO を読むと、「 deb http:... 」の場合は、 dpkg コマンドで得られるアーキテクチャ (amd64 とか armhf とか) をリポジトリからダウンロードするようです。
- TestClient にて現在のマシンアーキテクチャを dpkg コマンドで確認します。
$ dpkg --print-architecture amd64Ubuntu 14.04 Server amd64 なサーバーなので、amd64 です。
- マシンアーキテクチャ以外のインストール可能なアーキテクチャも確認します。
$ dpkg --print-foreign-architectures i386amd64 以外だと、i386 用のパッケージもインストール可能になってます。
- これらは以下のようにファイルでも確認できるようです。
$ cat /var/lib/dpkg/arch amd64 i386
以上より、 https://www.ubuntulinux.jp/sources.list.d/trusty.list の内容を sources.list に書いた場合は TestClient は amd64 と i386 アーキテクチャ及びソースコードのパッケージをダウンロードしてインストールする可能性があることがわかりました。
なので、TestClient のためのミラーサーバー RepoMirror では amd64 と i386 用及びソースコードのリポジトリを本家 archive.ubuntulinux.jp からミラーする必要があります。
余談ですが、sources.list で
deb [arch=armel,armhf] http://ports.ubuntu.com/ubuntu-ports quantal main universe
という感じでアーキテクチャを指定すると dpkg で得られるアーキテクチャを無視して armel, armhf 用のパッケージをインストールすることになるようです。 (指定したリポジトリに armel, armhf 用のパッケージが用意されていない場合には apt-get update が失敗するはずです。)
RepoMirror 構築
必要なパッケージインストール
$ sudo apt-get install apt-mirror
$ sudo apt-get install nginx
上の「ClientHost 側の確認」により、RepoMirror では以下のリポジトリを本家からミラーする必要があることがわかります。
Architecture | Uri | Suite | Components |
---|---|---|---|
amd64 | http://archive.ubuntulinux.jp/ubuntu | trusty | main |
i386 | http://archive.ubuntulinux.jp/ubuntu | trusty | main |
src | http://archive.ubuntulinux.jp/ubuntu | trusty | main |
amd64 | http://archive.ubuntulinux.jp/ubuntu-ja-non-free | trusty | multiverse |
i386 | http://archive.ubuntulinux.jp/ubuntu-ja-non-free | trusty | multiverse |
src | http://archive.ubuntulinux.jp/ubuntu-ja-non-free | trusty | multiverse |
- /etc/apt/mirror.list は以下のようになりました。
$ cat /etc/apt/mirror.list ############# config ################## # # set base_path /var/spool/apt-mirror # # set mirror_path $base_path/mirror # set skel_path $base_path/skel # set var_path $base_path/var # set cleanscript $var_path/clean.sh # set defaultarch <running host architecture> # set postmirror_script $var_path/postmirror.sh # set run_postmirror 0 set nthreads 20 set _tilde 0 # ############# end config ############## deb-amd64 http://archive.ubuntulinux.jp/ubuntu trusty main deb-i386 http://archive.ubuntulinux.jp/ubuntu trusty main deb-src http://archive.ubuntulinux.jp/ubuntu trusty main deb-amd64 http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse deb-i386 http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse deb-src http://archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse clean http://archive.ubuntulinux.jp/ubuntu clean http://archive.ubuntulinux.jp/ubuntu-ja-non-free
このファイルには本家 Ubuntu のリポジトリ (http://archive.ubuntu.com/ubuntu) がすでに載っていましたが、今回これらはミラーしないのでバッサリ削除して Ubuntu 14.04 日本語パッケージリポジトリに関するものを載せています。
最後の二行の「 clean ... 」はこれを付けないとミラー同期する度に不要となるファイルが削除されず、ディスク使用量が不必要にどんどん増えていってしまうようです。
mirror.list の内容に従いミラー同期
$ sudo apt-mirror
同期が完了すると /var/spool/apt-mirror/mirror/ 配下に同期されたファイルが保存されています。
$ ls -la /var/spool/apt-mirror/mirror/
total 12
drwxr-xr-x 3 apt-mirror apt-mirror 4096 Nov 11 12:23 .
drwxr-xr-x 5 apt-mirror apt-mirror 4096 Oct 28 19:11 ..
drwxr-xr-x 4 root root 4096 Nov 11 12:23 archive.ubuntulinux.jp
このディレクトリ構成はどうやら以下のようになっているようです。
/var/spool/apt-mirror/mirror/{Uri}/{Suite}/{Component}/binary-{Architecture}/
インストールする deb パッケージは以下にあるようです。
/var/spool/apt-mirror/mirror/{Uri}/pool/{Component}/
ミラーしたリポジトリは nginx を使って HTTP で公開します。
今回はミラーしたリポジトリの公開専用として nginx 使うので、 /etc/nginx/sites-available/default を書き換えることにします。
$ pwd /etc/nginx/sites-available $ diff -u default.org default --- default.org 2014-03-05 07:25:36.000000000 +0900 +++ default 2014-10-30 12:50:07.525282000 +0900 @@ -21,8 +21,7 @@ listen 80 default_server; listen [::]:80 default_server ipv6only=on; - root /usr/share/nginx/html; - index index.html index.htm; + root /var/spool/apt-mirror/mirror; # Make site accessible from http://localhost/ server_name localhost; @@ -33,6 +32,9 @@ try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules + + autoindex on; + autoindex_exact_size off; } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requestsnginx を再起動
$ sudo service nginx restartブラウザから http://XXX.XXX.XXX.XXX/ で公開してる内容を確認できます。 (XXX.XXX.XXX.XXX はミラーサーバーの IP アドレスです。)
オリジナルのリポジトリは随時更新されるので、 RepoMirror で cron とかで定期的に sudo apt-mirror を実行するのが良いようです。 (今回はこれ実施してません。)
ClientHost の設定
/etc/apt/sources.list.d/ubuntu-ja.list 設置
$ cat /etc/apt/sources.list.d/ubuntu-ja.list
deb http://[RepoMirror の IP]/archive.ubuntulinux.jp/ubuntu trusty main
deb-src http://[RepoMirror の IP]/archive.ubuntulinux.jp/ubuntu trusty main
deb http://[RepoMirror の IP]/archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse
deb-src http://[RepoMirror の IP]/archive.ubuntulinux.jp/ubuntu-ja-non-free trusty multiverse
- Ubuntu Japanese Team の GPG キーをインポート
$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - $ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
RepoMirror にでミラーしたパッケージの正当性を確認するために必要なようです。
パッケージのインデックスをアップデート
$ sudo apt-get update
以上により、ClientHost は RepoMirror のミラーされたリポジトリを使うようになりました。
試しに RepoMirror からパッケージをインストールしてみます。
$ sudo apt-get install ubuntu-defaults-ja
参考
- https://wiki.debian.org/Multiarch/HOWTO
- http://blog.felipe-alfaro.com/2014/05/30/create-a-local-mirror-of-ubuntu-packages-using-apt-mirror/
- https://www.ubuntulinux.jp/japanese
- http://sasasin.net/docs/?BuildLinuxRepositoryServer
- http://unix.stackexchange.com/questions/137848/apt-mirror-clean-script-isnt-deleting-anything
0 件のコメント:
コメントを投稿