如何恢复默认的软件源?

现在更新时出现错误,由于损坏,我无法安装大多数软件。
/etc/apt/sources.list

文件。有没有我可以下载替换它的副本?
该文件将适用于美国境内的Ubuntu 12.04(最终测试版)。

你试过“软件源”图形界面应用程序吗?虽然我没有运行12.04版本,但在过去,这就是你可以选择存储库位置并编辑从该位置使用的存储库的地方。 - Marty Fried
我查过了,上面列出的错误都不在那个文件里。我只是想找到一个 sources.list 文件的副本,就像我刚安装 Ubuntu 时那样。 - Andy Castille
你应该能够进入“其他软件”选项卡,并删除重复的条目。或者,如果你不确定,可以取消选中几个条目,看看是否解决了问题。另外,你有按照建议运行过“sudo apt-get update”吗? - Marty Fried
是的,我做了。它给了我`W: 无法获取 http://ppa.launchpad.net/pmcenery/ppa/ubuntu/dists/precise/main/source/Sources 404 未找到W: 无法获取 http://ppa.launchpad.net/pmcenery/ppa/ubuntu/dists/precise/main/binary-amd64/Packages 404 未找到W: 无法获取 http://ppa.launchpad.net/pmcenery/ppa/ubuntu/dists/precise/main/binary-i386/Packages 404 未找到E: 一些索引文件下载失败。它们已被忽略或使用旧的文件代替。 - Andy Castille
所有带有ppa.launchpad.net的都应该列在“其他软件”选项卡中,并且可以禁用或删除。实际上,我相信所有带有http:// URL的都可以被禁用,并且如果您将文件替换为默认文件,它们也将丢失。如果您访问“http://ppa.launchpad.net”,您会看到一个很长的列表,其中包括"pmcenery"等内容;我跟随它进入ppa/ubuntu/dists,并看到最后一个版本是natty,所以没有oneiric或precise版本可用。这就是为什么您收到404(未找到)错误的原因。 - Marty Fried
1http://repogen.simplylinux.ch/现在无法访问...还有其他的想法吗?需要13.10的默认仓库。 - xxdesmus
1可能是重复的问题:我需要一个默认的/etc/apt/sources.list文件的副本。 - Big McLargeHuge
5个回答

你可以使用这个技巧。打开一个终端(按下Ctrl+Alt+T)然后执行以下操作。
  • 将损坏的文件移动到安全位置

    sudo mv /etc/apt/sources.list ~/
    

    并重新创建它

    sudo touch /etc/apt/sources.list
    
  • 打开软件和更新

    software-properties-gtk
    

    这将打开software-properties-gtk,但没有选择任何存储库。

然后,将服务器更改为主服务器或您选择的任何其他服务器。您必须在新窗口中启用一些存储库,以便在/etc/apt/中创建一个新的sources.list文件。

ubuntu-software tab of software-properties-gtk

在启用“Ubuntu软件”选项卡中的一些源之后,您可以启用更新。要这样做,请切换到“更新”选项卡,并选择一个或多个更新通道。我建议至少选择“安全”和“更新”通道。(此图像稍后从Ubuntu xenial添加,因此可能会有一些差异) software-properties-gtk的更新选项卡

更新了内联内容

这是12.04 Precise Pangolin的sources.list文件。

###### Ubuntu Main Repos
deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 

###### Ubuntu Update Repos
deb http://archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse 
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse 
deb http://archive.ubuntu.com/ubuntu/ precise-proposed main restricted universe multiverse 
deb http://archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu/ precise-proposed main restricted universe multiverse 
deb-src http://archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse 

###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu precise partner
deb-src http://archive.canonical.com/ubuntu precise partner

###### Ubuntu Extras Repo
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main

如果您使用的是其他版本,您需要将precise一词替换为您的Ubuntu版本名称。您可以使用以下命令查看应该使用的名称:
lsb_release -c -s

要替换这个词,你可以使用以下的sed命令(假设你已经将源内容复制到了/etc/apt/sources.list中):
sudo sed -i "s/precise/$(lsb_release -c -s)/" /etc/apt/sources.list

注意1:debdeb-src这两个词是指存储库的格式。 deb适用于二进制软件包,而deb-src则适用于源代码软件包。

注意2:在行首使用#字符会将该行变为注释。apt将忽略它,因此该行提到的任何存储库都将被禁用。

注意3:有一些存储库行包含了所有四个组件:mainuniverserestrictedmultiverse。您可以通过删除相应的单词来禁用其中一个或多个组件。

注意4:您可以在我的其他答案中找到一些关于存储库的解释。


24如果我在Ubuntu服务器上呢? - Dr.jacky
2这对我没有起作用 - 没有生成新的 sources.list。 - hydroxide
1我现在又测试了一下,它生成了一个新的。你必须启用一些仓库,比如主要仓库、宇宙仓库等。 - Anwar
谢谢,我在其他地方查找时没有提到更新部分。对于我来说,使用apt安装东西是必需的。 - Darrel Holt
谢谢,你救了我的操作系统。 - Diogo Henrique Fragoso de Oliv
第一个解决方案在Ubuntu 18.04上不起作用。软件属性gtk抛出错误:“WARNING:root:could not open file '/etc/apt/sources.list'”。 我尝试使用sudo touch /etc/apt/sources.list提供一个空的sources.list文件。现在出现了错误“aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Ubuntu/bionic”。 - eDeviser
对于使用 KDE 的用户,可以使用软件管理属性工具(software-properties-kde),这个工具对我来说有同样的作用。 - mhernandez

对于18.04及之前的版本,您可以使用https://repogen.simplylinux.ch(目前,该工具不支持20.04及更高版本)。

选择您的国家和Ubuntu版本。

对于默认的存储库集合,您需要启用这些存储库:

  • 所有Ubuntu分支存储库。
  • 安全性 - 重要的安全更新。
  • 安全源存储库
  • 更新 - 推荐的更新
  • 更新源存储库

如果您想从Canonical合作伙伴存储库(闭源软件)安装软件,请启用Ubuntu合作伙伴存储库(两者都要启用)。

启用任何您希望启用的第三方存储库。

现在,在该页面底部单击“生成列表”按钮,您将看到生成的sources.list。

用新的替换旧的sources.list

在终端中运行以下命令。

sudo mv /etc/apt/sources.list /etc/apt/sources.list.old
gksudo gedit /etc/apt/sources.list

将新生成的sources.list文件中的所有文本复制/粘贴到此文件中。保存并关闭Gedit。
现在,更新apt。
sudo apt-get update

这将使用当前的sources.list更新您的存储库索引,然后您可以使用软件中心、Synaptic或apt-get安装任何软件。

在过去的某个地方,您将http://ppa.launchpad.net/pmcenery/ppa/ubuntu/dists/precise/main/source/Sources添加到了您的列表中。在测试版之前,您是否最后使用的是natty版本?我怀疑升级程序将natty更改为precise,但是此软件包没有precise版本可用。我建议从“其他软件”中删除它。顺便说一句,这个错误并没有对任何东西造成损害。 - Marty Fried
8很遗憾,只能提供到18.04版本的翻译。 - http8086
@http8086 谢谢 - 我已经提交了一个带有那些信息的编辑。我本来打算把这个答案推荐给别人,但是后来注意到了你的评论。 - NotTheDr01ds


9无法找到文件或目录“/etc/apt/sources.list.save”。 - Dr.jacky
我使用的是18.04.1版本。我没有/etc/apt/sources.list.save文件,但我有/etc/apt/sources.list.curtin.old文件。它们是等价的吗? - jbobbins
值得注意的是,如果您刚刚升级了发行版,并且在使用apt-get install时持续遇到错误,则应将sources.list.distUpgrade复制为sources.list.save。 - MaKiPL

这里有一个更好的方法来恢复所有默认仓库。
  1. 创建一个目录,我们可以在其中运行命令:

    sudo mkdir ~/answer
    
  2. 下载适用于Ubuntu 20.04 focal的sources.list文件:

    cd ~/answer/
    sudo wget https://gist.githubusercontent.com/ishad0w/788555191c7037e249a439542c53e170/raw/3822ba49241e6fd851ca1c1cbcc4d7e87382f484/sources.list
    
  3. 更改sources.list以匹配您的版本:

    sudo sed -i "s/focal/$(lsb_release -c -s)/" ~/answer/sources.list
    
  4. 备份当前的sources.list文件:

    sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
  5. 替换sources.list文件:

    sudo mv ~/answer/sources.list /etc/apt/
    
  6. 运行apt update命令:

    sudo apt update
    

默认情况下,包含所有PPA文件的目录是空的。如果在恢复存储库后仍然遇到错误,则需要删除所有PPA文件。
  1. 将包含 PPA 文件的目录移动到 ~/answer 目录:

    sudo mv /etc/apt/sources.list.d/ ~/answer 
    
  2. 重新创建目录:

    sudo mkdir /etc/apt/sources.list.d
    
  3. 运行 apt update

    sudo apt update 
    
  4. 删除 ~/answer 目录:

    sudo rm -r ~/answer
    

如果上面的wget命令中使用的要点文件在将来被删除了,那么你可以从这里复制内容:
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse

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

deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse

deb http://archive.canonical.com/ubuntu focal partner
deb-src http://archive.canonical.com/ubuntu focal partner

没问题 - 非常感谢! - Goldy

恢复默认设置还包括删除损坏的自定义源列表。
这些自定义列表可能存储在`/etc/apt/sources.list.d`文件夹中的各种`*.list`文件中,例如:
$ ls /etc/apt/sources.list.d/
docker.list  kubernetes.list

而且来自apt update的错误行(如下所示)表明kubernetes.list在这种情况下是罪魁祸首:
$ sudo apt update && sudo apt list --upgradable
[..]
Err:10 https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/${K8S_LATEST_VER_SHORT}/deb  InRelease
  403  Forbidden [IP: 2600:9000:20eb:c800:16:*:*:* 443]
[..]
Reading package lists... Done                                    
E: Failed to fetch https://pkgs.k8s.io/core:/stable:/${K8S_LATEST_VER_SHORT}/deb/InRelease  403  Forbidden [IP: 2600:9000:20eb:c800:16:*:*:* 443]
E: The repository 'https://pkgs.k8s.io/core:/stable:/${K8S_LATEST_VER_SHORT}/deb  InRelease' is not signed.
[..]