はじめに
御存知の通り、msys2はパッケージ管理にArch Linuxと同じくpacman
を採用している。
パッケージを更新するとき、
$ pacman -Syuu
なんてやるのは日常だろう。
すこしでもDLを速くしたい
pacman
が見に行く場所は何で決まっているのでしょうか?pacman
はもともとArch LinuxのものですからArch Wikiを見るのが確実です
Mirrors - ArchWiki
To enable mirrors, edit/etc/pacman.d/mirrorlist
and locate your geographic region. Uncomment mirrors you would like to use.
Example:
# Any
# Server = ftp://mirrors.kernel.org/archlinux/$repo/os/$arch
Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch
See #Sorting mirrors for tools that help choosing mirrors.
Tip:
- Uncomment 5 favorite mirrors and place them at the top of the mirrorlist file. That way it's easy to find them and move them around if the first mirror on the list has problems. It also makes merging mirrorlist updates easier.
- HTTP mirrors are faster than FTP due to persistent HTTP connection: with FTP, a new connection to server has to be established each time pacman requests a package to be downloaded, which results in a brief pause.
なるほど。とりあえず/etc/pacman.d/
を覗いてみると
$ls -l /etc/pacman.d/
合計 59K
drwxr-xr-x 1 yumetodo None 0 12月 23 20:06 gnupg/
-rw-r--r-- 1 yumetodo None 50K 11月 11 02:01 gnupg.tar
-rw-r--r-- 1 yumetodo None 405 1月 24 20:25 mirrorlist.mingw32
-rw-r--r-- 1 yumetodo None 415 1月 24 20:25 mirrorlist.mingw64
-rw-r--r-- 1 yumetodo None 400 1月 24 20:25 mirrorlist.msys
msys2の場合はミラーリストをそれぞれ持っているらしい。
試しにこれらを眺めてみよう。
##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/
##
## 32-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/
##
## 64-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
さて、こいつらは上から順番に使われているらしい。つまり、速そうなサーバーをPrimary
の上に書けばいい。もしそのサーバーが落ちているときは、下のものに自動的にフォールバックされる。
なおこれらは/etc/pacman.conf
からincludeされているだけなので、そっちをいじってもよい。
どのミラーを使うか
repo.msys2.org
は全世界からアクセスが集中するだろうから、たとえ速くても負荷分散の意味で使いたくない。
downloads.sourceforge.net
はリダイレクトしまくっているせいか遅い。
www2.futureware.at
は死んでいる。
というわけでミラーを探す必要がある。
日本でミラーといえば
- Tsukuba WIDE Public Mirror
- 山形大学
- JAIST
- 富山大学
- 理化学研究所
あたりが有名だ。自分がUbuntuを使うときは山形大学にお世話になっている(JAISTより安定している)し、archlinuxでは東京から近いのでTsukubaを使っている。
ところが残念ながらmsys2はJAISTでしかミラーされていないようだ(要検証)
MSYS2にimagemagickをインストールしてみた (1) - cBlog
http://yaritakunai.hatenablog.com/entry/2014/12/22/234317
を見ると
##
## 32-bit Mingw-w64 repository mirrorlist
## Changed on 2014-05-24
##
Server = http://ftp.jaist.ac.jp/pub/sourceforge/m/ms/msys2/REPOS/MINGW/i686
## Primary
Server = ftp://148.251.42.38/MINGW/i686
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
ftp.jaist.ac.jp
を見に行っている。
JAISTはmsys2をミラーしているが、ftp.jaist.ac.jp
ではない
ところがさっきのリンク見に行くと死んでいる。あれ、JAIST落ちたか?と思って、http://ftp.jaist.ac.jp 見に行くと生きている。どういうことだ?
$wget https://sourceforge.net/projects/msys2/files/Base/x86_64/msys2-x86_64-20161025.exe/download?use_mirror=jaist
--2017-01-24 20:08:01-- https://sourceforge.net/projects/msys2/files/Base/x86_64/msys2-x86_64-20161025.exe/download?use_mirror=jaist
sourceforge.net (sourceforge.net) をDNSに問いあわせています... 216.34.181.60
sourceforge.net (sourceforge.net)|216.34.181.60|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://downloads.sourceforge.net/project/msys2/Base/x86_64/msys2-x86_64-20161025.exe?r=&ts=1485256081&use_mirror=jaist [続く]
--2017-01-24 20:08:02-- https://downloads.sourceforge.net/project/msys2/Base/x86_64/msys2-x86_64-20161025.exe?r=&ts=1485256081&use_mirror=jaist
downloads.sourceforge.net (downloads.sourceforge.net) をDNSに問いあわせています... 216.34.181.59
downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://jaist.dl.sourceforge.net/project/msys2/Base/x86_64/msys2-x86_64-20161025.exe [続く]
--2017-01-24 20:08:03-- https://jaist.dl.sourceforge.net/project/msys2/Base/x86_64/msys2-x86_64-20161025.exe
jaist.dl.sourceforge.net (jaist.dl.sourceforge.net) をDNSに問いあわせています... 150.65.7.130, 2001:df0:2ed:feed::feed
jaist.dl.sourceforge.net (jaist.dl.sourceforge.net)|150.65.7.130|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 71003102 (68M) [application/octet-stream]
`download@use_mirror=jaist' に保存中
download@use_mirror=jaist 5%[======> ] 4.02M 1.27MB/s eta 50s
なるほど、https://jaist.dl.sourceforge.net/ 以下にあるらしい。
結論
##
## MSYS2 repository mirrorlist
##
Server = https://jaist.dl.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
## Primary
## msys2.org
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/
##
## 32-bit Mingw-w64 repository mirrorlist
##
Server = https://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/i686
## Primary
## msys2.org
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
# Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/
##
## 64-bit Mingw-w64 repository mirrorlist
##
Server = https://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
## Primary
## msys2.org
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
# Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
余談
この記事を書いているときに
MSYS2国内源
https://gist.github.com/elvisw/cc00088e9c8fd1c83aca
を見つけた。うーむ、もっとはやく見つけていれば・・・。