科技 · 實用指南
make 回報 clock skew?touch 整棵目錄前先證明未來時間戳
先保留精確目標、先決條件與奈秒級 mtime,再查清主機、虛擬機、容器或檔案伺服器的寫入時鐘。

GNU make 的 clock skew 是相依順序警告,不是裝飾訊息。目標或先決條件看起來晚於建置時鐘,make 可能漏做必要工作或重複建置。先保存路徑與時間戳,再修正時間邊界。
凍結警告與相依邊
保存完整 make 指令、版本、工作目錄及所有指名未來檔案的輸出。以秒和奈秒記錄路徑、檔案系統、掛載點、擁有者、inode 與連結目標。用 make debug 確認它是目標、先決條件或產生的 Makefile;先不要 touch、clean 或複製。
找出晚於建置時鐘的時間戳
記錄建置主機的 UTC 與同步狀態,再列出 mtime 晚於基準的檔案。逐一比較目標與先決條件,保留次秒差;GNU make 維護者指出很小的檔案伺服器偏差也會觸發警告。
辨識寫入者的時間域
為每個未來檔案確認建立或還原它的程序與機器,核對 host/guest、container、CI、網路檔案伺服器、雙重開機或封存來源。時區顯示不改變 epoch mtime;比較 UTC 與同步證據。
先修時間邊界再處理檔案
以支援的時間服務修正負責的主機、VM 或伺服器並確認同步。會重新產生未來檔案的 writer 在測試時應停止。邊界正確後,只移除產物或修改來源與預期時間都清楚的檔案;不要整個 repo 一律 touch。
從已知邊界重新建置
保留證據後使用專案正式 clean 目標或新建置目錄,執行同一目標且不隱藏警告,並驗證產物。只在單一產物已證實時間錯誤時精準移除它。
證明增量建置重新可信
乾淨建置後不改內容再跑一次,應無非預期工作與 skew。再只改一個受控先決條件,確認預期相依路徑重建。未來檔案再現、時鐘未同步或 writer 不明時停止。
