Linux
/etc/localtime 不是符號連結
根據
localtime
Linux手冊頁:它應該是指向 /usr/share/zoneinfo/ 的絕對或相對符號連結,後跟時區標識符,例如“Europe/Berlin”或“Etc/UTC”。
ls -la /etc/localtime
這是在我的環境中,它不是符號連結的輸出:-rw-r--r--. 1 root root 724 Apr 3 2012 /etc/localtime
並且對於
cat /etc/localtime
TZif2їԒazpҹӂԣ<¿ֆfpם܈̰ݠYݪߵdpᖗ⸋p㮠p䠱咥p悤鴘 따 셀촿퉰 ݉ νS~pCDTCSTTZif2) ÿÿÿÿtϰÿÿÿÿїԿÿÿÿѡzpÿÿÿÿҹÿÿÿÿӂÿԚ:ÿÿÿÿԣ౿ÿÿÿռ¿ÿÿÿÿֆfpÿÿÿÿםÿÿڧÿۿ&ÿÿÿÿ܈̰ÿÿÿÿݠYÿÿÿÿݪÿݲsÿÿÿÿߵdpÿÿÿÿÿÿÿÿᖗÿÿÿÿÿ⸋pÿÿÿÿÿÿÿÿ㮠pÿÿÿÿ䠱ÿÿÿÿ咥pÿÿÿÿ悤ÿÿÿÿ鴘ÿꤘÿÿÿÿ 따ÿÿÿÿ 셀ÿÿÿÿ촿ÿÿÿÿÿÿÿÿÿÿ퉰 ݉ νSq羐LMTCDTCST CST-8
我的環境是在 VirtualBox 上執行的 Fedora 17。
我從其他人那裡複製了整個 Fedora 17 映像。換句話說,我沒有從頭開始建構環境。
我擔心這是一個真正的錯誤,或者是出於某種原因。
可能發生的事情是創建了區域文件的副本,而不是符號連結或硬連結。
您可以通過比較系統上安裝的區域文件的雜湊值來確定來源。
$ sha256sum /etc/localtime 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /etc/localtime $ find /usr/share/zoneinfo/ -type f -exec sha256sum "{}" + |grep 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/posix/America/Kentucky/Louisville 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/posix/America/Louisville 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/America/Kentucky/Louisville 821d6d97e3d34a3de2315279260e139adf484e581b4d187f8e6b532403b0f1c6 /usr/share/zoneinfo/America/Louisville
第二個欄位中 ls 的輸出中的“1”表示該文件有 1 個硬連結,因此它不是指向與 zoneinfo 路徑中的原始文件相同的文件的連結。
在現代 Fedora 上,您可以使用 timedatectl 來
timedatectl list-timezones
或者
timedatectl set-timezone time_zone
否則,只需 ln -sf 從 /usr/share/zoneinfo/ 覆蓋 /etc/localtime 中的適當區域文件(以防萬一!)
我懷疑這種情況一定是有問題的,最好有連結而不是副本的原因是因為軟體包更新可能會改變時間規則。但這是 Fedora 17,已經有 10 年曆史了……所以它沒有得到任何更新;)