LoginSignup
33
32

More than 1 year has passed since last update.

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

Last updated at Posted at 2015-01-10

現象

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 等のパッケージに分類されているので、それぞれ以下の場所からダウンロードする。

msys パッケージ:
64bit: https://mirror.msys2.org/msys/x86_64/
32bit: https://mirror.msys2.org/msys/i686/

それ以外:
mingw32: https://mirror.msys2.org/mingw/mingw32/
mingw64: https://mirror.msys2.org/mingw/mingw64/
clang32: https://mirror.msys2.org/mingw/clang32/
clang64: https://mirror.msys2.org/mingw/clang64/
ucrt64: https://mirror.msys2.org/mingw/ucrt64/

ダウンロードしたファイルは、/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

参考

33
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
32