apt-get 的 W:重复的 sources.list 条目背后的原因是什么?

apt-get 的 W:重复的 sources.list 条目背后的原因是什么?

这个问题实际上是关于为什么错误消息。sources.list在我看来,配置文件中的重复条目似乎很容易自动更正,并且可以相当容易地编写脚本。

根据安瓦尔的回答关于此错误消息的典型问题:

如果你的 sources.list 中有这样的一行

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

那么它就不能有另一行像下面这样(你的文件有)

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

这似乎是一个相当容易解决的事情——将线分成标记并将两者合并。

然而,尽管在 Ask Ubuntu 上的多个帖子中都提到当人们尝试运行时确实会出现错误,但还是apt-get明确地告诉用户。You may want to run apt-get update to correct these problemsapt-get update

那么,为什么不能自动解决这些问题有什么特别的原因吗apt-get? 是否存在某种设计概念/推理,实际上希望手动修复此问题?

答案1

然而,尽管在 Ask Ubuntu 上的多个帖子中都提到当人们尝试运行时确实会出现错误,但还是apt-get明确地告诉用户。You may want to run apt-get update to correct these problemsapt-get update

但这不是唯一出现此错误的地方。大多数人确实倾向于apt-get update在对源进行更改后运行,这完全没问题,但这也可能发生在其他 apt 操作中:

$ sudo vim /etc/apt/sources.list
[sudo] password for muru: 
$ sudo apt install vim-gnome    
Reading package lists... Done
Building dependency tree       
Reading state information... Done
vim-gnome is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
W: Duplicate sources.list entry http://jp.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages (/var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-amd64_Packages)
W: Duplicate sources.list entry http://jp.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages (/var/lib/apt/lists/jp.archive.ubuntu.com_ubuntu_dists_trusty_main_binary-i386_Packages)
W: You may want to run apt-get update to correct these problems

这里的问题是这两个警告是独立产生的。

W: You may want to run apt-get update to correct these problems在构建 apt 缓存时发生任何错误时都会打印。这是一个通用的解决方案:打印此代码的代码不知道(或关心)发生了哪个错误,但我认为,对于构建缓存时可能发生的大多数错误,获取新的软件包列表可能是解决方案,这是合理的。(想想我们看到的所有 apt 问题,因为有人运行了apt-get installapt-get upgrade没有运行apt-get update。)

但开发人员知道这不是一个好建议。请参阅apt-pkg/cachefile.cc

/* This sux, remove it someday */
if (_error->PendingError() == true)
   _error->Warning(_("You may want to run apt-get update to correct these problems"));

(一如既往,补丁应该受到欢迎。)

那么 apt-get 不能自动解决这些问题有什么特殊原因吗?

因为,恕我直言,这是总是PEBCAK 的结果add-apt-repository足够智能,不会添加重复的条目。因此,此错误总是当有人手动编辑源代码时就会发生这种情况。由于人类犯错误的可能性是无穷的,因此让其自动更正并不安全。

相关内容