Cant Update because of linux-firmware notice

If I try to update my system, this will show up:

$ sudo pacman -Syu
:: Synchronizing package databases...
 cachyos-znver4 is up to date
 cachyos-core-znver4 is up to date
 cachyos-extra-znver4 is up to date
 cachyos is up to date
 core is up to date
 extra is up to date
 multilib is up to date
 chaotic-aur is up to date
:: Starting full system upgrade...
Update notice: linux-firmware >= 20250613.12fe085f-5 upgrade requires manual intervention
https://archlinux.org/news/linux-firmware-2025061312fe085f-5-upgrade-requires-manual-intervention/

:: Do you want to continue? [Y/n] Y
error: could not save notice id: No such file or directory

If I install pacman from the archlinux repo, this won’t happend. Also when I disable all cachyos repos in the /etc/pacman.conf file, this error will not show up.The linux-firmware is already up to date, but even if I remove linux-firmware with

$ sudo pacman -Rnn $(pacman -Qqs linux-firmware)

the error will appear.

Some more infos:

$ pacman -Qi pacman 
Installed From  : None
Name            : pacman
Version         : 7.1.0.r7.gb9f7d4a-3
Description     : A library-based package manager with dependency support. CachyOS fork.
Architecture    : x86_64
URL             : https://www.archlinux.org/pacman/
Licenses        : GPL-2.0-or-later
Groups          : None
Provides        : libalpm.so=16-64
Depends On      : bash  coreutils  curl  libcurl.so=4-64  gawk  gettext  glibc  gnupg  gpgme  libgpgme.so=45-64  grep  libarchive  libarchive.so=13-64  openssl  libcrypto.so=3-64  pacman-mirrorlist  systemd  libmakepkg-dropins
Optional Deps   : base-devel: required to use makepkg [installed]
                  perl-locale-gettext: translation support in makepkg-template
Required By     : archlinux-keyring  base  base-devel  expac  pacman-contrib  yay
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 10.25 MiB
Packager        : CachyOS <admin@cachyos.org>
Build Date      : Sat 13 Dec 2025 04:05:55 PM CET
Install Date    : Sat 13 Dec 2025 10:49:14 PM CET
Install Reason  : Installed as a dependency for another package
Install Script  : No
Validated By    : Signature

pacman.conf:

#	
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives

#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
RootDir     = /
DBPath      = /var/lib/pacman/
CacheDir    = /var/cache/pacman/pkg/
LogFile     = /var/log/pacman.log
GPGDir      = /etc/pacman.d/gnupg/
HookDir     = /etc/pacman.d/hooks/
HoldPkg     = pacman glibc
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
DownloadUser = alpm

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
IgnorePkg   = packettracer
#IgnoreGroup =

#NoUpgrade   =
#NoExtract   =

# Misc options
#UseSyslog
Color
#NoProgressBar
CheckSpace
#VerbosePkgLists
ParallelDownloads = 10
ILoveCandy

# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.

#
# REPOSITORIES
#   - can be defined here or included from another file
#   - pacman will search repositories in the order defined here
#   - local/custom mirrors can be added here or in separate files
#   - repositories listed first will take precedence when packages
#     have identical names, regardless of version number
#   - URLs will have $repo replaced by the name of the current repo
#   - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
#       [repo-name]
#       Server = ServerName
#       Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#

# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.

[cachyos-znver4]
Include = /etc/pacman.d/cachyos-v4-mirrorlist
[cachyos-core-znver4]
Include = /etc/pacman.d/cachyos-v4-mirrorlist
[cachyos-extra-znver4]
Include = /etc/pacman.d/cachyos-v4-mirrorlist
# WARNING: Installing the CachyOS Pacman will install a forked pacman with features added from CachyOS, like “INSTALLED_FROM” and an automatic architecture check. Pacman 6.1 added a feature validation feature, which could lead when using the Arch Linux pacman into warnings. We are working with Arch Linux to provide a proper compatibility again. If you want to avoid this, don’t add the “cachyos” repository, which contains the customized pacman. All other repositories like cachyos-v3, cachyos-v4, cachyos-extra/core-v3/4 are fine to add.
[cachyos]
Include = /etc/pacman.d/cachyos-mirrorlist


