Str*_*fey 163 upgrade apt partitioning
我的第一个问题是当我尝试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.
Run Code Online (Sandbox Code Playgroud)
我尝试运行 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)
Run Code Online (Sandbox Code Playgroud)
我尝试运行apt-get autoremove,它给了我与apt-get upgrade.
当我跑步时df,我得到了这个/boot:
/dev/sda1 233191 230297 0 100% /boot
Run Code Online (Sandbox Code Playgroud)
所以,我在别处读到我应该尝试清除旧内核。我检查了我有哪些内核:
$ 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
Run Code Online (Sandbox Code Playgroud)
当我尝试删除最旧的时:
$ 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).
Run Code Online (Sandbox Code Playgroud)
如何在不弄乱我的安装的情况下释放或扩展引导?
Joh*_*ber 139
要释放根文件系统上的空间,您可以尝试执行apt-get clean.
如果这不起作用,您可以转到/var/cache/apt/archives并从缓存中手动删除一些文件以获取一些空间,例如:
sudo rm linux-headers-*
Run Code Online (Sandbox Code Playgroud)
.deb如果需要,删除这里的所有文件不会有什么坏处- 这就是这样apt-get clean做的。apt如果再次需要它们,它们将被自动重新下载。
原始海报有一个单独的/boot分区,这就是已满并阻止apt系统工作的地方。他有必要在那里腾出空间。
如果有足够的空间,请转到/boot并删除一两个配置文件:
sudo rm config-3.2.0-19-generic-pae
Run Code Online (Sandbox Code Playgroud)
例如,但使用您打算删除的内核版本之一的名称。这将释放一点空间(每个大约 144K)。
如果您需要更多的空间单独删除旧的vmlinuz,initrd,abi和System.map文件,直到你有足够的空间(约22M为我的i386的内核版本之一)。
无论您做什么,都不要将它们全部删除。对于您使用的每种内核,您至少应该保留每种文件的最新两个匹配版本。
然后继续执行 apt-get install 命令。如上所述,他们可能必须重新下载您删除的一些 deb,但如果是这样,那将自动发生。当您再次使用 apt 时,使用 apt-get 删除与您删除的文件对应的包进行清理 - 这样一切都匹配。
在配置文件/boot是在内核配置使用内核团队打造的同名内核。除非您希望将其用作参考或帮助您构建自己的内核,否则删除它应该是无害的。
最后,您将手动从/boot分区中删除一两个旧内核包,以便为新内核包腾出更多空间。
小智 70
就我而言,apt命令和dpkg命令无法完成,也无法删除。安装时自动更新失败2.6.32-56-server。
我的第一步是确定要使用的空间,
cd /boot
du -sk *|sort -n
Run Code Online (Sandbox Code Playgroud)
我有大约 30 个内核和支持文件。
我做了一个uname -a来获取正在运行的内核,我确定我在 Linux 上,2.6.32-43-server并且做了tar6 个没有运行的版本中的一个,并且是旧的。
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
Run Code Online (Sandbox Code Playgroud)
然后我做了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
Run Code Online (Sandbox Code Playgroud)
我将这些命令作为示例展示,您将必须决定将针对您的情况使用什么命令。
现在我有一些空间/boot,我可以跑了
apt-get -f install
Run Code Online (Sandbox Code Playgroud)
清理失败的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
Run Code Online (Sandbox Code Playgroud)
这让我有空间放回我备份的内容。
tar -xf ~username/boot.tar
rm ~username/boot.tar
Run Code Online (Sandbox Code Playgroud)
为了清理,我可以运行:
apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
我重新启动,现在只使用 4% 的/boot.
psu*_*usi 22
您可以使用dpkg而不是apt-get删除旧内核:
sudo dpkg -r linux-image-3.2.0-29-generic
Run Code Online (Sandbox Code Playgroud)
小智 10
我注意到引导目录中还有一些旧版本的文件:
$ ls /boot
vmcoreinfo-2.6.31-17-server
Run Code Online (Sandbox Code Playgroud)
包管理器会列出旧版本:
dpkg -l | grep linux-image
Run Code Online (Sandbox Code Playgroud)
因此我使用了这个命令(autoremove也会删除我不想删除的最近的图像)
sudo apt-get purge linux-image-2.6.31-17-server
Run Code Online (Sandbox Code Playgroud)
我还有一些标题:
dpkg -l | grep linux-headers
Run Code Online (Sandbox Code Playgroud)
所以我这样做了:
sudo apt-get purge linux-headers-2.6.32-34
Run Code Online (Sandbox Code Playgroud)
最后还有一个包我无法用 apt-get purge 删除:
$ dpkg -l | grep linux-image
rc linux-image-2.6.28-11-server
Run Code Online (Sandbox Code Playgroud)
sudo dpkg --purge linux-image-2.6.28-11-server
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
193211 次 |
| 最近记录: |