web-dev-qa-db-ja.com

apt-getの「W:Duplicate sources.list entry」の背後にある理由は何ですか?

この質問は、エラーメッセージの理由に関するものです。 sources.listなどの構成ファイル内の重複するエントリは、自動的に修正するのがかなり簡単で、かなり簡単にスクリプト化できるように思えます、IMHO。

このエラーメッセージに関する正規の質問について Anwarの回答 によれば、

Sources.listに次のような行がある場合

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

次に、以下のような別の行を含めることはできません(ファイルにあります)

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

これは解決するのがかなり簡単なことのようです-行をトークンに分割し、2つをマージします。

それでも、Ask Ubuntuの複数の投稿で実際にapt-getを実行しようとするとエラーが表示されますが、You may want to run apt-get update to correct these problemsは明示的にユーザーにapt-get updateを伝えます。

apt-getがこれらを自動的に解決しない特別な理由はありますか?これを手動で修正することが実際に望ましい何らかの設計概念/推論はありますか?

3

それでも、apt-getは明示的にユーザーに伝えますYou may want to run apt-get update to correct these problemsでも、Ask Ubuntuの複数の投稿で、実際に実行しようとするとエラーが表示されますapt-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

ここでの問題は、2つの警告がいくぶん独立して生成されることです。

W: You may want to run apt-get update to correct these problemsは、aptキャッシュの構築中にエラーが発生した場合に出力されます。これはすべてを網羅する一般的なソリューションです。これを出力するコードは、発生したエラーを知りません(または気にしません)が、キャッシュを構築し、新しいパッケージをフェッチするときに発生する可能性のあるほとんどのエラーを想定することは合理的だと思いますリストは解決策かもしれません。 (誰かが走ったので私たちが見たすべての適切な問題を考えてくださいapt-get installまたはapt-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は、重複するエントリを追加しないように十分にスマートです。したがって、このエラーは常に誰かがソースを手動で編集したときに発生します。また、人間には興味深いエラーが発生する可能性が無限にあるため、自動的に修正するのは安全ではありません。

0
muru