PR

apt-select 高速ミラーサーバーを設定する

apt コマンドを実行してパッケージをダウンロードする際、近くの高速な配信サーバーを指定すると、高速にダウンロードされ、待ち時間を短縮することが期待できます。

スポンサーリンク

apt-select

サーバーの運用に慣れている人であれば、自前のワンライナーでサクッと設定を確認したり書き換えたりすると思いますが、ここでは、apt-select を使用して比較的簡単で比較的安全にミラーサーバーを設定する方法を紹介します。

インストール

いくつかの方法を記載します。いずれかを実行してインストールします。

方法1

sudo apt install python3-pip
pip3 install --upgrade pip

sudo apt install python3-setuptools
pip3 install apt-select
sudo python3 apt-select/setup.py install

方法2

sudo apt install python3-pip
pip3 install --upgrade pip

sudo apt install git
pip3 install git+https://github.com/jblakeman/apt-select.git

sudo apt install python3-setuptools
sudo python3 apt-select/setup.py install

方法3

sudo apt install git
git clone https://github.com/jblakeman/apt-select

sudo apt install python3-setuptools
sudo python3 apt-select/setup.py install

使い方

好みのサーバーを見つけて sources.list を生成します。この例では、生成されたファイルは次の場所に出力されます:

/home/seeckjp/sources.list

※ファイルを生成しただけでは apt に影響しないことにご注意ください

日本のサーバーを1つ探す

次のコマンドを実行して日本のサーバーを1つ探します:

apt-select -C=JP

実行例:

seeckjp@seeckjp-ubuntu:~$ apt-select -C=JP
Getting list of mirrors...done.
Testing latency to mirror(s)
[9/9] 100%
Getting list of launchpad URLs...done.
Looking up 1 status(es)
1. ftp.riken.jp
    Latency: 9.49 ms
    Org:     RIKEN
    Status:  Up to date
    Speed:   1 Gbps
Selecting mirror http://ftp.riken.jp/Linux/ubuntu/ ...
New config file saved to /home/seeckjp/sources.list

日本のサーバーを3つ探して選ぶ

次のコマンドを実行して日本のサーバーを3つ探して選択します:

apt-select -C=JP -c -t=3

実行例:

seeckjp@seeckjp-ubuntu:~$ apt-select -C=JP -t=3 -c
Getting list of mirrors...done.
Testing latency to mirror(s)
[9/9] 100%
Getting list of launchpad URLs...done.
Looking up 3 status(es)
[3/3] 100%
1. ftp.riken.jp
    Latency: 9.94 ms
    Org:     RIKEN
    Status:  Up to date
    Speed:   1 Gbps
2. linux.yz.yamagata-u.ac.jp
    Latency: 17.24 ms
    Org:     Yamagata University
    Status:  Up to date
    Speed:   10 Gbps
3. ftp.jaist.ac.jp
    Latency: 20.69 ms
    Org:     JAIST
    Status:  Up to date
    Speed:   4 Gbps
Choose a mirror (1 - 3)
'q' to quit 1
Selecting mirror http://ftp.riken.jp/Linux/ubuntu/ ...
New config file saved to /home/seeckjp/sources.list

日本のサーバーで週間実績から選ぶ

次のコマンドを実行して日本のサーバーを週間実績を考慮して3つ探し、選択します:

apt-select -C JP -c -t 3 -m one-week-behind

実行例:

seeckjp@seeckjp-ubuntu:~$ apt-select -C JP -c -t 3 -m one-week-behind
Getting list of mirrors...done.
Testing latency to mirror(s)
[9/9] 100%
Getting list of launchpad URLs...done.
Looking up 3 status(es)
[3/3] 100%
1. ftp.riken.jp (current)
    Latency: 9.35 ms
    Org:     RIKEN
    Status:  Up to date
    Speed:   1 Gbps
2. ftp.tsukuba.wide.ad.jp
    Latency: 12.71 ms
    Org:     Tsukuba WIDE
    Status:  Two days behind
    Speed:   1 Gbps
3. ubuntutym.u-toyama.ac.jp
    Latency: 17.21 ms
    Org:     UNIVERSITY OF TOYAMA with Ubuntu Japanese LoCo
    Status:  Up to date
    Speed:   1 Gbps
