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正式支持的软件)。
类型:类型可以是
deb
和deb-src
。 deb
表示二进制存储库,其中deb-src
表示源存储库。位置:
http://archive.ubuntu.com/ubuntu
存储库的位置。<名称:Dist-name:Ubuntu版本的发行名称。对于Ubuntu 12.04,它是precise
,对于11.10是oneiric
。您可以访问Ubuntu Wiki来查看Ubuntu版本的更新列表及其代号。组件:它可以是
main
,universe
,multiverse
和restricted
。这些词表示对软件包的支持级别和许可状态。 有关更多信息,请参见此页面。
请注意,您可以在一行中添加一个或多个组件,因此“ 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.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
安全删除此文件,然后问题就解决了。
#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
评论
我怎样做才能使自己在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