【问题标题】:clock skew detected: you build may be incomplete检测到时钟偏差:您构建的可能不完整
【发布时间】:2015-02-09 00:20:45
【问题描述】:

我见过一堆这样的问题,最值得注意的是this one,它们都说几乎相同的东西:这个错误是由源文件的修改时间在未来引起的,通常发生在当服务器时钟和客户端时钟不同步时挂载 NFS。

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

【问题讨论】:

  • 这个问题可能属于unix.stackexchange.comserverfault.com,但解决方案是将您的客户端计算机(或您的服务器)同步到 NTP 并确保它们的时钟同步。
  • 正如我所说,我已将文件从已安装的驱动器中复制出来,以便将它们本地存储在构建机器上。我在构建中引用的文件与服务器没有连接。
  • 当您touch 时,您是否验证了修改时间实际上会更新以匹配正确的系统时间?尽管如此,这是一个黑客解决方案。您的时钟应该正确同步。有时,极端漂移可能表明您的水晶可能会向南移动,因为它无法跟上时间。
  • 我做了更多的挖掘工作。我在尝试手动重置时钟时遇到的问题是我正在更改 hwclock,而不是系统时钟。我似乎无法通过代理将我的机器连接到 ntp 服务器,但现在它们已经足够接近了

标签: makefile nfs


【解决方案1】:

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

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

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

server [这里放nfs服务器的地址] minpoll 3 maxpoll 3

... '3' 是轮询间隔的秒的二次幂,因此是 8 秒。 NFS 服务器的 NTP 配置文件或许可以不用管。

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

ntpq -p

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

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

  • 对您的构建执行完全清理(甚至可以删除目录并在方便时重新克隆),然后重试。

整个互联网都有类似的答案,但他们建议只需将 NTP 安装到机器上。这还不足以为我解决问题——它们的同步不够紧密。更好的方法是以非常频繁的间隔将客户端的时钟与本地网络上的服务器时钟同步。这在互联网上是不受欢迎的,但在局域网上很便宜。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-14
      • 2012-11-24
      • 1970-01-01
      • 2013-08-16
      • 2015-06-08
      • 2013-02-08
      • 2011-04-18
      • 2012-10-05
      相关资源
      最近更新 更多