我使用的是三星Chromebook(带有ARM芯片)。ports.ubuntu.com对我来说是一个相当慢的镜像。还有其他带有ARM软件包的镜像吗?
https://wiki.ubuntu.com/UbuntuDevelopment/PackageArchive#Ports似乎暗示没有或至少很少-是否存在?
我使用的是三星Chromebook(带有ARM芯片)。ports.ubuntu.com对我来说是一个相当慢的镜像。还有其他带有ARM软件包的镜像吗?
https://wiki.ubuntu.com/UbuntuDevelopment/PackageArchive#Ports似乎暗示没有或至少很少-是否存在?
Answers:
是的,有。虽然不多。
我编写了以下脚本,该脚本将解析启动板镜像列表中的所有镜像,并检查它们是否包含路径/dists/$DIST/$REPO/binary-$ARCH/
,其中
$DIST
是你的Ubuntu发行版,例如precise
,saucy
,trusty
,...$REPO
是你要找的,即仓库main
,restricted
,universe
或multiverse
。$ARCH
是您要寻找的架构,例如armhf
。为了举例,让我假设您有Ubuntu 13.10(Saucy)。然后,您可能想在镜像中搜索路径/dists/saucy/main/binary-armhf/
,以便发现main
为armhf
架构提供存储库的镜像。如果镜像包含此路径,则意味着它应该具有Saucy Salamander存储库armhf
体系结构的二进制软件包main
,并且脚本将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
# 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
# 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..
curl -s --head $url/dists/$DIST/$REPO/binary-$ARCH/ | head -n 1 | grep -q "HTTP/1.[01] [23].."
# if successful, output the URL
[ $? -eq "0" ] && echo "FOUND: $url"
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分钟的时间。我很惊讶地发现armhf
在Launchpad镜像列表中只有一个用于Saucy架构的镜像,即Chemnitz TU的一个镜像(该镜像位于德国;对于您来说,它可能仍然比似乎基于ports.ubuntu.com更快的镜像)所以似乎您的问题的答案更像是“是的,有一个替代镜子为您...” ;-)
好消息是,我确实手动检查了此镜像,并且它确实是ports.ubuntu.com的完整镜像,其中包含所有活动的Ubuntu版本的所有软件包。因此,请尝试!
另请注意,与Saucy相比,您可能对其他发行版更满意。
替代(不推荐)
我出于完整性的目的提及此问题,但我不建议这样做。除了查看Launchpad镜像列表之外,您当然也可以简单地通过Google搜索镜像。
一种方法是简单地用谷歌搜索字符串*/dists/saucy/main/binary-armhf/*
(像以前一样根据您的需要来分配分布,存储库和架构)。这将找到许多备用镜像,但大多数未在Launchpad上正式注册。因此,Ubuntu镜像团队不会进行质量检查。它们可能很慢,没有定期更新,或者仅包含完整的Ubuntu系统所需的软件包的子集,甚至是某些经过修改的软件包。当您考虑它时,如果有人要公开公开其镜像,则他们可能已经在Launchpad上注册了该镜像,然后上述脚本便找到了它。因此,谷歌搜索镜像需要您自担风险。如果您问我,请不要这样做。