问题描述
每当我尝试运行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正式支持的软件)。
-
类型:类型可以是
deb
和deb-src
。deb
表示二进制存储库,其中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。 -
成分:可以是
main
,universe
,multiverse
和restricted
。这些文字表示软件包的支持级别和许可状态。
有关更多信息,请参阅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提供的基本版本。您可以按照以下步骤构建默认文件:
-
打开一个终端,首先将现有的
sources.list
文件重命名为sources.list.bak
文件。 (我们可以安全地将其删除,但谨慎是件好事)。sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
-
然后打开
software-properties-gtk
以建立一个新的。按下Alt
+F2
在终端或破折号命令提示符中键入以下命令software-properties-gtk
请注意,对于Ubuntu 11.10或更早版本,您必须在
software-properties-gtk
命令之前使用gksu
-
窗户打开后,
-
在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.list
和google.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”按钮。
如果你需要一个命令行选项,这里是:
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
Double Click On Advanced
Scan & Remove Duplicate PPA’s & Click Ok
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
中找到它,请执行以下操作:
-
Left-click在设置图标上(在屏幕的最上角)并选择系统设置。
-
点击Software Sources并移至其他软件。
-
取消选择由Canonical打包的Canonical合作伙伴(源代码)软件中的一个作为其合作伙伴文件,以及Canonical打包的Canonical合作伙伴文件之一,然后单击关闭离开。
-
同时按下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
之后,只需启动应用程序即可进入高级菜单。
然后选择“扫描并移除重复的PPA”并点击确定。
第九种办法
10.10和更早
应用程序> 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
文件中将不会有任何来源。