나의 첫 번째 문제는 apt-get update
또는을 시도했을 때였습니다 apt-get upgrade
. 업그레이드시 다음과 같은 오류가 발생합니다.
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.
apt-get install -f를 실행하려고 시도했는데 출력이었습니다 (프롬프트에 예라고 말한 후)
(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
나는 달리기를 시도했지만와 apt-get autoremove
같은 오류가 발생합니다 apt-get upgrade
.
내가 실행하면 다음 df
과 같은 결과를 얻습니다 /boot
.
/dev/sda1 233191 230297 0 100% /boot
그래서 나는 다른 곳에서 오래된 커널을 제거하려고 노력했습니다. 내가 가지고있는 커널을 확인했습니다.
$ dpkg -l linux-image-\* | grep ^ii
ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64
ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
이것으로 가장 오래된 것을 제거하려고하면 :
$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
설치를 엉망으로 만들지 않고 어떻게 부팅을 해제하거나 확장 할 수 있습니까?
답변
루트 파일 시스템에서 공간 확보
루트 파일 시스템의 공간을 확보하기 위해 실행을 시도 할 수 apt-get clean
있습니다.
그래도 작동하지 않으면 /var/cache/apt/archives
캐시에서 몇 개의 파일을 수동으로 제거하여 약간의 공간을 확보하십시오.
sudo rm linux-headers-*
.deb
필요한 경우 여기 에있는 모든 파일 을 제거해도 문제가되지 apt-get clean
않습니다. apt
다시 필요한 경우 자동으로 다시 다운로드됩니다 .
/ boot 파일 시스템에서 공간 확보
원본 포스터에는 별도의 /boot
파티션이 있으므로 apt
시스템 이 가득 차서 시스템이 작동하지 않습니다. 그곳에 여유 공간을 확보해야합니다.
공간이 거의 있으면 /boot
구성 파일 로 이동하여 두세 개를 제거하십시오.
sudo rm config-3.2.0-19-generic-pae
예를 들어, 커널 버전 중 하나의 이름을 사용하여 제거하려고합니다. 이것은 약간의 공간을 확보합니다 (약 144K).
공간이 더 필요한 경우 개별적으로 오래된 제거 vmlinuz
, initrd
, abi
그리고 System.map
당신이 (내 I386 커널 버전 중 하나 22M에 대한) 충분한 공간이 될 때까지 파일을.
무엇을하든 모두 제거하지 마십시오 . 사용하는 각 커널 종류에 대해 최소한 각 파일 종류의 일치하는 최신 두 버전을 유지해야합니다.
그런 다음 apt-get 설치 명령을 진행하십시오. 위에서 언급했듯이 삭제 한 뎁의 일부를 다시 다운로드해야 할 수도 있지만 자동으로 발생합니다. apt가 다시 작동하면 apt-get을 사용하여 제거한 파일에 해당하는 패키지를 제거하여 정리하십시오.
설정 파일 은 커널 팀 이 같은 이름의 커널 을 빌드 하기 위해 사용/boot
했던 커널 설정입니다 . 참조하거나 원치 않는 커널을 만드는 데 도움이되지 않는 한 제거하는 것은 무해해야합니다.
마지막으로 /boot
파티션 에서 오래된 커널 패키지를 수동으로 제거하여 새로운 커널 을위한 더 많은 공간을 확보합니다.
답변
제 경우에는 apt
명령과 dpkg
명령을 완료하지 못하여 제거 할 수 없었습니다. 자동 업데이트 설치에 실패했습니다 2.6.32-56-server
.
첫 번째 단계는 사용할 공간을 식별하는 것이 었습니다.
cd /boot
du -sk *|sort -n
약 30 개의 커널과 지원 파일이있었습니다.
나는 uname -a
실행중인 커널을 얻기 위해 리눅스 대안을 사용 2.6.32-43-server
하고 tar
있었고 실행되지 않았고 오래된 6 가지 버전 중 하나를 수행했음을 알았습니다 .
tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server
그런 다음 rm -rf
백업 한 작업을 수행했습니다.
rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server
이러한 명령을 예로 들어 설명하면 상황에 맞는 작업을 결정해야합니다.
에 약간의 공간이 있었으므로 이제 /boot
달릴 수있었습니다.
apt-get -f install
실패한 설치를 정리합니다 2.6.32-56-server
.
그런 다음
apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server
apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server
이것은 내가 백업 한 것을 되돌려 놓을 공간을 주었다.
tar -xf ~username/boot.tar
rm ~username/boot.tar
정리하기 위해 다음을 실행할 수 있습니다.
apt-get autoremove
나는 다시 부팅했고 지금은 4 %를 사용하고있다 /boot
.
답변
이전 커널을 제거 하는 dpkg
대신 사용할 수 있습니다 apt-get
.
sudo dpkg -r linux-image-3.2.0-29-generic
답변
부트 디렉토리에 이전 버전의 파일이 여전히 있음을 알았습니다.
$ ls /boot
vmcoreinfo-2.6.31-17-server
그리고 패키지 관리자는 이전 버전을 나열합니다.
dpkg -l | grep linux-image
따라서이 명령을 사용했습니다 ( autoremove
제거하고 싶지 않은 최신 이미지도 제거합니다)
sudo apt-get purge linux-image-2.6.31-17-server
나는 여전히 몇 가지 헤더를 남겼습니다.
dpkg -l | grep linux-headers
그래서 나는 이것을했다 :
sudo apt-get purge linux-headers-2.6.32-34
마지막으로 apt-get purge로 제거 할 수없는 패키지가 하나 남았습니다.
$ dpkg -l | grep linux-image
rc linux-image-2.6.28-11-server
sudo dpkg --purge linux-image-2.6.28-11-server
답변
의 사용 확인 /var/tmp
과를 du -sh /var/tmp/
. 해당 폴더의 모든 파일을 삭제하여 공간을 확보 할 수 있습니다.
그런 다음 다음을 실행하여 이전 커널을 제거 할 수 있습니다.
sudo apt-get clean
sudo apt install byobu
sudo purge-old-kernels
sudo apt autoremove
sudo update-grub
답변
이것이 내가 사용한 것입니다 :
sudo apt-get autoremove linux-image-xxxx
모든 오래된 커널에 대해이 작업을 수행하고 최신 커널 만 유지하십시오.
이전 커널을 자동으로 제거하고 GRUB을 업데이트하려면 다음을 참조하십시오 : Ubuntu Documentation
답변
나는 나를 위해 일한 유일한 것이 Aptitude를 사용한다는 것을 알았습니다.
sudo aptitude
그런 다음 열릴 때 일반적으로 바닥에 충족되지 않은 종속성에 대해 말합니다. g
제안 된 제거를 진행하기 위해 편지 를 칠 수 있습니다 . 무슨 일이 일어날 지 알려주는 페이지로 연결됩니다.
-
깨진 커널 옆에 마이너스가 있어야합니다 . g
다시 누르면 깨진 커널이 제거됩니다. q
종료하려면 누르십시오 . 그런 다음 sudo apt-get autoremove
이전 커널을 제거하고 공간을 확보하는 데 사용할 수 있어야 합니다.