Choose a mirror (1 - 3)
'q' to quit 1
Selecting mirror http://ftp.riken.jp/Linux/ubuntu/ ...
New config file saved to /home/seeckjp/sources.list

設定を適用する

現在の内容を確認します:

cat /etc/apt/sources.list | grep -v "#"

生成された sources.list をバックアップしてから適用します:

sudo cp /etc/apt/sources.list{,.backup} && sudo mv sources.list /etc/apt/

適用された内容を確認します:

cat /etc/apt/sources.list | grep -v "#"

アップデートの検索と適用をします:

sudo apt update && sudo apt upgrade 

※apt-select は設定ファイルを書き出すもので、恒久的にシステムに組み込む必要はありませんで、不要であれば削除できます

問題点

近くて速いミラーサーバを探して適用できる apt-select はとても素晴らしいのですが、環境によっては apt-select の準備に必要となるダウンロード量が多く、この作業をしようとしている環境はダウンロードに時間がかかる環境なので、それでは意味がない…という場合もあるかもしれません。

そのような場合は、1つの環境でファイルを作成してコピー アンド ペーストしたり配布したりする方法やワンライナーで書き換えるほうが良いかもしれません。今回生成されたファイルは次の通りです:

$ cat sources.list | grep -v "#"
deb http://ftp.riken.jp/Linux/ubuntu/ bionic main restricted
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-updates main restricted
deb http://ftp.riken.jp/Linux/ubuntu/ bionic universe
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-updates universe
deb http://ftp.riken.jp/Linux/ubuntu/ bionic multiverse
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-updates multiverse
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-backports main restricted universe multiverse
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-security main restricted
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-security universe
deb http://ftp.riken.jp/Linux/ubuntu/ bionic-security multiverse

※バージョンや環境によっては、これまでより速いサーバーに自動的に接続される設定がなされている場合があり、その場合は、これらの作業自体が必要ありません

(参考) この環境のデフォルト設定は次の通りです:

$ cat /etc/apt/sources.list | grep -v "#"
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

エラー例

 :
 :
Selecting mirror http://ftp.riken.jp/Linux/ubuntu/ ...
Traceback (most recent call last):
  File "/home/seeckjp/.local/lib/python3.6/site-packages/apt_select/apt.py", line 180, in generate_new_config
    with open(self.new_file_path, 'w') as f:
PermissionError: [Errno 13] Permission denied: '/home/seeckjp/sources.list'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/seeckjp/.local/lib/python3.6/site-packages/apt_select/__main__.py", line 234, in apt_select
    sources.generate_new_config(work_dir, new_mirror)
  File "/home/seeckjp/.local/lib/python3.6/site-packages/apt_select/apt.py", line 184, in generate_new_config
    "Unable to generate new sources.list:\n\t%s\n" % err
apt_select.apt.SourcesFileError: Unable to generate new sources.list:
        [Errno 13] Permission denied: '/home/seeckjp/sources.list'


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/apt-select", line 11, in <module>
    load_entry_point('apt-select==2.2.1', 'console_scripts', 'apt-select')()
  File "/home/seeckjp/.local/lib/python3.6/site-packages/apt_select/__main__.py", line 245, in main
    apt_select()
  File "/home/seeckjp/.local/lib/python3.6/site-packages/apt_select/__main__.py", line 236, in apt_select
    exit("Error generating new config file" % err)
TypeError: not all arguments converted during string formatting

ファイルを出力する際に [Errno 13] Permission denied と表示された場合は、現在の権限で既存の sources.list が更新できない状態です。例えば、sudo を付けて apt-select を実行した場合、sources.list が root 所有となり、通常実行した apt-select では更新できません。次のコマンドを実行して sources.list を削除し、apt-select を再実行します:

$ sudo rm sources.list

関連

Windows 10 に Microsoft Store から Ubuntu 18.04 をインストールする方法については、次のサポート記事をご参照ください:

その他の OS をインストールする方法については、次のサポート記事をご参照ください:

注意

  • 本操作例は、Windows 10 にインストールされたアプリ Ubuntu 18.04 のものです

スポンサードリンク

タイトルとURLをコピーしました