다음과 같은 최소한의 파일이 있습니다 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) 숫자는 항상 변경됩니다. 즉, 세 번 수행하면 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 _____
명령이 다시 잘 작동했습니다.