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


我该如何解决?

#1 楼

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

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

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

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


例如,一个回购行可以是这样的

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


这里,这意味着存储库是用于二进制程序包,这些程序包托管在http://archive.ubuntu.com/ubuntu中,此存储库适用于Ubuntu Precision(12.04),并且该存储库包含主要组件(由Canonical正式支持的软件)。


类型:类型可以是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


那么就不能再有下面的行了(您的文件有)

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或更早版本,必须在gksu之前使用software-properties-gtk命令


打开窗口后,在Ubuntu软件选项卡中选择所有四个类别
选择精确安全,精确-
从其他软件选项卡中选择Canonical合作伙伴和独立类别。




就这样。现在,您有了一个默认的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


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


安全删除此文件,然后问题就解决了。

评论


我怎样做才能使自己在sources.list.d中有重复的条目?

– Seanny123
13年11月11日在9:19

@ Seanny123这很难说。

–安瓦尔
13年11月11日在9:58

非常感谢你。我想知道几个小时是如何重复的。最后,您显示了sources.list.d

– Isura Manchanayake
16-2-17在15:57

好的和彻底的答案。在用于处理sources.list.d目录的更新中,您说明了哪些文件/行提供了重复项。您能否类似地解释给出重复项的OP中有6对行(因为您说“您的文件中有6个重复项”)?

– sancho.s ReinstateMonicaCellio
16年5月18日在8:55



检查我的sources.list.d的提示是帮助我解决此问题的原因。

–lcarsos
16年6月1日在17:38

#2 楼

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


该命令将执行以下操作:

cat读取文件并将内容传递给perl,从而删除重复的行。然后将结果保存在一个临时文件中,然后将其移动以替换原始>文件。

评论


只是如何解决它,而不会造成混乱和所有太深的细节。谢谢!

–Peter M.-代表莫妮卡(Monica)
2014年7月21日18:00



确实有效!由于某种原因,也无法在12.04上安装git。我没有删除,而是检查了明显重复的“规范合作伙伴”。

– davidkonrad
14-10-15在12:10

我跑了一线,但sudo apt-get update仍然抱怨重复的条目,好像什么都没有改变。如果有关系,我在12.04(特别是基本OS Luna)上。

–waldyrious
16 Mar 5 '16 at 10:22

猫是没有用的,它会阻止您使用sudo perl -i

–tripleee
17年7月7日在9:51

#3 楼



我不知道它的严重程度,但是我不喜欢sudo apt-get update向我显示重复的条目。

顺便说一句,还不错,它只是向您显示重复的条目。

SourcesList

sources.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


打开y-ppa经理表格Dash


输入您的管理员密码





双击高级





扫描并删除重复的PPA,然后单击“确定”。





需要一些时间(1或2造币厂)扫描并删除重复的PPA的


评论


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

– michel.iamit
13年7月5日在8:27

为我在Mint 17上工作,谢谢!

–spences10
2014年9月28日上午11:42

在ubuntu 14.04上为我工作..谢谢哥们.. :)

–拉胡尔·辛格(Rahul Singh)
16-3-24的3:05

像魅力一样运作

–vector
16年6月29日在0:16

以我在14.04的情况为例,它一直说没有找到重复项

–穆罕默德·奥默·阿斯兰
18-1-23在10:44



#4 楼

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

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

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


评论


我正在rm:无法删除“ /etc/apt/sources.list.d/precise-partner.*”:没有这样的文件或目录

–丹尼斯
2013年3月30日23:35



