如何将Ubuntu Server中的镜像从区域更改为主要?

我有一个安装了Lucid Server (10.04)的服务器,并且我想将镜像从美国(或其他任何国家)更改为主要的Ubuntu镜像。
例如,我的sources.list文件中的前两个条目是:
deb http://us.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ lucid main restricted

在桌面环境中,我会像这样选择主镜像:

Software Sources

但问题是,由于我没有安装图形界面,我如何在终端上做到这一点呢?
4个回答

打开您喜欢的文本编辑器,如 sources.list 文件。
sudo nano /etc/apt/sources.list

定位文本 http://us.archive.ubuntu.com/ubuntu 并将其替换为 http://archive.ubuntu.com/ubuntu

我本以为这个方法会奏效,但按照你的建议去做时,却出现了一个仓库的404错误。我刚刚重新检查了一下,现在似乎已经没问题了。看来是我的网络连接出了问题。非常感谢你的回答。 - Sorin-Mihai Oprea
有没有像图形用户界面那样安全的方式。我的意思是,不需要手动替换并避免出现拼写错误或其他问题。 - logoff
也许可以像这样:http://askubuntu.com/questions/20414/find-and-replace-text-within-a-file-using-commands @logoff - Luke Stanley
2请随后运行apt-get update以便APT可以更新其软件包。最初我收到了一个“Package X has no installation candidate”的消息,因为APT尚未扫描新的软件库以获取软件包。 - dutoitns
要在脚本中使用它,可以使用以下sed命令:sed -E -i 's#http://[^\s]*archive\.ubuntu\.com/ubuntu#http://be.archive.ubuntu.com/ubuntu#g' /etc/apt/sources.list'将/etc/apt/sources.list中的nl替换为您的国家代码。 - Mandy Schoep
太棒了!像魔法一样顺利完成了! - srivenky
@MandyS 对我来说,那个方法没用... 我必须使用 sed -E -i 's#http://[a-z]*archive\.ubuntu\.com/ubuntu#http://be.archive.ubuntu.com/ubuntu#g' /etc/apt/sources.list'(或者去掉 be. 前缀/使用自定义前缀,问题在于前缀的正则表达式)。 - polynomial_donut
哇,谢谢,终于找到了。+1 - Leon Bohmann

这个命令应该能解决问题:
sudo sed -i 's|http://us.|http://|g' /etc/apt/sources.list

它将删除每个地址中的“us.”前缀,将其转换为主服务器的地址。
当然,可以用任何其他镜像替换“us”。
命令的详细解释如下:
sed - 用于过滤和转换文本的流编辑器。
-i 参数用于原地编辑文件。
然后是 's|regexp|replacement|g',其中 s 指定搜索和替换命令。
末尾的 g 是“全局”搜索的参数。
总结:将文件 /etc/apt/sources.list 中所有出现的 http://us. 替换为 http://。

1试着更详细地解释一下这个命令,它具体是做什么的? - Evandro Silva
3要从美国切换到德国的镜像,请按照以下步骤操作:sudo sed -i 's/http:\/\/us./http:\/\/de./g' /etc/apt/sources.list' - Christian
1这里发布的方法是正确的,然而顶部发布的代码是错误的[code] "sudo sed -i 's/http://us./http:///g' /etc/apt/sources.list"[/code]在底部发布的sed命令才是有意义的。 - SAGAR Nair
1非常感谢你提供的无需手动编辑的一行命令。通过使用sudo sed -i 's|http://us.|http://ch.|g' /etc/apt/sources.list(我在瑞士),我的下载速度从几KB/s提升到了10MB/s。我之前使用的是osboxes镜像,显然在这方面配置有些问题... - masterxilo
好的,这个很有效。我在我的Ubuntu Linode服务器上试过了。 - Silver Moon

正确使用sed命令从source.list中删除/更改国家代码"us"为其他代码,比如"au",命令如下所示:
sed -i 's/http:\/\/us./http:\/\/au./g' /etc/apt/sources.list

或者只是单独删除“us”,而不是将其更改为其他内容,请使用以下代码:
sed -i 's/http:\/\/in./http:\/\//g' /etc/apt/sources.list

使用vim:
mv /etc/apt/sources.list{,.bak}   # you may want to make a backup
vim /etc/apt/source.list

在键盘上按住Shift键,然后输入:,即可进入命令行模式,然后输入以下内容:
%s/http:\/\/us\./http:\/\//g

按下 Enter 键。
按下 Esc 键以确保您已退出命令行模式并进入正常模式。现在,您可以使用键盘移动键(如果需要)在文件中滚动,以确保所有出现的 us 镜像都已编辑。
最后,通过进入命令行模式(输入 :)并输入 wq! 来保存并退出 vim

在搜索正则表达式中,将“http://us.”替换为“http://”。点号(.)不是分隔符,因此不需要用反斜杠进行转义。 - SAGAR Nair
@SAGARBHOOSHAN .代表除了换行符以外的任何字符。反斜杠是为了确保它只匹配一个字面上的句点。 - Chai T. Rex