CUBE SUGAR CONTAINER

技術系のこと書きます。

Ubuntu 18.04 LTS の APT で高速なミラーリポジトリを使う

Vagrant や Docker のイメージの中には APT のリポジトリが決め打ちになっているものがある。 高速なミラーリポジトリが使えないとアップデートが遅くて作業に難儀することになる。 今回は、そんなときの解決方法について。

使った環境は次の通り。

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
$ uname -r
4.15.0-60-generic

ミラーリポジトリを使えるようにする

例えば、初期状態だと次のようになっている場合がある。

$ cat /etc/apt/sources.list | sed -e "/^#/d" -e "/^$/d"
deb http://archive.ubuntu.com/ubuntu bionic main restricted
deb http://archive.ubuntu.com/ubuntu bionic-updates main restricted
deb http://archive.ubuntu.com/ubuntu bionic universe
deb http://archive.ubuntu.com/ubuntu bionic-updates universe
deb http://archive.ubuntu.com/ubuntu bionic multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates multiverse
deb http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse

現行の APT はリポジトリの URL を mirror://mirrors.ubuntu.com/mirrors.txt に指定することでミラーが使えるようになるらしい。 試しに上記を sed コマンドで置換してみよう。

$ sudo sed -i.bak -e 's%http://[^ ]\+%mirror://mirrors.ubuntu.com/mirrors.txt%g' /etc/apt/sources.list

実行結果はこんな感じ。 なお、元のファイルも .bak という名前で残されているので失敗しても元に戻せる。

$ cat /etc/apt/sources.list | sed -e "/^#/d" -e "/^$/d"
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main restricted
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic universe
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates universe
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security universe
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security multiverse

更新してみるとネットワーク的に近場のミラーリポジトリが使われるようになるはず。

$ sudo apt update
$ sudo apt upgrade -y

ちなみに、上記のテクニックは Ubuntu 18.04 LTS (Bionic) だけでなく Ubuntu 10.04 (Lucid) 以降で使えるらしい。 めでたしめでたし。