我正在使用一台三星Chromebook(搭载ARM芯片)。ports.ubuntu.com对我来说是一个相当慢的镜像。还有其他承载ARM软件包的镜像吗?
https://wiki.ubuntu.com/UbuntuDevelopment/PackageArchive#Ports似乎暗示没有,或者至少很少 - 还有吗?
/dists/$DIST/$REPO/binary-$ARCH/
,其中:
$DIST
是您的Ubuntu发行版,例如precise
、saucy
、trusty
等。$REPO
是您要查找的存储库,即main
、restricted
、universe
或multiverse
。$ARCH
是您要查找的架构,例如armhf
。/dists/saucy/main/binary-armhf/
,以便找到提供armhf
架构的main
软件源的镜像。如果一个镜像包含这个路径,意味着它应该有Saucy Salamander版本的main
软件源的armhf
架构的二进制软件包,并且脚本将输出FOUND:
以及镜像的URL。curl
。如果您没有安装它,请执行sudo apt-get install curl
进行安装。curl
在连接尝试超时之前可能会停顿)。它可以很容易地改进为仅扫描特定的镜像(例如,只在你的国家),但这是一个很好的起点。#!/bin/bash
# URL of the Launchpad mirror list
MIRROR_LIST=https://launchpad.net/ubuntu/+archivemirrors
# Set to the architecture you're looking for (e.g., amd64, i386, arm64, armhf, armel, powerpc, ...).
# See https://wiki.ubuntu.com/UbuntuDevelopment/PackageArchive#Architectures
ARCH=$1
# Set to the Ubuntu distribution you need (e.g., precise, saucy, trusty, ...)
# See https://wiki.ubuntu.com/DevelopmentCodeNames
DIST=$2
# Set to the repository you're looking for (main, restricted, universe, multiverse)
# See https://help.ubuntu.com/community/Repositories/Ubuntu
REPO=$3
mirrorList=()
# First, we retrieve the Launchpad mirror list, and massage it to obtain a newline-separated list of HTTP mirrors
for url in $(curl -s $MIRROR_LIST | grep -Po 'http://.*(?=">http</a>)'); do
mirrorList+=( "$url" )
done
for url in "${mirrorList[@]}"; do
(
# If you like some output while the script is running (feel free to comment out the following line)
echo "Processing $url..."
# retrieve the header for the URL $url/dists/$DIST/$REPO/binary-$ARCH/; check if status code is of the form 2.. or 3..
if curl --connect-timeout 1 -m 1 -s --head "$url/dists/$DIST/$REPO/binary-$ARCH/" | head -n 1 | grep -q "HTTP/1.[01] [23]..";
then
echo "FOUND: $url"
fi
) &
done
wait
echo "All done!"
find_mirrors
,并将其设置为可执行(chmod 755 find_mirrors
),然后按照以下方式执行它:$ ./find_mirrors armhf saucy main | grep FOUND
FOUND: http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports/
对我来说大约花了10-15分钟。我很惊讶地发现在Launchpad的镜像列表中,只有一个适用于Saucy的armhf
架构的镜像,即位于TU Chemnitz(这是位于德国的镜像;相比之下,ports.ubuntu.com似乎是位于英国,但可能对你来说仍然更快)。所以看起来对你的问题的答案更像是“是的,有一个备用镜像供你使用...”;-)
好消息是,我确实手动检查了这个镜像,它确实是ports.ubuntu.com的完整镜像,包含所有活跃的Ubuntu版本的所有软件包。所以,请尝试一下吧!
还要注意,你可能在其他版本的Saucy上运气更好。
备选方案(不推荐)
我提到这一点是为了完整性的目的,但我不建议这样做。您当然可以通过谷歌搜索镜像,而不是查看Launchpad 镜像列表。
一种方法是简单地谷歌搜索字符串*/dists/saucy/main/binary-armhf/*
(如前所述,根据您的需求选择适合的发行版、存储库和体系结构)。这将找到许多备选镜像,但大多数并未在 Launchpad 官方注册。因此,Ubuntu 镜像团队没有进行质量检查;它们可能速度较慢、不定期更新,或者仅包含完整 Ubuntu 系统所需软件包的子集,甚至有些可能是修改过的软件包。如果你仔细想想,如果某人想要公开他们的镜像,他们可能已经在 Launchpad 上注册了它,那么上面的脚本就能找到它。所以自己决定是否谷歌搜索镜像时要承担风险。如果问我的话,不要这样做。
parallel
来限制并发作业和网络连接的数量,就像下面的示例一样。
这是一个检查Ubuntu软件仓库并实现速率限制的脚本:#!/usr/bin/env bash
# Requires: Bash, GNU grep and parallel, htmlq, and httpie or xh.
# Usage:
# ./find-mirrors.sh ARCH DISTRO REPOSITORY PROTOCOL JOBS
# Example:
# ./find-mirrors.sh armhf focal main https 6
#
# Copyright 2022 Alex DeLorenzo. Licensed under the GPLv3.
#
export ARCH="${1:-amd64}"
export DISTRO="${2:-focal}"
export REPOSITORY="${3:-main}"
export PROTOCOL="${4:-http}"
export JOBS="${5:-4}"
export URL_PATH="dists/$DISTRO/$REPOSITORY/binary-$ARCH/"
export LIST_URL="https://launchpad.net/ubuntu/+archivemirrors/"
export SELECTOR="#mirrors_list > tbody > tr > td:nth-child(2) > a"
export TIMEOUT=10
export RC_MISSING_DEPS=1
export NO_PARALLEL="GNU parallel is missing, installing with apt...\n"
export NO_HTMLQ="You need to install htmlq: https://github.com/mgdm/htmlq\n"
quiet() {
$@ &> /dev/null
}
export -f quiet
exists() {
quiet which $@
}
getDependencies() {
exists parallel || {
printf "%s" "$NO_PARALLEL"
sudo apt install parallel
}
exists xh || exists http ||
python3 -m pip install --upgrade httpie &&
export http=http ||
return $RC_MISSING_DEPS
exists xh &&
export http=xh
exists htmlq || {
printf "%s" "$NO_HTMLQ"
return $RC_MISSING_DEPS
}
}
getMirrors() {
$http --body --follow "$LIST_URL" \
| htmlq "$SELECTOR" --attribute href \
| grep -i "$PROTOCOL:"
}
checkRepo() {
local url="$1"
quiet $http "$url" \
--quiet --quiet \
--timeout $TIMEOUT \
--verify=no \
--ignore-stdin \
--follow \
--headers \
--check-status
}
export -f checkRepo
testMirror() {
local url="$1"
local repoUrl="$url/$URL_PATH"
checkRepo "$repoUrl" &&
printf "Valid: %s\n" "$url"
}
export -f testMirror
testMirrors() {
parallel --will-cite --jobs "$JOBS" testMirror
}
main() {
getDependencies &&
getMirrors | testMirrors
}
main
./find-mirrors.sh ARCH DISTRO REPOSITORY PROTO JOBS
armhf
架构的替代方案,你可以这样做:./find-mirrors.sh armhf jammy main http 6
phablet@ubuntu-phablet:~$ ./find_mirrors.sh armhf xenial main | grep FOUND
FOUND: http://mirror.kumi.systems/ubuntu-ports/
FOUND: http://mirror.exid.us/ubuntu-archive/
FOUND: http://mirror.telcotech.com.kh/Linux/ubuntu-releases/
FOUND: http://mirrors.layeronline.com/ubuntu/
FOUND: http://mirror.rcg.sfu.ca/mirror/ubuntu/
FOUND: http://linux.xjtuns.cn/ubuntu/
FOUND: http://klid.dk/ftp/ubuntu/
FOUND: http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports/
FOUND: http://www.ubuntu.org.tw/
FOUND: http://kebo.vlsm.org/ubuntu/
FOUND: http://mirror.unej.ac.id/ubuntu/
FOUND: http://ir.ubuntu.sindad.cloud/ubuntu/
FOUND: http://twitchdarkbot.com/ubuntu-ports/
FOUND: http://ftp.daum.net/ubuntu/
FOUND: http://ntc.net.np/ubuntu/
FOUND: http://mirror.chmuri.net/ubuntu/
FOUND: http://cesium.di.uminho.pt/pub/ubuntu-archive/
FOUND: http://ubuntu.mirror.ac.za/ubuntu-archive/
FOUND: http://dafi.inf.um.es/ubuntu/
FOUND: http://mirrors.c0urier.net/linux/ubuntu/
FOUND: http://ubuntu.vargonen.com/ubuntu/
FOUND: http://mirrors.coreix.net/ubuntu/
FOUND: http://mirrors.us.kernel.org/ubuntu/
FOUND: http://lug.mtu.edu/ubuntu/
FOUND: http://mirrors.avalonhosting.services/ubuntu-archive/
FOUND: http://mirror.vcu.edu/pub/gnu+linux/ubuntu/
phablet@ubuntu-phablet:~$ ./find_mirrors.sh armhf xenial universe | grep FOUND
FOUND: http://mirror.kumi.systems/ubuntu-ports/
FOUND: http://mirror.exid.us/ubuntu-archive/
FOUND: http://mirror.telcotech.com.kh/Linux/ubuntu-releases/
FOUND: http://mirrors.layeronline.com/ubuntu/
FOUND: http://mirror.rcg.sfu.ca/mirror/ubuntu/
FOUND: http://klid.dk/ftp/ubuntu/
FOUND: http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports/
FOUND: http://www.ubuntu.org.tw/
FOUND: http://kebo.vlsm.org/ubuntu/
FOUND: http://mirror.unej.ac.id/ubuntu/
FOUND: http://ir.ubuntu.sindad.cloud/ubuntu/
FOUND: http://twitchdarkbot.com/ubuntu-ports/
FOUND: http://ftp.daum.net/ubuntu/
FOUND: http://ntc.net.np/ubuntu/
FOUND: http://mirror.chmuri.net/ubuntu/
FOUND: http://cesium.di.uminho.pt/pub/ubuntu-archive/
FOUND: http://ubuntu.mirror.ac.za/ubuntu-archive/
FOUND: http://dafi.inf.um.es/ubuntu/
FOUND: http://mirrors.c0urier.net/linux/ubuntu/
FOUND: http://mirrors.coreix.net/ubuntu/
FOUND: http://mirrors.us.kernel.org/ubuntu/
FOUND: http://lug.mtu.edu/ubuntu/
FOUND: http://mirrors.avalonhosting.services/ubuntu-archive/
FOUND: http://mirror.vcu.edu/pub/gnu+linux/ubuntu/
phablet@ubuntu-phablet:~$ ./find_mirrors.sh armhf xenial multiverse | grep FOUND
FOUND: http://mirror.kumi.systems/ubuntu-ports/
FOUND: http://mirror.exid.us/ubuntu-archive/
FOUND: http://mirror.telcotech.com.kh/Linux/ubuntu-releases/
FOUND: http://mirrors.layeronline.com/ubuntu/
FOUND: http://mirror.rcg.sfu.ca/mirror/ubuntu/
FOUND: http://klid.dk/ftp/ubuntu/
FOUND: http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports/
FOUND: http://kebo.vlsm.org/ubuntu/
FOUND: http://mirror.unej.ac.id/ubuntu/
FOUND: http://ir.ubuntu.sindad.cloud/ubuntu/
FOUND: http://twitchdarkbot.com/ubuntu-ports/
FOUND: http://ftp.daum.net/ubuntu/
FOUND: http://ntc.net.np/ubuntu/
FOUND: http://mirror.chmuri.net/ubuntu/
FOUND: http://cesium.di.uminho.pt/pub/ubuntu-archive/
FOUND: http://ubuntu.mirror.ac.za/ubuntu-archive/
FOUND: http://dafi.inf.um.es/ubuntu/
FOUND: http://mirrors.c0urier.net/linux/ubuntu/
FOUND: http://mirrors.coreix.net/ubuntu/
FOUND: http://mirrors.us.kernel.org/ubuntu/
FOUND: http://lug.mtu.edu/ubuntu/
FOUND: http://mirrors.avalonhosting.services/ubuntu-archive/
FOUND: http://mirror.vcu.edu/pub/gnu+linux/ubuntu/
虽然它的名字中没有“港口”一词,但中国的清华大学2也是一个港口镜像。
我在上述所有镜像中都看到了armhf和arm64。
(如果镜像列表已过时,请随意编辑此帖)
欧洲没有一个...
host=`echo "$url" | awk -F/ '{print $3}'`
latency=`ping -c 4 "$host" | tail -1 | awk '{print $4}' | cut -d '/' -f 2`
saucy
发行版的armhf
架构只能在https://mirror.bjtu.edu.cn/ubuntu/
找到。 我刚刚尝试了所有已知的Ubuntu镜像,来自http://mirrors.ubuntu.com/
。 - Jan