我正在尝试将 openSUSE 从 11.4 版更新到 12.1 版。所需的下载大小超过 1.0 GB,但我的文件系统/var
正好是 1.0 GB,这就是为什么 zypper 在下载 .rpm 软件包时由于空间不足而停止的原因/var
。
有什么办法可以解决这个问题?
答案1
/var
通过调整大小来增加空间。
确定下载文件要存放到哪里/var/tmp
、/var/cache/
或者其他地方。在升级时,将其挂载绑定或符号链接到具有足够空间的其他地方(您可能需要复制一些文件)。
如果您在 中有很多空间/srv
而在 中没有空间/var
,并且下载转到/var/cache
,那么您可能会执行类似这样的操作。
lsof -n | grep '/var/cache'
# stop anything using that folder
rsync -va /var/cache /srv/tmp_var_cache/
mount -o bind /srv/tmp_var_cache /var/cache/
# restart anything you stopped.
答案2
抱歉,虽然这个想法是正确的(在 /srv 而不是 /var 中使用空间),但建议的解决方案是完全错误的。
mount --bind
使目录在新的位置上可用。它实际上是目录的硬链接(也不需要保留在同一个文件系统中,因为硬链接必须保留在同一个文件系统中)。这样,您仍然不会在 /var/cache 或 /srv/tmp_var_cache 中获得更多空间,因为在 mount --bind 之后,它们是同一个东西。
您想要的是使用 /srv/tmp_var_cache 而不是 /var/cache。并且您只需对包管理(即 /var/cache/zypp)执行此操作,而不必对整个 /var/cache 执行此操作,并且您只需使用符号链接,而不是 mount --bind。因此解决方案如下:
# move content (will take a while)
mv /var/cache/zypp /srv/tmp_var_cache_zypp
# Create pointer
ln -s /srv/tmp_var_cache_zypp /var/cache/zypp
如果你想使用 mount --bind,你需要的是
# move content (as above)
# create mount point
mkdir /var/cache/zypp
# mirror directory
mount --bind /srv/tmp_var_cache_zypp /var/cache/zypp
每次重启后,自动更新检查开始前,您都需要运行 mount --bind,否则就会出大问题。我会先尝试符号链接……
当然,要看的另一件事是是否只更改 /etc/zypp/zypp.conf 中包缓存的位置...