#[core-testing]
#Include = /etc/pacman.d/mirrorlist

[core]
Include = /etc/pacman.d/mirrorlist

#[extra-testing]
#Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.

#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

# An example of a custom package repository.  See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

#[mesa-git]
#SigLevel = PackageOptional
#SigLevel = Never    <-- or this
#Server = https://pkgbuild.com/~lcarlier/$repo/$arch

#[chaotic-aur]
#Include = /etc/pacman.d/chaotic-mirrorlist

Since the error is about the dir not existing, what happens if you do:

sudo mkdir -p /var/lib/pacman/notices
sudo chown -R root:root /var/lib/pacman/notices
sudo chmod 755 /var/lib/pacman/notices

Then run the update again normally?

Nope, the folder exist and have the correct permission

$ ls -l /var/lib/pacman/       
total 120
drwxr-xr-x 2105 root root 110592 Dec 14 15:34 local
drwxr-xr-x    2 root root   4096 Dec 13 18:22 notices
drwxr-xr-x    2 root root   4096 Dec 14 15:34 sync

Saw also this post: Cachy update notice error messages
I had the same error as mention there, but removing the specific file helped there: /var/lib/pacman/local/CACHY_UPDATE_NOTICE

But this error still show up. The crazy part is, that I removed linux-firmware with sudo pacman -Rns $(pacman -Qqs linux-firmware) but still got the error after rebooting. Also sudo pacman -Syu –ignore linux-firmware didn’t helped.

Got a Tip from someone and tried: sudo strace -f -t -e trace=file pacman -Syu 2> pacman.log what shows that it tries to locate the file to /var/lib/pacmanlocal/
If I had to guess, it should be /var/lib/pacman/local/. I’m not sure where it get this path.
As a quick fix, I just created /var/lib/pacmanlocal/.

pacman.log:

[…]
[pid 30225] 16:04:51 newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_mode=S_IFREG|0644, st_size=359, ...}, 0) = 0
[pid 30225] 16:04:51 newfstatat(AT_FDCWD, "/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=920, ...}, 0) = 0
[pid 30225] 16:04:51 openat(AT_FDCWD, "/etc/host.conf", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/usr/lib/libnss_mymachines.so.2", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/usr/lib/libcap.so.2", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/run/systemd/machines/iso-stats.cachyos.org", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 30225] 16:04:51 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/usr/lib/libnss_resolve.so.2", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 openat(AT_FDCWD, "/etc/gai.conf", O_RDONLY|O_CLOEXEC) = 8
[pid 30225] 16:04:51 +++ exited with 0 +++
16:04:51 openat(AT_FDCWD, "/etc/ssl/certs/ca-certificates.crt", O_RDONLY) = 9
16:04:51 openat(AT_FDCWD, "/var/lib/pacmanlocal/CACHY_UPDATE_NOTICE", O_RDONLY) = -1 ENOENT (No such file or directory)
e[1;34m::e[0;1m Do you want to continue? [Y/n] e[0m16:04:55 openat(AT_FDCWD, "/var/lib/pacmanlocal/CACHY_UPDATE_NOTICE", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory)
e[1;31merror: e[0mcould not save notice id: No such file or directory
16:04:55 unlink("/var/lib/pacman/db.lck") = 0
16:04:55 +++ exited with 1 +++

Okay I’m not sure what the problem was?!
But comment this out, will save the file on the right position:

[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir     = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile     = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
#HookDir     = /etc/pacman.d/hooks/
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
DownloadUser = alpm

Now the file was placed in /var/lib/pacman/local/.

I can not recreate the bug, so I’m cluless what it was. \_(°°)_/