オフライン環境でapt-getを普通に使うapt-mirror 、セットアップしてみた。
オフライン環境でapt-getを普通に使うには、リポジトリをミラーリングすれば良いということがわかった。 http://hamakichitaro.hatenablog.com/entry/2013/07/23/064647
さっそく、試した。
できた!!
1.前準備
sudo apt-get update
sudo apt-get upgrade
sudo apt-get lubuntu-desktop #好み lubuntuで入り直して、動作を軽くしよう。
sudo apt-get emacs23 #好み
2.apt-mirror インストール
sudo apt-get install apt-mirror
3.apt-mirrorの設定変更
/etc/apt/mirror.list
backportsのデータ取得がコメントアウトされているのを外して、有効にする。
proposalはコメントアウトのままでいく。
/etc/apt/sources.list と /etc/apt/sources.list.d/ubuntu-ja.list を見て、必要な行を追加する。
※デフォルトのmirror.listの内容とsources.list、ubuntu-ja.listの内容が違う。apt-getで参照するものがミラーリングされていれば良いので、sources.list、ubuntu-ja.listを「正」としてmirror.listに追加修正するのが正しいと思う。
4.i18n対応を設定
apt-mirror ではi18n系のパッケージがダウンロードされないらしい。クライアントからこのミラーサイトにアクセスしてパッケージを取得するときに、i18n関係で 404 Not Found が返ってきてしまうそうです。これを修正するためには、i18n系のパッケージを手動でダウンロードする設定を入れるとのこと。
apt-mirror のポストミラースクリプト /var/spool/apt-mirror/var/postmirror.sh に書く。
#!/bin/bash RSYNC="rsync --recursive --times --links --hard-links --delete --delete-after" SOURCE="rsync://ftp.jaist.ac.jp/pub/Linux/ubuntu" TARGET="/var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu" dists=(raring raring-security raring-updates raring-backports) for dist in "${dists[@]}"; do
${RSYNC} ${SOURCE}/dists/${dist}/main/i18n/ ${TARGET}/dists/${dist}/main/i18n/
${RSYNC} ${SOURCE}/dists/${dist}/multiverse/i18n/ ${TARGET}/dists/${dist}/multiverse/i18n/
${RSYNC} ${SOURCE}/dists/${dist}/restricted/i18n/ ${TARGET}/dists/${dist}/restricted/i18n/
${RSYNC} ${SOURCE}/dists/${dist}/universe/i18n/ ${TARGET}/dists/${dist}/universe/i18n/
done
5.apt-mirror実行
sudo apt-mirror
sudo /var/spool/apt-mirror/var/clean.sh
ミラーデータが更新される。
apt-mirrorの処理の最後に/var/spool/apt-mirror/var/postmirror.shが実行される。clean.shは不要になったデータを削除するスクリプト。apt-mirrorではこのスクリプトが更新されるだけで、実行されない様子。実行は手動でやれとメッセージが出る。
6.定期更新をcronに設定
/etc/cron.d/apt-mirror にコメントアウトでサンプルがあるので、コメントアウトを外して、望む設定をする。
※今回は除外
※設定するときは、clean.shの実行もcron設定する必要がある?
7.HTTPサーバーを設定
今回はapache2にした。
sudo apt-get install apache2
sites-availableに新ファイルを作成。今回はサイト名 3種類に分けて、ファイルを作成した。
/etc/apache2/sites-available/archive.ubuntu.XXXXXXXX.jp
/etc/apache2/sites-available/security.ubuntu.XXXXXXXX.jp
/etc/apache2/sites-available/archive.ubuntulinux.XXXXXXXX.jp
※もちろん、XXXXXXXXはダミーです。
ファイルの中身
ServerName archive.ubuntu.XXXXXXXX.jp DocumentRoot /var/spool/apt-mirror/mirror/archive.ubuntu.com ServerAdmin admin@XXXXXXXX
※同じように3種類のファイルを作成する。Servername と DocumentRottを対応させる。
sites-enabledにシンボリックリンクを貼って、リロードする。
sudo a2ensite archive.ubuntu.XXXXXXXX.jp
sudo a2ensite security.ubuntu.XXXXXXXX.jp
sudo a2ensite archive.ubuntulinux.XXXXXXXX.jp
sudo service apache2 reload
以下、WEBサービスの動作確認
hostsファイルに記述して、仮想ホスト名でWEBサービスにアクセスできるようにする。
ブラウザでhttp:/archive.ubuntu.XXXXXXXX.jp/にアクセスして、ミラーサイトに元サイトと同じ内容が表示されればOK。
ここからはミラーリポジトリにアクセスする、apt-getクライアント側
8.aptのパッケージ取得先を変更
/etc/apt/sources.listの中身を一括置き換え
一括置き換え対象:http://archive.ubuntu.com/ubuntu/
一括置き換え後 :http://archive.ubuntu.XXXXXXXX.jp/ubuntu/
※同じように3種類置き換える。
hostsファイルで、名前解決を設定する。
192.168.0.XXX archive.ubuntu.XXXXXXXX.jp
192.168.0.XXX security.ubuntu.XXXXXXXX.jp
192.168.0.XXX archive.ubuntulinux.XXXXXXXX.jp
※ブラウザでhttp:/archive.ubuntu.XXXXXXXX.jp/ など3種類でアクセスして、ミラーサイトに元サイトと同じ内容が表示されればOK。
9.apt-get で更新確認
sudo apt-get update
できた。Good!!
※apt-getで無視ってメッセージ出るけど、なんで無視するんだろ?
※apt-mirrorでclean.shが更新されるけど、これ実行しないでapt-mirrorを再実行したらどうなるんだろ? rm文を上書きしないで追記する感じにしてくれないと、上書きされたら二度と消せなくなるのでは? もしかして、毎回ミラー元とファイルリストを突合して、差分をrm文にして載せてくれてるのかな。今度試そう。
今回、参考にしたサイト
http://yosida95.hatenablog.com/entry/2013/05/19/003744
とっても参考になった。感謝!!