尝试sudo rm /etc/apt/sources.list.d/*partner*。还要检查您的/etc/apt/sources.list,查找重复的行。

–埃里克·卡瓦略(Eric Carvalho)
13 Mar 31 '13 at 0:51

运气不好,我在该目录中没有任何带有“伙伴”名称的文件。根据uniq,/ etc / apt / sources.list不包含任何重复项。

–丹尼斯
13年6月23日在23:03

#5 楼

备份源文件。列表:

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


现在删除原始文件并更新:

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


评论


没有sources.list文件如何更新?

–安瓦尔
2012年7月4日在5:27

它将重新填充。 =)

– wojox
2012年7月4日在5:28

我的人口没有增加

– conman253
14年2月14日在22:38

恢复为您备份的那个

– wojox
2014年2月15日下午13:42

如何还原到备份列表?清除操作删除了很多重要的东西...这完全不安全。

–alvas
15年11月23日在22:01

#6 楼

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

#7 楼

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


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


评论


我遵循了您的建议,但仍然出现此错误。

–hsinxh
2012年4月11日在8:08

请在此处发布“软件源”的图像,以了解罪魁祸首。

–all4naija
2012年4月11日在18:19

请在此处发布“其他软件”的图像。

–all4naija
2012年4月11日18:22



#8 楼

10.10及更低版本
应用程序> Ubuntu软件中心>编辑>软件源>其他软件
OR
系统>管理> Synaptic Packet Manager>设置>存储库

选择并删除重复的条目。

#9 楼

对于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”,然后点击确定。



评论


这是很酷的工具,但不能解决问题。我做了这个选择,之后有同样的警告。

– catch23
13年7月25日在10:28

#10 楼

我搜索了这样的工具,但没有找到任何工具。
所以,我最终自己用PHP编码了自己。

对不起,我的代码脏乱了。
/>
chkdup-屏幕截图:



作者

Mubarak Alrashidi(DeaDSouL)

要求:


PHP。
sudo。

安装:


打开终端。
要在没有PHP的情况下安装PHP,请输入:sudo apt-get install php5 php5-cli
下载chkdup。
将文件提取到您喜欢的任何位置。
输入:sudo sh install.sh

卸载:


打开终端。
转到提取工具的路径。
键入:sudo sh uninstall.sh

如何要使用它:

只需打开终端并输入sudo chkdup即可。

常见问题解答:

install.sh有什么作用?


安装程序会将chkdup.php移至/opt/,然后在/usr/bin/中创建符号链接。

uninstall.sh怎么办?


/>
卸载程序将删除以下文件:


install.sh
/opt/chkdup.php
/usr/bin/chkdup
自身uninstall.sh





使用chkdup是否安全?


是的,因为在尝试执行任何操作之前,它会备份当前的source.list。但是,如果发生任何事情,我概不负责。

许可证

GNU通用公共许可证

评论


刚刚尝试了,很好很简单:-)好:-)

–贝克姆
2012年1月28日19:40



#11 楼

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

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

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

#12 楼

您检查了ls /etc/apt/sources.list.d/吗?也许那里有一些“额外”存储库?

#13 楼

安装ubuntu-tweak并从那里删除重复的条目。

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak




评论


这里没有说怎么做。

– RolandiXor
2014年11月15日17:43

#14 楼

不,在/etc/apt/sources.list文件中没有一个命令行可以查找和删除重复的条目。命令,仅适用于SORTED文件,并且仅删除ADJACENT行。
此外,这些命令将仅删除由相同字符串组成的行。和uniq变体。删除这些存储库的简单有效方法是注意通过apt-get更新将哪些存储库报告为重复存储库,并通过软件中心将其删除。打开它,然后选择“编辑”->“软件源”->“其他软件”选项卡。只需查找重复的条目,然后取消选中它们。 (如果您不编译软件包,这也是删除所有apt-get update存储库的机会。)但是,应该注意,i386不仅通过amd64查找重复条目,而且包括存储库位于source-code中的文件。如果Ubuntu认为需要重复的条目,则从那里删除重复的条目只会暂时删除apt-get update错误消息,因为这些文件会自动重新安装。 sources.list会将某些存储库报告为重复的事实,然后建议您自己运行/var/lib/apt/lists/进行修复,这一事实表明您确实不需要担心该错误消息。

#15 楼

在我的情况下,重复项位于prerequists-sources.list文件中。我可以通过在终端中运行以下命令来继续升级:

sudo mv /etc/apt/sources.list.d/prerequists-sources.list /tmp
sudo apt-get update


然后转到Update Manager并安装更新。

评论


不必移动到/ tmp。重命名为不以.list结尾的内容就足够了

–丹尼尔·奥尔德(Daniel Alder)
2014年10月13日在20:03

#16 楼

好吧,我自己通过重命名/etc/apt/sources.d(作为根用户)并运行sudo apt-get update来重新建立目录及其内容,从而解决了重复输入的问题。

#17 楼

手动通过/etc/apt/sources.list,然后删除重复项。在sudo nano /etc/apt/sources.list之后,问题得以解决。

#18 楼

/etc/apt/sources.list中,您必须注释(在行的开头添加#)重复的存储库条目并保存更改。
此后重复sudo apt-get update

#19 楼

使用Ubuntu Sources List Generator。


在终端中运行sudo -H nautilus
查找/etc/apt/sources.list
右键单击并使用文本编辑器打开文件(如果单击,它将打开软件源GUI)
只需将其复制并粘贴到sources.list中并保存。
退出终端即可完成操作。

Google似乎有问题,因此建议您将其排除在外。我已经在Ubuntu 12.10(添加了Ubuntu桌面的Studio版本和另一个登录的Unity的Studio版本)上完成了此操作。

#20 楼

只需编辑文件/etc/apt/sources.list(例如,使用sudo -H gedit /etc/apt/sources.list)并删除重复的行,或在行的开头放置一个#

#21 楼

我尝试使用终端来完成其他用户提供的功能,因为这就是您的要求,主要是:

如果您使用的是基于文本的安装,请登录,或者按Alt + F2并键入gnome-terminal如果您使用的是GUI

然后键入

sudo nano /etc/apt/sources.list


(为了更好地理解:在目录/etc中,您可以找到(几乎)所有配置您的计算机文件和apt目录中,您会找到souces.list文件,其中包含APT用于更新或安装和升级软件的所有存储库。在所有重复的行所在的行。

按Ctrl + X退出,然后按y保存文件(或n退出而不保存)。

然后更新以查看是否已修复:

sudo apt-get update


玩得开心!

评论


我还认为,像vim这样的经过改进的文本编辑器可以自动查找重复项,但我不知道该怎么做,任何种类的信息都会很有趣

– Pitto
2010年11月18日在17:17

#22 楼

S="/etc/apt/sources.list" ;
S2="$S ${S}.d/*.list" ;
grep -b "^deb\`cat $S2 |
    grep -i "^deb[[:space:]]http" |
    sort |
    uniq -dc |
    sed -e 's;[[:space:]]\+[[:digit:]]\+[[:space:]]\+deb\(.\+$\);\1;g'\`$" $S2


*插入换行符以提高可读性。

评论


请说明答案,否则可能会被删除。

– jokerdino♦
2012年7月4日在4:55

欢迎来到Ask Ubuntu!正如jokerdino所指出的,如果您要对其进行编辑以添加一些解释(或者至少告诉用户确切使用这些行的内容),则该答案将大为受益。

– Eliah Kagan
2012年7月4日在10:34

该答案是错误的,因为它可能会删除重复的条目,但不会删除重复的源条目。看到这里的解释

–安瓦尔
2012年9月6日下午5:26



#23 楼

执行以下操作删除重复项

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


评论


有关此的更多信息,请

–user47206
13年5月5日在12:32

#24 楼

如果是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)

打开:sources.list.d

rm google.list

所以只有google-chrome.list保留

#25 楼

对于uniq来说是适当的工作,它省略重复的行并仅打印唯一的条目,因此我们可以获取uniq的输出,并用uniq的输出替换旧文件:

 sort /etc/apt/sources.list | uniq > /tmp/sources && sudo mv /tmp/sources  /etc/apt/sources.list


评论


uniq需要排序的输入。

–muru
15年11月24日,0:41

sort -u做同样的工作=)

– A.B.
15年11月26日在7:33