30
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

MSYS2でパッケージのダウンロードに失敗するときの対処

現象

pacman コマンドで一部のパッケージのダウンロードに失敗する。

例:

$ pacman -S gcc
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (9) binutils-2.25-1  cloog-0.18.1-1  isl-0.12.1-1  mpc-1.0.2-3
               msys2-runtime-devel-2.0.16467.0bee699-1
               msys2-w32api-headers-4.0.0.4379.3403da3-1
               msys2-w32api-runtime-4.0.0.4379.3403da3-1
               windows-default-manifest-6.4-1  gcc-4.9.2-4

合計ダウンロード容量:    0.34 MiB
合計インストール容量:  232.47 MiB

:: インストールを行いますか? [Y/n]
:: パッケージを取得します ...
エラー: ファイル 'isl-0.12.1-1-x86_64.pkg.tar.xz' を downloads.sourceforge.net から取得するのに失敗しました : Failed to connect to cznic.dl.sourceforge.net port 80: Network is unreachable
警告: 複数のファイルの取得に失敗しました
エラー: 処理を完了できませんでした (ダウンロードライブラリエラー)
エラーが発生したため、パッケージは更新されませんでした。

対処1

ダウンロードに失敗するファイルを手動でダウンロードする。
パッケージは、msys, mingw32, mingw64 の3種類に分類されているので、それぞれ以下の場所からダウンロードする。

msys パッケージ:
32bit:
http://repo.msys2.org/msys/i686/
https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/i686/
64bit:
http://repo.msys2.org/msys/x86_64/
https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/x86_64/

mingw32 パッケージ:
http://repo.msys2.org/mingw/i686/
https://sourceforge.net/projects/msys2/files/REPOS/MINGW/i686/

mingw64 パッケージ:
http://repo.msys2.org/mingw/x86_64/
https://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/

ダウンロードしたファイルは、/var/cache/pacman/pkg に格納する。
最後に、pacman -S package-name を再実行すればよい。

コマンドラインからダウンロード

pacman がファイルをどこからダウンロードしてくるかは、/etc/pacman.conf および、そこからインクルードされている /etc/pacman.d/mirrorlist.* に記載されている。そこに記載された URL の末尾にファイル名を付けることで、ファイルを直接ダウンロードすることが出来る。

例:

$ cd /var/cache/pacman/pkg
$ wget http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/x86_64/isl-0.12.1-1-x86_64.pkg.tar.xz
$ pacman -S gcc

今回の場合、wget では正常にダウンロードできたが、代わりに curl を使うとダウンロードに失敗した。

$ curl -R -L -O http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/x86_64/isl-0.12.1-1-x86_64.pkg.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   373    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (7) Failed to connect to cznic.dl.sourceforge.net port 80: Network is unreachable

対処2

pacman内蔵のダウンローダーではなく、外部コマンドを使ってダウンロードを行うようにする。

/etc/pacman.conf[options] セクションに次のような行があるはずなので、使いたい外部コマンドに合わせて、先頭の # を削除して有効化すればよい。

#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

当然この設定を行う前に、その外部コマンドをインストールしておく必要がある。
wget を使う場合は出力がかなり多いので、-nv または -q オプションを付けてもよい。

例:

XferCommand = /usr/bin/wget -nv --passive-ftp -c -O %o %u

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
30
Help us understand the problem. What are the problem?