잘못된 디스크 가득 참 오류 : apt-get을 설치하거나 제거 할 수 없음


24

Ubuntu 12.04 서버를 업그레이드하는 동안 다음 오류가 발생했습니다. 이제 apt-get패키지를 설치하거나 제거 할 수 없습니다.

linux-headers-3.13.0-62 압축 풀기 (... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precise1_all.deb에서) ...
dpkg : /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack) 처리 오류 :
 `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new '를 만들 수 없습니다 
(`./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '처리 중) : 장치에 남은 공간이 
없음 오류 메시지에 디스크가 표시되어 할당 된 보고서가 없습니다 전체 오류
 dpkg-deb : 오류 : 서브 프로세스 붙여 넣기가 신호에 의해 종료되었습니다 (깨진 파이프)
처리하는 동안 오류가 발생했습니다 :
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E : 하위 프로세스 / usr / bin / dpkg에서 오류 코드 (1)를 반환했습니다.

디스크 공간이 부족하지는 않지만

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

어쨌든 내 inode가 가득 찼습니다.

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

오래된 커널이 10 개 이상 있지만 제 apt-get자신이 절름발이이므로 제거 할 수 없습니다 . 그래서 비슷한 문제를보고하는 이 게시물 을 따라갈 수 없습니다 .

유일한 옵션은 몇 가지 오래된 커널을 수동으로 삭제하는 것 같습니다. 문제가됩니까?

더 나은 방법이 있습니까? 당분간 루트예약 된 공간을 사용 하고 이전 커널을 제거 할 수 있습니까?


1
실제로 /usr/src상황을 없애기 위해 몇 가지 이전 커널을 수동으로 제거했습니다 . 운 좋게 모든 것이 잘되어 apt다시 일하기 시작했습니다. 그러나 생산 기계에서 그러한 작업을 수행하기 전에 백업을 요청합니다. 백업이 완료된 가상 머신에서 수행했습니다.
souravc

작동합니다! 커널 4.4.0-51-generic으로 업데이트하기 위해 여기에서 동일한 작업을 수행했습니다 (ubutu 14.04.1). 미래에 문제가 발생하는지 확실하지 않습니다. 감사.
Moreno

답변:


36

나는이 게시물이 약간 오래되었다는 것을 알고 있지만이 게시물을 우연히 발견 할 수있는 사람에 대한 답변을 찾았습니다 : https://help.ubuntu.com/community/RemoveOldKernels

링크가 끊어진 경우 관련 스 니펫은 다음과 같습니다.

오래된 커널을 안전하게 제거

LVM 시스템, 암호화 된 시스템 또는 제한된 스토리지 시스템 사용자의 경우 가장 빈번한 문제는 / boot 파티션이 가득 찼다는 것입니다. 공간 부족으로 인해 패키지 관리자가 보류중인 업그레이드를 설치할 수 없습니다. 또한 apt-get은 종속성이 손상되어 패키지를 제거 할 수 없습니다.

이 문제는 쉘에서 빠르고 쉽게 해결할 수 있습니다. 수동으로 제거 할 하나 또는 두 개의 이전 커널을 식별하면 패키지 관리자가 대기중인 업그레이드를 설치할 수있는 충분한 공간을 제공합니다.


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

나는 이것을 따라 갔다 :

sudo apt-get autoremove --purge

9

나는 이제 상황에서 /usr/src벗어나고 상황을 없애기 위해 몇 가지 오래된 커널을 제거했습니다. 다행스럽게도 모든 것이 잘 진행되었고 apt가 다시 작동하기 시작했습니다.

프로덕션 시스템에서 이전 커널을 제거하기 전에 백업하는 것이 좋습니다.


더 나은 솔루션은 여전히 ​​환영합니다. 누군가에게 도움이 될 수 있으므로이 의견 을 답변으로 게시 하십시오 .
souravc

1
일부 오래된 커널을 제거 apt-get autoremove 하고 일부 종속 항목을 실행 및 설치 한 후 apt-get -f install문제가 해결되었습니다.
Thamaraiselvam

고맙습니다. 나는 모든 리눅스-*를 제거 /boot했지만 사용하지 않았기 dkpg때문에 여전히 *-header파일 이 있었다/usr/src
Dylan Pierce
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.