每当我尝试运行时我都会收到此警告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>
例如,repo 行可以像这样
deb http://archive.ubuntu.com/ubuntu precise main
这里的意思是,存储库用于二进制包,托管在http://archive.ubuntu.com/ubuntu这个存储库适用于 Ubuntu precise (12.04),并且该存储库包含主要(Canonical 官方支持的软件)组件。
类型:类型可以是
deb
和deb-src
。deb
表示二进制存储库,deb-src
表示源存储库地点:
http://archive.ubuntu.com/ubuntu
存储库的位置。地区名称:Ubuntu 版本的发行版名称。Ubuntu 12.04 为
precise
,Ubuntu 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
以构建一个新的。在终端或 dash 命令提示符中输入以下命令并按Alt+F2software-properties-gtk
注意,对于 Ubuntu 11.10 或更早版本,你必须在命令
gksu
前使用software-properties-gtk
窗户打开后,
- 选择所有四个类别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
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
删除重复行的程序。然后将结果保存>
在临时文件中,然后移动该文件以替换原始/etc/apt/sources.list
文件。
答案3
sources.list 中的重复条目有多严重?
我不知道这有多糟糕,但我不喜欢sudo apt-get 更新显示重复的条目。
顺便说一句,情况并没有那么糟糕,它只是显示你有重复的条目。
来源列表
sources.list 文件是向 Ubuntu 安装添加或升级应用程序的关键因素。系统也会使用它进行系统更新。该文件基本上是系统路线图,可让系统知道在哪里可以下载程序进行安装或升级。
就像 Windows 更新一样
您可以通过几个简单的步骤删除重复的条目Y PPA 经理
sudo add-apt-repository ppa:webupd8team/y-ppa-manager -y
sudo apt-get update
sudo apt-get install y-ppa-manager -y
打开y-ppa-经理形式短跑
输入您的管理员密码
双击高级
扫描并删除重复的 PPA 并点击确定
扫描并删除重复的 PPA 需要一些时间(1 到 2 分钟)
答案4
备份你的 sources.list:
sudo cp /etc/apt/sources.list{,.backup}
现在删除原始版本并更新:
sudo rm /etc/apt/sources.list && sudo apt-get update