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)