如何修复“W:重复的sources.list条目”?

hsi*_*nxh 193 configuration apt software-sources

每当我尝试运行时,我都会收到此警告sudo apt-get update

W: Duplicate sources.list entry http://archive.ubuntu.com/ubuntu/ precise-updates/main i386 Packages (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_precise-updates_main_binary-i386_Packages)
W: You may want to run apt-get update to correct these problems
Run Code Online (Sandbox Code Playgroud)

以下是/etc/apt/sources.list文件的输出:

deb http://archive.ubuntu.com/ubuntu precise main restricted
deb-src http://archive.ubuntu.com/ubuntu precise main restricted

deb http://archive.ubuntu.com/ubuntu precise-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu precise-updates main restricted

deb http://archive.ubuntu.com/ubuntu precise universe
deb-src http://archive.ubuntu.com/ubuntu precise universe
deb http://archive.ubuntu.com/ubuntu precise-updates universe
deb-src http://archive.ubuntu.com/ubuntu precise-updates universe

deb http://archive.ubuntu.com/ubuntu precise multiverse
deb-src http://archive.ubuntu.com/ubuntu precise multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-updates multiverse

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

我如何解决它?

Anw*_*war 232

您的 sources.list 确实有重复的条目。

首先让我们看看存储库行或源代码行的正确形式:

存储库源代码行的正确格式是

<type of repository>  <location>  <dist-name> <components> 
Run Code Online (Sandbox Code Playgroud)

例如,回购线可以是这样的

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

在这里,这意味着,存储库用于二进制包,它们托管在http://archive.ubuntu.com/ubuntu 中,此存储库适用于 Ubuntu 精确 (12.04),此存储库包含主要(由官方支持的软件)规范)组件。

  • 类型:类型可以是debdeb-srcdeb表示二进制存储库,其中deb-src表示源存储库

  • 位置: http://archive.ubuntu.com/ubuntu存储库的位置。

  • Dist-name: Ubuntu 发行版的发行版名称。对于 Ubuntu 12.04 是precise,对于 11.10 是oneiric
    您可以访问 Ubuntu Wiki 以查看Ubuntu 版本及其代号的更新列表

  • 成分:它可以是mainuniversemultiverserestricted。这些词表示对软件包的支持级别和许可状态。

有关更多信息,请参阅此页面

请注意,您可以在一行中添加一个或多个组件,因此“main”、“universe”、“restricted”和“multiverse”可以在一行中。另请注意,尽管您在一行中添加了多个组件,但 APT 系统会将它们视为仅包含一个组件的单独行。

所以,如果你sources.list有这样的一条线

deb http://archive.ubuntu.com/ubuntu precise universe
Run Code Online (Sandbox Code Playgroud)

然后它不能有像下面这样的另一行(你的文件有)

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

这相当于这两行

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

因为,您要复制Universe两次,因此该副本会出现错误。找到的每个重复项都会给出一个错误。

解决方案:

分析您的sources.list文件后,我发现,这是默认情况下由 Ubuntu 提供的基本文件。您可以按照以下过程构建默认文件:

  1. 打开终端并首先将现有sources.list文件重命名为sources.list.bakfile。(我们可以安全地删除它,但谨慎是好的)。

     sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后打开software-properties-gtk构建一个新的。在终端或破折号命令提示符中键入以下命令并按Alt+F2

    software-properties-gtk
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,对于 Ubuntu 11.10 或更早版本,您必须gksusoftware-properties-gtk命令之前使用

  3. 打开窗户后,

    • Ubuntu 软件选项卡中选择所有四个类别
    • 更新选项卡中选择 精确安全精确更新精确反向移植类别。
    • 其他软件选项卡中选择规范合作伙伴独立类别。

就是这样。您现在有一个sources.list没有错误的默认文件。如果需要,可以将此文件与前一个文件进行比较。


更新以处理sources.list.d目录的文件

有时,/etc/apt/sources.list.d目录中的文件中可能会出现重复条目,APT 也会使用该文件。因此,您应该查看该目录并查看这些文件中是否有任何重复项。在同一个文件中不需要重复。

示例案例:

用户在执行sudo apt-get update.

W: Duplicate sources.list entry http://dl.google.com/linux/chrome/deb/ stable/main amd64 Packages (/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-amd64_Packages)
W: Duplicate sources.list entry http://dl.google.com/linux/chrome/deb/ stable/main i386 Packages (/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-i386_Packages)
W: You may want to run apt-get update to correct these problems
Run Code Online (Sandbox Code Playgroud)

但是http://dl.google.com/etc/apt/sources.list文件中没有条目 with 。查看/etc/apt/sources.list.d/目录,我们发现了这些文件:

的输出ls /etc/apt/sources.list.d/

aims-sagemath-precise.list
aims-sagemath-precise.list.save
dropbox.list
dropbox.list.save
fossfreedom-packagefixes-precise.list
fossfreedom-packagefixes-precise.list.save
google-chrome.list
google-chrome.list.save
google.list
google.list.save
sagemath-monolithic-precise.list
sagemath-monolithic-precise.list.save
Run Code Online (Sandbox Code Playgroud)

