检测到时钟偏差:您构建的可能不完整

时间:2014-12-10 17:28:49

标签: makefile nfs

我已经看到了很多这些问题,最值得注意的是this one,这些问题几乎都是一样的:这个错误是由未来源文件的修改时间引起的,当服务器时钟和客户端时钟不同步时,通常发生在挂载的NFS上。

我已尝试touch我的目录中的所有文件,正如许多人所建议的那样。当它没有工作时,我实际上尝试将所有文​​件从已安装的驱动器复制到本地驱动器中,再次touch,然后重新运行构建,我仍然得到相同的错误。有没有其他方法可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Windows,请检查您是否在FAT文件系统上进行编译,如果是,请尝试切换。

FAT有2 second resolution,因此您的构建可以添加到存档,编译下一个文件,但检测到存档已经是最新的。其他文件系统的时间分辨率列在另一个answer

如果您必须考虑.LOW_RESOLUTION_TIME特殊目标。

答案 1 :(得分:0)

NFS服务器和NFS客户端的系统时间不同步。 NFS服务器可能正在向前发展。

在NFS挂载上运行make对毫秒级别很敏感,因此客户端/服务器系统时间必须紧锣密鼓。这可以通过让您的NFS客户端使用NTP以允许的最高速率(通常为8秒)将其时间与NFS服务器的时间同步来完成。在局域网上,这应该使您的精度达到亚毫秒级。

  • 在NFS客户端和NFS服务器上都安装NTP。
  • 在客户端的NTP配置文件(Linux中为ntp.conf)上,注释掉以“ pool”或“ server”开头的条目,并添加以下行:
  

服务器[此处是nfs服务器的放置地址] minpoll 3 maxpoll 3

...对于轮询间隔,“ 3”是秒的2的幂,因此是8秒。 NFS服务器的NTP配置文件可能可以单独放置。

  • 在客户端上重新启动ntpd服务。
  • 使用客户端中的linux命令测试客户端是否正在同步:
  

ntpq -p

...重要的是,您的“到达”列长时间不为零,这意味着它无法联系服务器的NTP。

  • 如果它们不同步,则可能必须重新启动客户端和服务器。 Synology NAS作为NTP服务器可能就是这种情况。

  • 对构建进行完全清除(即使方便,甚至删除目录并重新克隆),然后重试。

类似的答案遍及整个Internet,但是他们建议仅将NTP安装到计算机上。这不足以为我解决问题-同步不够紧密。更好的方法是以非常频繁的时间间隔将客户端的时钟同步到本地网络上的服务器时钟。互联网对此并不满意,但在局域网上却很便宜。

如果不可能,请至少尝试确保客户端和服务器上的NTP在其池/服务器条目中使用相同时间的服务器。