以下の最小限のファイルがありますsources.list
。
root@c:~# cat /etc/apt/sources.list
deb http://ftp.fi.debian.org/debian/ wheezy main
root@c:~# apt-get update
Hit http://ftp.fi.debian.org wheezy Release.gpg
Hit http://ftp.fi.debian.org wheezy Release
Hit http://ftp.fi.debian.org wheezy/main i386 Packages
Hit http://ftp.fi.debian.org wheezy/main Translation-en
Reading package lists... Done
root@c:~#
パッケージをインストールしようとすると分割エラーが発生します。たとえば、
root@c:~# apt-get install tcpdump
Reading package lists... Done
Building dependency tree
Reading state information... Done
Segmentation fault
root@c:~#
次の/var/log/messages
項目が記録されました。
Mar 29 05:46:25 c kernel: [ 4677.384747] apt-get[5607]: segfault at b8647e30 ip b8647e30 sp bfaaa9c8 error 14
最後の(sp)数は常に変更されます。つまり、3回実行すると、apt-get install nmap
次が記録されます。
Mar 29 05:46:59 c kernel: [ 4711.046400] apt-get[5612]: segfault at b86cbe30 ip b86cbe30 sp bfb36ea8 error 14
Mar 29 05:47:02 c kernel: [ 4714.229648] apt-get[5616]: segfault at b8609e30 ip b8609e30 sp bfcecec8 error 14
Mar 29 05:47:03 c kernel: [ 4715.505656] apt-get[5620]: segfault at b86dae30 ip b86dae30 sp bfb4b588 error 14
別のリポジトリを試して、検索されたパッケージファイルのローカルリポジトリをクリーンアップしました。パッケージのインストール時にセグフォルトが発生するのはなぜですか?私のものがapt-get
故障しましたか?
答え1
使ってみましたか?ストレス問題を診断しますか?
google-earthパッケージに関連すると思われる同様の問題がありました。パッケージのメタデータの内容により、apt-get(またはaptシステムの一部のコンポーネント)がsegfaultを生成しました。
私はこれを使ってこれを見つけました:
sudo strace -f apt-get update >log.strace-aptget 2>&1
ログファイルを見ると、ファイルを読んだ後に/var/lib/apt/lists/dl.google.com_linux_earth_deb_dists_stable_Release
apt-getがmremap()
segfaultを引き起こすことをすることがわかります。 resources.list(実際には)のgoogle-earthエントリをコメントアウトし、/etc/apt/sources.list.d/google-earth.list
apt-getが正しく機能するようになりました。 (もちろん今はgoogle-earthを更新できませんが、少なくともapt-getは機能します。)
答え2
次のコマンドを実行してください。問題が解決しました。
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/locksudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status || sudo cp /var/backups/apt.extended_states.0 /var/lib/dpkg/status
sudo mv /var/lib/dpkg/available /var/lib/dpkg/available-bad
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo rm /var/cache/apt/*.bin
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
sudo apt-get upgrade
答え3
私はPreciseでも同じことを経験し始めました。この問題を解決するために、/etc/apt/apt.conf.d/00bugs ファイルに次の行を追加しました。
APT::キャッシュ開始200000000;
これ以上分割エラーは発生しません。これに関するバグレポートを開きました。https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1445436
答え4
明らかに、セグフォルトにはいくつかの理由があるかもしれません。私の場合、部分的にインストールされたパッケージに関連していました。一部のコマンドは、たとえば提供しますが、E: The package cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00 needs to be reinstalled, but I can't find an archive for it.
他のapt
コマンドはapt search ____
segfault で終了します。
私の場合の解決策は最初に実行してsudo dpkg --remove --force-all cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00
からsudo apt-get update
。その後、私のapt search _____
コマンドは再びうまくいきました。