
免責聲明:
這確實不是對我的系統穩定運作至關重要的主要問題,但我問這個問題是因為我根本無法理解它,我真的很想知道這裡發生了什麼。
我正在運行一個
arch linux
盒子,剛剛做了yaourt -Syua
。一切都很順利。我重新啟動並檢查systemctl list-units --state failed
結果ntpd.service
。我journalctl -r -u ntpd
找到了該條目
Apr 24 19:54:33 htpc ntpd[1850]: /usr/bin/ntpd: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
運行ldconfig -v | grep libcrypto
產生
libcrypto.so.1.1 -> libcrypto.so.1.1
又屬於openssl
# yaourt -Ql | grep libcrypto
openssl /usr/lib/libcrypto.so
openssl /usr/lib/libcrypto.so.1.1
然後我想也許我第一次運行時有些東西沒有升級,yaourt -Syua
所以我第二次嘗試,沒有升級候選人。ntp
無論如何,最有可能的候選人是openssl
升級成功的
# yaourt -Si openssl | grep Version && yaourt -Qi openssl | grep Version
Version : 1.1.0.e-1
Version : 1.1.0.e-1
檢查ntp
版本
# yaourt -Si ntp | grep Version && yaourt -Qi ntp | grep Version
Version : 4.2.8.p9-2 // in the offical `Extra` repo
Version : 4.2.8.p10-1 // installed on my system??
只是為了看看會發生什麼,我嘗試(重新)安裝ntp
# yaourt -Sy ntp
:: Synchronising package databases...
core is up to date
extra is up to date
archlinuxfr is up to date
community is up to date
multilib is up to date
warning: downgrading package ntp (4.2.8.p10-1 => 4.2.8.p9-2)
Packages (1) ntp-4.2.8.p9-2
Total Download Size: 1.71 MiB
Total Installed Size: 4.09 MiB
Net Upgrade Size: -0.10 MiB
:: Proceed with installation? [Y/n]
這讓我徹底慌了。它要我ntp
在我剛剛升級時降級openssl
以便使用正確的libcrypto.so
?
# cat /var/log/pacman.log | grep openssl
[2017-04-24 19:23] [ALPM] upgraded openssl (1.0.2.k-1 -> 1.1.0.e-1)
# cat /var/log/pacman.log | grep ntp
[2017-04-13 18:08] [ALPM] upgraded ntp (4.2.8.p9-1 -> 4.2.8.p10-1)
另外,在查看 Arch Linux 官方網站時,它說該ntp
軟體包的ntp 4.2.8.p9-2
當前版本已過時。
我的問題
- 我怎麼可能擁有
ntp
比官方Extra
儲存庫中所述更新的版本,而我只有一個[archlinuxfr]
不包含的其他自訂儲存庫(-for yaourt)ntp
?我檢查了。 - 為什麼
yaourt/pacman
建議我降級我的套餐? - 降級我的軟體包是否真的可以解決我的
ntp
問題,或者我是否應該在openssl
假設有正確libcrypto.so
版本的情況下降?
編輯1
我有第二個 arch linux 盒子,今天我也升級了,但沒有出現問題。這是兩者pacman.log
的比較。也可能對此有所啟發:
BoxRunningFine# cat /var/log/pacman.log | grep -e "upgraded openssl" -e "upgraded ntp"
[2017-01-04 21:26] [ALPM] upgraded ntp (4.2.8.p8-1 -> 4.2.8.p9-1)
[2017-02-28 19:05] [ALPM] upgraded openssl (1.0.2.j-1 -> 1.0.2.k-1)
[2017-04-24 18:48] [ALPM] upgraded openssl (1.0.2.k-1 -> 1.1.0.e-1)
[2017-04-24 18:49] [ALPM] upgraded ntp (4.2.8.p9-1 -> 4.2.8.p9-2)
BoxWithIssue# cat /var/log/pacman.log | grep -e "upgraded ntp" -e "upgraded openssl"
[2016-06-05 03:18] [ALPM] upgraded ntp (4.2.8.p7-1 -> 4.2.8.p8-1)
[2016-10-21 18:17] [ALPM] upgraded openssl (1.0.2.h-1 -> 1.0.2.j-1)
[2017-01-06 14:18] [ALPM] upgraded ntp (4.2.8.p8-1 -> 4.2.8.p9-1)
[2017-02-08 22:54] [ALPM] upgraded openssl (1.0.2.j-1 -> 1.0.2.k-1)
[2017-04-13 18:08] [ALPM] upgraded ntp (4.2.8.p9-1 -> 4.2.8.p10-1)
[2017-04-24 19:23] [ALPM] upgraded openssl (1.0.2.k-1 -> 1.1.0.e-1)
從表面上看,出現問題的盒子的升級時機很糟糕。我想這將是一個典型的厄運案例。那我就降級到,4.2.8.p9-2
我想應該沒問題吧?
編輯2
# yaourt -Sy ntp
warning: downgrading package ntp (4.2.8.p10-1 => 4.2.8.p9-2)
Packages (1) ntp-4.2.8.p9-2
:: Proceed with installation? [Y/n]
:: Retrieving packages...
ntp-4.2.8.p9-2-x86_64
(1/1) downgrading ntp
# systemctl start ntpd && systemctl status ntpd
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2017-04-24 21:14:41 CEST; 5s ago
# yaourt -Qi ntp
Name : ntp
Version : 4.2.8.p9-2
# systemctl status | grep -m1 State:
State: running
問題解決了。降級至ntp-4.2.8.p9-2就是解決方案。感謝您的幫助並提供相應的資源。
答案1
這看起來像這個錯誤內容如下:
4.2.8.p10-1 顯然已被 openssl 重建替換為 4.2.8.p9-2。
我假設OpenSSL 更新的重建已經上演了足夠長的時間,可以同時被取代新上游版本的更新,但當 OpenSSL 重建從暫存階段移至社群時,版本號較低的軟體包會替換為版本號較高的軟體包。
編輯:看起來像4.2.8.p10-2已上傳以糾正這種情況。