Skip to content

Instantly share code, notes, and snippets.

@prirai
Created February 15, 2025 13:30
Smarter ranking for pacman mirrors, based on delay and mirror score. (need to have curl and rankmirrors installed)
#!/bin/bash
default_delay=3600
default_score=10
read -p "Enter delay (default: $default_delay, lower is better): " delay
read -p "Enter score (default: $default_score, lower is better): " score
delay=${delay:-$default_delay}
score=${score:-$default_score}
curl -s "https://archlinux.org/mirrors/status/json/" -o index.json
cat index.json | jq ".urls[] | select(.completion_pct == 1.0) | select(.delay < $delay) | select(.score < $score) | .url" | \
sed 's/"//g' | \
sed 's/^/Server = /g' | \
sed 's/$/$repo\/os\/$arch/g' > m1_list
total_lines=$(wc -l < m1_list)
echo "Testing across $total_lines servers to find the 100 fastest mirrors."
percentage_interval=$((total_lines / 20))
awk -v interval="$percentage_interval" '
BEGIN {percent = 5}
NR % interval == 0 {print "# " percent "%"}
{print}
NR % interval == 0 {percent += 5}
' m1_list > mnt_list
rankmirrors -n 100 mnt_list | tee m2_list
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment