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

Rya*_*tte 21 command-line apt repository

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

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

排除的解决方案

在将其标记为重复之前,请注意我已经查看了此问题。仅当您有可用的 Ubuntu GUI 时才适用。这个问题特定于命令行。

我还审查了这个问题,其中接受的解决方案是有人粘贴了他们sources.list文件的内容。这不是恢复文件的适当方法,因为无法验证提供文件内容的人的意图,并且该文件可能会随着新版本而更改。

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

mur*_*uru 24

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

  • 父存储库始终http://archive.ubuntu.com/ubuntu - 其他一切都是它的镜像。其他主镜像都有一个域形式<cctld>.archive.ubuntu.com,其中两个字符的短代码是国家代码顶级域。您可以在Launchpad找到其他镜像及其状态。
  • 发行代号是渠道的一部分(第三项)。您可以使用它lsb_release -sc来找出它,它是小写的发行版漂亮名称的第一个单词(trusty例如,对于 Trusty Tahr)。
  • 有5个通道<codename><codename>-security<codename>-updates<codename>-backports<codename>-proposed。第一个是必要的,因为它是基础,强烈推荐第二个,因为它包含安全修复程序,第四个仅当您需要从较新版本向后移植一些包时,第五个仅当开发人员要求您启用它以测试可能的使固定。
  • 有四个库部分:mainmultiverseuniverserestricted什么是多元宇宙,宇宙,限制,主要的区别?

因此,您始终可以创建一个sources.list仅包含以下内容的保险箱:

deb http://archive.ubuntu.com/ubuntu <codename> main multiverse universe restricted
deb http://archive.ubuntu.com/ubuntu <codename>-security main multiverse universe restricted
Run Code Online (Sandbox Code Playgroud)

如果你想要一个命令来做到这一点:

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

或者,lsb_release不可用,/etc/os-releasebase-files包中使用:

printf 'deb http://archive.ubuntu.com/ubuntu %s main multiverse universe restricted\n' "$(. /etc/os-release; printf "%s" "$UBUNTU_CODENAME")"{,-security} > /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

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


hee*_*ayl 7

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

deb http://archive.ubuntu.com/ubuntu/ trusty main
Run Code Online (Sandbox Code Playgroud)

它有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 个部分名称:main, restricted, universe, multiverse。您可以将所有部分名称放在声明存储库的同一行中,也可以为每个部分使用不同的行,但不得有任何重复条目。如果您阅读/etc/apt/sources.list,那么您将看到每个部分包含的包的描述。