我正在尝试在 Ubuntu Server 14 下从源代码安装 GNU GSL Scientific 库 1.16。我已经在 OS X 下多次这样做了,没有任何问题,但在 Ubuntu 机器上我不断收到相同的错误。我已经采取了 GNU GSL 安装说明中建议的步骤,以防出现问题,即
如果构建库时遇到问题,请尝试使用
./configure --disable-shared --disable-dependency-tracking
因此安装应该是这样的:
./configure --disable-shared --disable-dependency-tracking
sudo make
sudo make install
但编译步骤失败并出现以下错误:
file.c:102:0:致命错误:写入 /tmp/ccF9p6T9.s 时出错:设备上没有剩余空间
#undef BASE_CHAR
^ 编译终止。
有什么想法吗?我使用相同的源代码在 OS X 下编译库,没有任何错误。我不明白“设备上没有剩余空间”错误从何而来,因为我有大量可用空间。
编辑
添加输出df -h /tmp
File.system Size Used Available Used% Mounted at
overflow 1,0M 468K 556K 46% /tmp
附言
我知道apt-get
存储库中的 GSL 包,但我确实需要从源代码安装它。
答案1
您的错误消息给出了问题的确切原因,我在下面用三个星号将其括起来:
file.c:102:0: fatal error: ***error writing to /tmp/ccF9p6T9.s: No space left on device***
这意味着您的/tmp
目录(用于保存临时文件等)已满。您说过您从不重新启动计算机,因为它总是在计算一些东西。我猜它用来将/tmp
计算数据存储在临时位置。该目录通常在重新启动时和其他情况下被清除。
问题是,当/tmp
磁盘满了的时候,你会遇到很多问题。从df -h
上面的输出来看,你的/tmp
磁盘被挂载为“溢出”。很可能是你的根文件系统被填满了,并且/tmp
没有被定义为自己的分区,系统重新挂载/tmp
为“溢出”磁盘,该磁盘的大小是有限的。
因此,您需要做两件事:
- 确定您的
/
分区是否空间不足。df -h
它本身会为您提供所有内容的概要。 - 从磁盘中删除旧数据(删除或将其移出系统的其他位置)和目录
/tmp
。某些东西正在占用您的空间,这是一件坏事。 - 考虑在定期维护期间或类似情况下不时重启。这样,您的
/tmp
目录就会时常被清除,您可以应用内核更新等。