저는 Ubuntu 14.04.4 LTS를 실행 중이고 apt-get을 사용하여 새 패키지를 설치하려고 합니다. 불행히도 시도할 때마다 다음과 같은 메시지가 나타납니다.
The following packages have unmet dependencies:
linux-image-extra-3.16.0-70-generic : Depends: linux-image-3.16.0-70-generic but it is not going to be installed
linux-image-generic-lts-utopic : Depends: linux-image-3.16.0-70-generic but it is not going to be installed
linux-signed-image-3.16.0-70-generic : Depends: linux-image-3.16.0-70-generic (= 3.16.0-70.90~14.04.1) but it is not going to be installed
구글링 좀 하다가 알아낸건데이는 부팅 파티션의 공간 부족으로 인해 발생할 수 있습니다.(물론 100%로 df
표시됩니다 /boot
). 그러나 허용된 답변에서 명령을 실행하려고 할 때마다 apt-get
위와 같은 오류가 발생합니다.
을 사용하지 않은 다른 솔루션을 찾다가 apt-get
발견했습니다.이 게시물sudo dpkg --purge linux-image-4.2.0-15-generic
, 오래되고 사용되지 않는 커널 과 같은 것을 사용하는 것이 좋습니다 .
dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
(앞서 언급한 게시물에서) 상태에 여러 개의 오래된 커널이 있음을 보여줍니다 pi
(원하는 제거, 상태는 다음에 따라 설치됨).이것)
uname -r
내가 실행 중인 커널이 3.16.0-62-generic이라는 메시지가 표시되므로 이러한 이전 커널을 제거해도 안전할 것이라고 생각했습니다. 그러나 다음과 같은 sudo dpkg --purge linux-image-3.16.0-49-generic
결과를 얻으려고 하면 다음과 같은 결과가 발생합니다.
dpkg: error processing package linux-image-3.16.0-49-generic (--purge):
dependency problems - not removing
Errors were encountered while processing:
linux-image-3.16.0-49-generic
가르그! 나는 어찌할 바를 모르고 (dpkg나 apt-get에 대해 잘 알지 못함) 도움이 필요합니다.
질문:
를 사용하여 이전 커널을 제거할 수 없는 이유는 무엇입니까
dpkg
?해당 질문을 직접적으로 해결할 수 없다면 궁극적으로 다음 사항을 알고 싶습니다.새 패키지를 다시 설치할 수 있는 상태가 되려면 어떻게 해야 합니까?
내가 시도한 다른 것들:
sudo apt-get autoremove
: 충족되지 않은 종속성에 대한 원래 오류가 발생합니다.sudo apt-get -f autoremove
: 결과:
linux-image-3.16.0-70-generic (3.16.0-70.90~14.04.1) 압축 풀기... dpkg: 아카이브 /var/cache/apt/archives/linux-image-3.16.0-70-generic_3.16.0-70.90~14.04.1_amd64.deb 처리 중 오류가 발생했습니다(--unpack): './boot/vmlinuz-3.16.0-70-generic'에 대해 추출된 데이터를 '/boot/vmlinuz-3.16.0-70-generic.dpkg-new'에 복사할 수 없습니다. 쓰기에 실패했습니다(장치에 남은 공간이 없습니다). 오류 메시지가 디스크 가득 참 오류를 나타내기 때문에 승인 보고서가 작성되지 않았습니다. dpkg-deb: 오류: 하위 프로세스 붙여넣기가 신호에 의해 종료되었습니다(깨진 파이프). /etc/kernel/postrm.d 검사하기. 실행 부분: /etc/kernel/postrm.d/initramfs-tools 3.16.0-70-generic /boot/vmlinuz-3.16.0-70-generic 실행 실행 부분: /etc/kernel/postrm.d/zz-update-grub 3.16.0-70-generic /boot/vmlinuz-3.16.0-70-generic 실행 처리하는 동안 오류가 발생했습니다: /var/cache/apt/archives/linux-image-3.16.0-70-generic_3.16.0-70.90~14.04.1_amd64.deb E: 하위 프로세스 /usr/bin/dpkg가 오류 코드(1)를 반환했습니다.
메모: 이 질문을 다음에서 이전했습니다."유닉스 & 리눅스 스택 교환"
답변1
uname -r
현재 실행 중인 커널을 표시하는 데 사용됩니다 . 이 버전 번호가 있는 항목은 삭제하지 마세요.
커널이 속한 패키지를 찾을 수 있습니다 /boot
.
for i in /boot/vmlinuz* ; do
dpkg -S $i| egrep -v $(uname -r)
done
다음을 사용하여 이러한 패키지를 제거할 수 있습니다.sudo apt-get purge
패키지 이름 ....
버전 번호가 동일한 다른 패키지를 검색하면 삭제할 커널과 관련된 더 많은 패키지를 찾을 수 있습니다.
버전 번호를 추출하려면 다음 안내를 따르세요.
for i in /boot/vmlinuz* ; do
dpkg -S $i | egrep -v $(uname -r)
done |cut -d- -f3-4
버전 번호가 동일한 다른 패키지를 찾으려면 다음 안내를 따르세요.
for j in $(
for i in /boot/vmlinuz* ; do
dpkg -S $i| egrep -v $(uname -r)
done |cut -d- -f3-4 ) ;
do
dpkg -l "*$j*" | egrep '^ii|^rc'
done
현재 커널을 제외한 모든 커널과 삭제된 커널과 버전이 일치하는 모든 패키지를 자동으로 삭제하려면(위험, 윌 로빈슨):
간단히 추가하세요
| awk '{print $2}' | xargs sudo apt-get --dry-run purge
이전 코드 조각으로. 원하는 대로 작동한다고 확신하면 를 제거하세요 --dry-run
.
공간이 너무 꽉 차서 패키지를 삭제할 수 없는 경우 가장 오래된 파일을 제거하여 /boot
공간을 확보할 수 있습니다 ./boot
/boot/initrd.img*