Manjaro系统启动和关机报错 failed to start pkgfile database update

1. 报错原因

系统中安装了oh-my-zsh,此软件依赖了pkg,系统启动时会检查更新pkg,但是启动时系统还没联网所以无法更新。
更新是以systemctl服务的形式进行更新的,服务文件位于/lib/systemd/system,可以看到有两个和pkg有关的服务 ,pkgfile-update.timer
在这里插入图片描述
先查看以下两个服务状态,可以看到pkgfile-update.timer会触发pkgfile-update.service。
在这里插入图片描述
分别打开两个文件看看

$ cat pkgfile-update.timer

[Unit]
Description=pkgfile database update timer

[Timer]
OnbootSec=30min
OnUnitActiveSec=1weeks
Persistent=no

[Install]
WantedBy=multi-user.target

$ cat pkgfile-update.service 

[Unit]
Description=pkgfile database update
RequiresMountsFor="/var/cache/pkgfile"
After=network-online.target
Wants=network-online.target


[Timer]
OnBootSec=50min
OnUnitActiveSec=1week
Persistent=no

[Service]
Type=oneshot
ExecStart=/usr/bin/pkgfile -u
Nice=19
StandardOutput=null
StandardError=journal
PrivateTmp=yes
PrivateDevices=yes
CapabilityBoundingSet=
NoNewPrivileges=yes

可以看到,实际上service中最终执行的是ExecStart后面的/usr/bin/pkgfile -u,就是这个命令在开机时因为没网,肯定失败,我们要做的是在开机成功后过一会再执行这个联网更新命令。可以参考我上面的,上面的两个文件是我改过的。

2 结论

开机报错是因为开机时没网,但是系统有个定时服务,是 一开机就联网更新pkgfile,所以失败了。

3 解决方式

  1. 手动运行命令sudo pkgfile -u,此方式治标不治本
  2. 更改pkgfile-update.service,和pkgfile-update.timer,把OnbootSec时间改长一些,不要让开机马上就执行,开机瞬间可能没网
$ cat pkgfile-update.timer

[Unit]
Description=pkgfile database update timer

[Timer]
OnbootSec=30min
OnUnitActiveSec=1weeks
Persistent=no

[Install]
WantedBy=multi-user.target

$ cat pkgfile-update.service 

[Unit]
Description=pkgfile database update
RequiresMountsFor="/var/cache/pkgfile"
After=network-online.target
Wants=network-online.target


[Timer]
OnBootSec=50min
OnUnitActiveSec=1week
Persistent=no

[Service]
Type=oneshot
ExecStart=/usr/bin/pkgfile -u
Nice=19
StandardOutput=null
StandardError=journal
PrivateTmp=yes
PrivateDevices=yes
CapabilityBoundingSet=
NoNewPrivileges=yes

5参考

[FAILED] failed to start pkgfile database update

Linux中service的配置

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值