我有一台机器,它的根分区正在耗尽空间。我有另一个磁盘,上面有足够的空闲空间。如何将apt-get配置为在不同的磁盘/目录上安装软件包?
发布于 2015-04-20 13:35:50
你不会想那样做的。第一件事是尝试在根下回收空间。这可能是可行的。首先,cd到/var/cache/apt/archives
并键入du -hs
。这将给出apt缓存的deb包所使用的空间。您可以手动或使用apt-get clean
删除这些内容。
还有一些工具可用于删除大型未使用的包。例如,您可以安装wajig
(apt-get install wajig
)并使用wajig large
。这将为您提供一个按大小顺序排列的软件包列表。
如果这不能解决您的问题(而且应该解决),那么您可以考虑尝试增加您的根文件系统。你在用LVM吗?无论如何,您要做的是扩展根文件系统以使其更大。使用LVM,您可以轻松地在另一个磁盘上扩展它,但是您将首先卸载房间文件系统。如果您不使用LVM,可能会更难--我只使用了LVM很长一段时间,所以我不确定其中的选项。
如果您需要更多的特定信息,请将df -h
的输出粘贴到您的问题中。
发布于 2015-04-20 13:27:25
apt(8)没有更改安装目录的直接选项。dpkg(1)确实如此,但它是针对色度环境的。
您可以正常安装,然后移动应用程序文件,将符号链接从原始位置设置到新位置。这可能不适用于所有的应用程序。另外,在卸载时,如果您不反转进程,则可能会出现问题。
您最好的选择是清理您/根分区以释放空间;如果您/根分区下的/usr或其他目录移动到您的空闲磁盘并安装在根下;使用LVM扩展您的根分区,使用其他磁盘上的空闲空间;或者重新构建包以安装到其他地方。
发布于 2015-04-20 14:20:30
您可以首先检查是否有任何大型日志文件或类似的文件占用了太多的空间(su、du
和find
来查找它)。
如果您无法通过任何方法(比如apt-get clean
,查找是否有du -sh /*
和du -sh /bigger_directory/*
等的大文件)来回收空间,那么您可以将/usr移动到同一磁盘或其他磁盘上的一个新分区。这是通常安装所有包的目录,因此您应该通过移动它来恢复大部分磁盘空间。
我已经做过几次了,我甚至用类似的方法迁移了完整的系统(即将我的笔记本电脑的操作系统移到一个新的SSD磁盘上)。我所采取的步骤:
sudo su - root mkdir /temp ### Assuming / is /dev/sda1 : mount -t ext4 /dev/sda1 /temp cd /temp mv /temp/usr /temp/usr.OLD mkdir /temp/usr chown root:root /temp/usr chmod 755 /temp/usr ### Assuming your new partition is /dev/sda6 mount -t ext4 /dev/sda6 /temp/usr ### Copy the entire old /usr to the new disk rsync -avz /temp/usr.OLD/* /temp/usr ### Edit your fstab to automount /usr from the new location vim /temp/etc/fstab ### (add an entry like: /dev/sda6 /usr ext4 defaults 1 2) cd / umount /temp/usr umount /temp/ rmdir /temp exit
如果存在任何问题,请记住,您可以使用相同的方法(使用livecd引导、在/temp中挂载/挂载//temp、删除/etc/fstab条目并将/usr和mv /usr.OLD删除为/usr)来恢复旧的usr。
免责声明:请注意,虽然这不是一个非常先进的过程,你应该相当小心,并确保你完全理解所有的步骤。在测试此过程是否有效之前,此过程中不会删除任何内容,但请在遵循该过程之前检查所有内容。如果您想先测试一个示例分区(比方说/opt),您可以使用它进行实践。
https://unix.stackexchange.com/questions/197401
复制相似问题