Open1

Arch系Linuxのレポジトリミラー更新方法(Rate Mirrors)

epsilon phoenixepsilon phoenix

Rate Mirrors[1]

https://github.com/westandskif/rate-mirrors

Arch系のOSのミラーリストを取得して、それぞれの速度を簡単に検査して、早い者順に並べ替えてくれているようです。
AURからインストールできます。

yay -S rate-mirrors
yay -S rate-mirrors-bin

Manjaro標準のパッケージマネージャーはAURにも対応しています。

pamac build rate-mirrors

Rate Mirrorsを自分でビルドするとプログラム名がrate_mirrorsになります。
上記パッケージでは、rate-mirrorsに名前が変更されています。

Rate Mirrorsを使った、aliasの例

githubにも記載があるalias例の応用です。
日本から近いサーバーから探すのと、protocolはhttpsを指定しています。

Manjaro

mirror update only

from stdin
日本限定

alias mirror-update='
    export TMPFILE="$(mktemp)"; \
    export TMPFILE2="$(mktemp)"; \
    sudo true; \
    curl  -SsLo $TMPFILE2 https://repo.manjaro.org/status.json ;
    jq -r ".[]|select(.country==\"Japan\")|.url" $TMPFILE2 | sed "s/http:/https:/" | \
    rate-mirrors --protocol https --min-bytes-per-mirror 100 --save=$TMPFILE stdin \
      --path-to-return="stable/\$repo/\$arch" \
      --output-prefix="Server = " \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && sudo rm $TMPFILE2'

paru

alias ua-drop-caches='sudo paccache -rk3; paru -Sc --aur --noconfirm'
alias ua-update-all='export TMPFILE="$(mktemp)"; \
    sudo true; \
    rate-mirrors --protocol https \
      --entry-country=JP --max-jumps=1 --country-neighbors-per-country=2 \
      --save=$TMPFILE manjaro --max-delay=21600 \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && ua-drop-caches \
      && paru -Syyu --noconfirm'

yay

paruの部分をyayに変更しているだけです。

alias ua-drop-caches='sudo paccache -rk3; yay -Sc --aur --noconfirm'
alias ua-update-all='export TMPFILE="$(mktemp)"; \
    sudo true; \
    rate-mirrors --protocol https \
      --entry-country=JP --max-jumps=1 --country-neighbors-per-country=2 \
      --save=$TMPFILE manjaro --max-delay=21600 \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && ua-drop-caches \
      && yay -Syyu --noconfirm'

AURを使わない場合

paruの部分をpacmanに変更しているだけです。

alias ua-drop-caches='sudo paccache -rk3; sudo pacman -Sc --noconfirm'
alias ua-update-all='export TMPFILE="$(mktemp)"; \
    sudo true; \
    rate-mirrors --protocol https \
      --entry-country=JP --max-jumps=1 --country-neighbors-per-country=2 \
      --save=$TMPFILE manjaro --max-delay=21600 \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && ua-drop-caches \
      && sudo pacman -Syyu --noconfirm'

Arch

manjaroの部分をarchに変更しているだけです。

mirror update only

from stdin
日本限定

alias mirror-update='
    export TMPFILE="$(mktemp)"; \
    sudo true; \
    curl -s "https://archlinux.org/mirrorlist/?country=JP&protocol=https&use_mirror_status=on" | \
    sed -e "s/^#Server = //" -e "/^#/d" | sed "s/http:/https:/" | \
    rate-mirrors --concurrency=40 --protocol https --min-bytes-per-mirror 100 --save=$TMPFILE stdin \
        --comment-prefix="# " \
        --path-to-test="extra/os/x86_64/extra.files" \
        --output-prefix="Server = " \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      '

paru

alias ua-drop-caches='sudo paccache -rk3; paru -Sc --aur --noconfirm'
alias ua-update-all='export TMPFILE="$(mktemp)"; \
    sudo true; \
    rate-mirrors --protocol https \
      --entry-country=JP --max-jumps=1 --country-neighbors-per-country=2 \
      --save=$TMPFILE arch --max-delay=21600 \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && ua-drop-caches \
      && paru -Syyu --noconfirm'

yay

alias ua-drop-caches='sudo paccache -rk3; yay -Sc --aur --noconfirm'
alias ua-update-all='export TMPFILE="$(mktemp)"; \
    sudo true; \
    rate-mirrors --protocol https \
      --entry-country=JP --max-jumps=1 --country-neighbors-per-country=2 \
      --save=$TMPFILE arch --max-delay=21600 \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && ua-drop-caches \
      && yay -Syyu --noconfirm'

AURを使わない場合

alias ua-drop-caches='sudo paccache -rk3; sudo pacman -Sc --noconfirm'
alias ua-update-all='export TMPFILE="$(mktemp)"; \
    sudo true; \
    rate-mirrors --protocol https \
      --entry-country=JP --max-jumps=1 --country-neighbors-per-country=2 \
      --save=$TMPFILE arch --max-delay=21600 \
      && sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup \
      && sudo mv $TMPFILE /etc/pacman.d/mirrorlist \
      && ua-drop-caches \
      && sudo pacman -Syyu --noconfirm'

補足

AUR対応パッケージマネージャーのインストール方法

Manjaroでは、pacmanのバージョンがArchよりも古い場合があるので、ビルドできない場合があります。
yayはManjaroのレポジトリに登録されているのでインストール可能です。

sudo pacman -S yay

paru

paru[2]をAUR[3]のPKGBUILDを用いてビルドします。

sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si

yay

yay[4]をAUR[5]のPKGBUILDを用いてビルドします。

sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

paccacheのインストール

paccacheはpacman-contrib[6]パッケージに含まれています。

sudo pacman -S pacman-contrib
脚注
  1. https://github.com/westandskif/rate-mirrors ↩︎

  2. https://github.com/Morganamilo/paru ↩︎

  3. https://aur.archlinux.org/paru.git ↩︎

  4. https://github.com/Jguer/yay ↩︎

  5. https://aur.archlinux.org/yay.git ↩︎

  6. https://gitlab.archlinux.org/pacman/pacman-contrib ↩︎