这些文件google-chrome.listgoogle.list是包含重复项的良好候选者。因此,有必要检查这两个文件的内容。

的输出cat /etc/apt/sources.list.d/google-chrome.list

deb http://dl.google.com/linux/chrome/deb/ stable main  
Run Code Online (Sandbox Code Playgroud)

cat /etc/apt/sources.list.d/google.list

deb http://dl.google.com/linux/chrome/deb/ stable main
Run Code Online (Sandbox Code Playgroud)

因此,Apt 的来源中有重复的条目。由于google-chrome.list只包含一个 apt 行并且它也列在google.list文件中,我们可以使用以下命令安全地删除此文件

sudo rm /etc/apt/sources.list.d/google-chrome.list
Run Code Online (Sandbox Code Playgroud)

然后问题就解决了。

  • 我做了什么导致我的 sources.list.d 中有重复的条目? (5认同)

des*_*gua 81

对于 Ubuntu 12.04

图形化:

Alt+F2并粘贴software-properties-gtk(或者您可以打开“软件中心”,然后转到“编辑”>“软件源”)。转到“其他软件”选项卡,选择重复的条目,然后按“删除”按钮。

在此处输入图片说明


如果你需要一个命令行选项,这里是:

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  
Run Code Online (Sandbox Code Playgroud)

该命令执行以下操作:

cat读取文件并传递perl删除重复行的内容。然后将结果保存>在临时文件中,然后移动该/etc/apt/sources.list文件以替换原始文件。

  • 我运行了单行程序,但 `sudo apt-get update` 仍然抱怨重复条目,好像没有任何改变。如果重要的话,我在 12.04(特别是基本的 OS Luna)。 (3认同)
  • 只是如何解决它,没有混乱和所有太深的细节。谢谢! (2认同)

Qas*_*sim 24

source.list 中的重复条目有多糟糕?

我不知道这有多糟糕,但我不喜欢sudo apt-get update显示重复条目。

顺便说一句,它并没有那么糟糕,它只是向您显示您有重复的条目。

来源列表

source.list 文件是在 Ubuntu 安装中添加或升级应用程序的关键因素。这也被您的系统用于系统更新。该文件基本上是您的系统的路线图,以了解它可以在哪里下载用于安装或升级的程序。

它就像 Windows 更新

您可以使用Y PPA Manager通过几个简单的步骤删除重复条目

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager -y
 sudo apt-get update
 sudo apt-get install y-ppa-manager -y
Run Code Online (Sandbox Code Playgroud)

打开y-ppa-manager表单Dash

输入您的管理员密码

在此处输入图片说明

双击高级

在此处输入图片说明

扫描并删除重复的 PPA 并单击“确定”

在此处输入图片说明

扫描和删除重复的 PPA 需要一些时间(1 或 2 分钟)

  • 就我而言,Y PPA 一直说没有发现重复项。我备份了 source.list 并删除了它,然后运行 ​​sudo apt-get update 来重新创建源列表(ubuntu 12.04)。这对我有用。 (2认同)

Eri*_*lho 16

合作伙伴存储库在/etc/apt/sources.list和 中复制/etc/apt/sources.list.d/precise-partner.list

只需删除那些“精确合作伙伴”文件,因为合作伙伴存储库已存在于sources.list.

sudo rm /etc/apt/sources.list.d/precise-partner.*
Run Code Online (Sandbox Code Playgroud)


woj*_*jox 10

制作您的 sources.list 的备份副本:

sudo cp /etc/apt/sources.list{,.backup}
Run Code Online (Sandbox Code Playgroud)

现在删除原始并更新:

sudo rm /etc/apt/sources.list && sudo apt-get update
Run Code Online (Sandbox Code Playgroud)


小智 8

我有同样的问题,打开软件源。未选中的“规范合作伙伴”。冲突发生在“规范合作伙伴”和“软件中心添加的规范合作伙伴”之间


all*_*ija 7

如果您无法在您的 中弄清楚,请source.list执行以下操作:

  1. 左键单击设置图标(位于屏幕的最上角)并选择系统设置。
  2. 单击软件源并移至其他软件。
  3. 取消选中“Canonical 合作伙伴(源代码)-Canonical 为其合作伙伴的文件打包的软件之一”和“Canonical 合作伙伴-Canonical 为其合作伙伴的文件打包的软件之一”,然后单击“关闭”离开。
  4. 同时按CTRL+ ALT+T键打开终端并输入sudo apt-get update.


Sid*_*Sid 6

10.10 及更早版本

应用程序 > Ubuntu 软件中心 > 编辑 > 软件源 > 其他软件

或者

系统 > 管理 > Synaptic 数据包管理器 > 设置 > 存储库

软件源配置窗口

选择并删除重复条目。


rea*_*ght 5

对于 Ubuntu 9.10 - 12.04

有一个名为 Y-PPA-Manager 的应用程序可以做到这一点以及更多。

您可以像这样从终端安装它:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get upgrade
sudo apt-get install y-ppa-manager
Run Code Online (Sandbox Code Playgroud)

之后,只需启动应用程序并转到高级菜单。

在此处输入图片说明

然后选择“扫描并删除重复的 PPA”并点击“确定”。

在此处输入图片说明