Linux

/etc/localtime 不是符號連結

  • August 26, 2021

根據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ÿÿÿÿ悤ÿÿÿÿ鴘򁀿ÿꤘÿÿÿÿ
   따ÿÿÿÿ
         셀ÿÿÿÿ촿򁀿ÿÿÿÿÿ򁀿ÿ𐗯ÿÿÿÿ퉰 ݉ 
ν򒙐S񿿂q羐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 年曆史了……所以它沒有得到任何更新;)

引用自:https://unix.stackexchange.com/questions/662850