从命令行恢复sources.list中的默认apt存储库

我正在寻找从命令行恢复/etc/apt/sources.list到默认值的最佳方法。

有没有办法引用生成此文件的包的源代码或类似的东西? 我想要一种可靠且与版本无关的方法来恢复此文件。

排除了解决方案

在将此标记为重复之前,请注意我已经审核了此问题 。 它仅适用于您可以使用Ubuntu GUI的情况。 此问题特定于命令行。

我还回顾了这个问题 ,其中接受的解决方案是有人粘贴了sources.list文件的内容。 这不是恢复文件的适当方式,因为无法validation提供文件内容的人的意图,并且文件可能随新版本而变化。

我在simplelinux.ch检查了生成器 ,但这也不是来自Ubuntu所以我不打算使用它。

我不确定你想要什么,但是:

  • 父存储库总是 http://archive.ubuntu.com/ubuntu – 其他一切都是这个的镜像。 其他主镜像都具有.archive.ubuntu.comforms的域,其中两个字符的短代码是国家代码顶级域 。 您可以在Launchpad中找到其状态的其他镜像。
  • 分配代号是渠道的一部分(第三项)。 您可以使用lsb_release -sc来查找它,并且它是发布的第一个单词,名称为小写(例如,Trusty Tahr trusty )。
  • 有五个渠道: -security-updates-backports-proposed 。 第一个是必要的,因为它是基础,第二个是强烈推荐,因为它包含安全修复,第四个只有当你需要一些包从新版本反向移植而第五个只有当开发人员要求你启用它来测试可能时固定。
  • 有四个存储库部分: mainmultiverseuniverserestricted ( multiverse,universe,restricted和main之间的区别是什么? )

因此,您始终可以创建一个安全的sources.list ,其中包含:

 deb http://archive.ubuntu.com/ubuntu  main multiverse universe restricted deb http://archive.ubuntu.com/ubuntu -security main multiverse universe restricted 

如果您想要命令执行此操作:

 printf 'deb http://archive.ubuntu.com/ubuntu %s main multiverse universe restricted\n' $(lsb_release -sc){,-security} > /etc/apt/sources.list 

除了Launchpad列表之外,Software Sources程序提供的列表来自/usr/share/python-apt/templates/Ubuntu.mirrors ,它来自python-apt-common软件包。 此包只是apt的间接Suggests依赖项,因此默认情况下可能无法在服务器上安装。

如果您了解/etc/apt/sources.list每行代表的内容,您可以生成自己的列表。 例如,我的sources.list的一行是,

 deb http://archive.ubuntu.com/ubuntu/ trusty main 

它有4个部分:

  • 第1部分:第一部分是deb ,这意味着它是所有二进制包的存储库。 只有其他可能的值是deb-src ,这意味着它是源代码的存储库。
  • 第2节:此部分包含存储库的URI(在本例中为http://us.archive.ubuntu.com/ubuntu/ )。 镜像的URI可能不同,例如,如果您想使用官方的美国镜像,那么URI将是http://us.archive.ubuntu.com/ubuntu/ 。
  • 第3节:它包含您正在使用的版本的代号(和频道名称),在这种情况下, trusty ,这是我的Ubuntu版本(14.04 LTS)的代号。 你可以通过lsb_release -sc找到你的。 例如,如果您使用的是12.04,则代号将是“精确的”。 现在声明其他通道,例如声明安全通道,您需要使用trusty-security

  • 第4节:此部分包含存储库的“节名称”。 通常使用4个部分名称: mainrestricteduniversemultiverse 。 您可以将所有节名称放在声明存储库的同一行中,也可以为每个节使用不同的行,但不能有任何重复的条目。 如果您阅读/etc/apt/sources.list ,那么您将看到每个部分包含的包的描述。