Arch Linux ca-certificates-utils 更新失敗

Arch Linux ca-certificates-utils 更新失敗

近幾次在更新Arch時都看到ca-certificates-utils出現沖突(conflict)無法更新,丹尼每次選擇跳過不更新,後來再仔細的查看資訊後才清楚的要手動處理,無法透過pacman自動解決。

$ sudo pacman -S ca-certificates-utils
[sudo] password for danny:
resolving dependencies...
looking for conflicting packages...

Packages (1) ca-certificates-utils-20170307-1

Total Installed Size:  0.01 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring                     [######################] 100%
(1/1) checking package integrity                   [######################] 100%
(1/1) loading package files                        [######################] 100%
(1/1) checking for file conflicts                  [######################] 100%
error: failed to commit transaction (conflicting files)
ca-certificates-utils: /etc/ssl/certs/ca-certificates.crt exists in filesystem
Errors occurred, no packages were upgraded.

下載更新套件

下一個步驟解決沖突會影響到線上更新,所以必需先將需要更新的套件下載至本機快取中,執行以下指令:

    pacman -Syuw

執令中包含更新套件資料庫( y )、系統更新( u )、只下載更新套件不安裝( w ),執行完成後代表準備工作已經完成。

解決沖突

當丹尼執行一般更新時出現下面這問題訊息:

$ sudo pacman -S ca-certificates-utils
:
:
:
error: failed to commit transaction (conflicting files)
ca-certificates-utils: /etc/ssl/certs/ca-certificates.crt exists in filesystem
Errors occurred, no packages were upgraded.

從錯誤訊息中看到主要的沖突是ca-certificates.crt這個檔,試著將此檔案刪除,刪除前需要用root權限刪除:

sudo rm -rf /etc/ssl/certs/ca-certificates.crt

再次強調,pcman下載更新的流程是使用https會使用到ssl認證的檔案,您必需先確實完成下載更新套件中先將更新套件下載至本機端,否則刪除後再進行更新會看到下面的問題:

error: failed to update testing (download library error)
error: failed retrieving file 'core.db' from delta.archlinux.org : error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none

如果你真的不小心已經產生上圖的錯誤時,先只安裝ca-certificates-utils套件:

sudo pacman -S ca-certificates-utils

再重新照著解決沖突的方式重新做一次。

開始更新

務必解決沖突後再進行更新,先前已將更新檔下載完成,這次進行更新時會離線更新,速度會比較快一點

pacman -Su

完成後請重新啟動電腦讓系統使用新版本套件執行。

更新日誌

日期 內容
2017/06/07 初版

參考資料

關鍵字

  • ca-certificates-utils conflict 無法更新 更新失敗 沖突
  • error: failed to commit transaction (conflicting files)