当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

每当我尝试运行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

以下是/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

我如何解决它?

最佳解决办法

你的sources.list真的有重复的条目。

首先让我们看一下版本库行或源代码行的正确形式:

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

<type of repository>  <location>  <dist-name> <components> 

例如,回购行可以像这样

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

这意味着,这个版本库是用于二进制包的,它位于http://archive.ubuntu.com/ubuntu中,这个版本库用于Ubuntu精确版本(12.04),并且这个版本库包含主要版本(由Canonical正式支持的软件)。

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

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

  • Dist-name:Ubuntu发行版的分发名称。对于Ubuntu 12.04,它是precise,对于11.10,它是oneiric。您可以访问Ubuntu Wiki来查看更新后的list of Ubuntu releases and their code names

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

有关更多信息,请参阅this page

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

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

deb http://archive.ubuntu.com/ubuntu precise universe

然后它不能有像下面的其他行(你的文件有)

deb http://archive.ubuntu.com/ubuntu precise main universe

这相当于这两条线

deb http://archive.ubuntu.com/ubuntu precise main
deb http://archive.ubuntu.com/ubuntu precise universe

因为,你重复了两次宇宙,所以会有重复的错误。每个找到的重复都会出现错误。

解:

分析完sources.list文件后,我发现它是默认由Ubuntu提供的基本版本。您可以按照以下步骤构建默认文件:

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

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

    software-properties-gtk
    

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

  3. 窗户打开后,

    • 在Ubuntu软件标签中选择所有四个类别

    • 在“更新”选项卡中选择precise-security,precise-updates和precise-backports类别。

    • 从其他软件选项卡中选择Canonical合作伙伴和独立类别。

而已。您现在有一个没有错误的默认sources.list文件。如果需要,请将此文件与前一个文件进行比较。


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

有时,重复的条目可能位于/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

但是/etc/apt/sources.list文件中没有http://dl.google.com条目。看看/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

文件google-chrome.listgoogle.list是包含重复项目的理想选择。因此,检查这两个文件的内容是必要的。

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

deb http://dl.google.com/linux/chrome/deb/ stable main  

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

deb http://dl.google.com/linux/chrome/deb/ stable main

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

sudo rm /etc/apt/sources.list.d/google-chrome.list

然后问题解决了。

次佳解决办法

适用于Ubuntu 12.04

图形:

按下Alt + F2并粘贴software-properties-gtk(或者您可以打开”Software Center”,然后转到”Edit”> “Software Sources”)。转到选项卡”Other Software”,选择重复条目并按”Remove”按钮。

apt,configuration,software-sources,ubuntu


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

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  

该命令执行此操作:

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

第三种解决办法

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

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

顺便说它不是那么糟糕,它只是告诉你,你有重复的条目。

SourcesList

sources.list文件是将应用程序添加或升级到Ubuntu安装的关键因素。系统也会使用这个系统更新。该文件基本上是系统的路线图,可以知道它可以下载哪些程序进行安装或升级。

它就像Windows更新

You can remove duplicate entries in few easy steps with 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

打开y-ppa-manager表格Dash

Enter You Admin Password

apt,configuration,software-sources,ubuntu

Double Click On Advanced

apt,configuration,software-sources,ubuntu

Scan & Remove Duplicate PPA’s & Click Ok

apt,configuration,software-sources,ubuntu

It will take some time ( 1 or 2 Mints ) To Scan & Remove Duplicate PPA’s

第四种办法

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

只需删除那些”precise-partner”文件,因为合作伙伴存储库已存在于sources.list中。

sudo rm /etc/apt/sources.list.d/precise-partner.*

第五种办法

备份你的sources.list副本:

sudo cp /etc/apt/sources.list{,.backup}

现在删除原始并更新:

sudo rm /etc/apt/sources.list && sudo apt-get update

第六种办法

我有同样的问题,打开软件源。未检查”Canonical Partners”。冲突介于”Canonical Partners”和“由软件中心添加的规范合作伙伴”之间

第七种办法

如果您无法在source.list中找到它,请执行以下操作:

  1. Left-click在设置图标上(在屏幕的最上角)并选择系统设置。

  2. 点击Software Sources并移至其他软件。

  3. 取消选择由Canonical打包的Canonical合作伙伴(源代码)软件中的一个作为其合作伙伴文件,以及Canonical打包的Canonical合作伙伴文件之一,然后单击关闭离开。

  4. 同时按下CTRL + ALT + T键打开终端并键入sudo apt-get update

第八种办法

对于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

之后,只需启动应用程序即可进入高级菜单。

apt,configuration,software-sources,ubuntu

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

apt,configuration,software-sources,ubuntu

第九种办法

10.10和更早

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

要么

系统>管理>突触包管理器>设置>库

apt,configuration,software-sources,ubuntu

选择并删除重复条目。

第十种办法

听起来您的/etc/apt/sources.list文件中有两条相同的行。

转到终端,输入sudo editor /etc/apt/sources.list,然后在该文件中查找任何相同的行,如果找到它们,请删除它们。完成后,保存并退出,然后执行sudo apt-get update,这应该可以解决您的问题。

如果这不能解决你的问题,那么你将不得不使用试验和错误的方法。首先,创建一个sources.list文件的备份,然后在实际文件中通过并注释掉或删除每一行,保存和apt-get update-在每行被注释掉或删除后。通过逐行评论出不同的文件行,最终会告诉你哪一行是多余的。如果apt-get update仍然显示相同的提示,请不要忘记取消注释您评论的任何行,否则您的sources.list文件中将不会有任何来源。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/235.html,未经允许,请勿转载。