由于/ var中缺less空格,无法将opensuse从11.4更新到12.1

我试图从版本11.4更新opensuse到12.1。 所需的下载大小超过1.0 GB,但是我的文件系统/var正好是1.0 GB,这就是为什么zypper在下载.rpm软件包时停止的原因,因为/var中缺less空格。

这个问题有什么解决办法?

通过重新resize来增加/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. 

我很抱歉,虽然这个想法是合理的(在/ srv中使用空格而不是在/ var中),但是build议的解决scheme却是大错特错的。

 mount --bind 

使一个目录在新的地方交替使用。 它实际上是一个目录的硬链接(也不需要像硬链接那样保持在同一个文件系统中)。 你仍然不会在/ var / cache或/ srv / tmp_var_cache中获得更多空间,因为它们在mount –bind之后是同样的东西。

你想要的是使用/ srv / tmp_var_cache而不是/ var / cache。 而且你只需要做这个包pipe理,就是/ var / cache / zypp,而不是整个/ var / cache,你可以使用符号链接,而不是挂载 – 绑定。 因此,解决scheme是这样的:

 # 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中更改包caching的位置。