pacman
msys2

msys2のミラーにjaistを使いたい


はじめに

御存知の通り、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の場合はミラーリストをそれぞれ持っているらしい。

試しにこれらを眺めてみよう。


mirrorlist.msys

##

## 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/



mirrorlist.mingw32

##

## 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/



mirrorlist.mingw64

##

## 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

を見ると


mirrorlist.mingw32

##

## 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/ 以下にあるらしい。


結論


mirrorlist.msys

##

## 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/



mirrorlist.mingw32

##

## 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/



mirrorlist.mingw64

##

## 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

を見つけた。うーむ、もっとはやく見つけていれば・・・。


License

CC BY 4.0

CC-BY icon.svg