前提
2015年も残す所あと数日ですね。
今年はあと何回#gentooinstallbattleにエントリーできるでしょうか。
Gentoo Linuxをインストールためには2つのアーカイブファイルをダウンロードします。
- stage3
/
ツリーのアーカイブ, つまりOSとして成立するために必要なあらゆるファイル- (以前はstage1, stage2もありました)
- portageスナップショット
- Gentoo Linuxのパッケージ管理システムであるPortageのリポジトリのアーカイブ
このうち、portageスナップショットについては ${ミラーサイトのURL}/snapshots/portage-latest.tar.{xz,bz2}
というURIで常に最新のアーカイブを入手できるので毎回同じコマンドラインが使えます。
お気に入りのミラーサイトを見つけたらgistに curl -LO 'ftp://ftp.jaist.ac.jp/pub/Linux/Gentoo/snapshots/portage-latest.tar.xz'
とでもメモしておけば、あとはインストールのたびに貼り付けてEnterキーを押すだけです。
しかしstage3はファイル名にビルドされた日付が含まれるため毎回同じURIで、というわけにはいきません。
Gentoo Linuxをインストールするなら少しでも楽をしたいというのが人情だと思いますので、今回は楽にstage3をダウンロードする方法を考えてみます。
方法
最新のstage3ファイルのpathはこのようなフォーマットで latest-stage3-${ARCH}.txt
というファイルに書かれています。
root@sysresccd /mnt/gentoo % curl -L 'ftp://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/amd64/autobuilds/latest-stage3-amd64.txt' # Latest as of Sun, 27 Dec 2015 12:30:01 +0000 # ts=1451219401 20151225/stage3-amd64-20151225.tar.bz2 249949601
そこでgrepを使って #
で始まる行を除外し、awkを使ってスペースで区切られた1つ目のフィールドを取り出すことでstage3ファイルのpathを得ることができます。
curl -L 'tp://ftp.iij.ad.jp/pub/linux/gentoo/releases/amd64/autobuilds/latest-stage3-amd64.txt' -s | grep -vE '^\s*(#|$)' | awk '{print $1}'
したがって、このようにすればいつでも最新のstage3ファイルを得ることができます。
root@sysresccd /mnt/gentoo % MIRROR='ftp://ftp.jaist.ac.jp/pub/Linux/Gentoo'; curl -LO "${MIRROR}/releases/amd64/autobuilds/$(curl -L ${MIRROR}/releases/amd64/autobuilds/latest-stage3-amd64.txt -s | grep -vE '^\s*(#|$)' | awk '{print $1}')" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 238M 100 238M 0 0 6255k 0 0:00:39 0:00:39 --:--:-- 8091k
これで#gentooinstallbattleが少し楽になりますね!