Error installing msys2-runtime .zst package

I followed the instructions for using MSYS2/MinGW-w64 with Travis, which originally worked fine. However, after deleting the caches yesterday I am now getting the following error when it’s trying to install msys:

downloading msys2-runtime-3.1.4-1-x86_64.pkg.tar.zst...
downloading bash-4.4.023-2-x86_64.pkg.tar.xz...
downloading filesystem-2020.02-2-x86_64.pkg.tar.xz...
downloading mintty-1~3.1.4-1-x86_64.pkg.tar.xz...
downloading pacman-mirrors-20200329-1-any.pkg.tar.xz...
downloading libzstd-1.4.4-2-x86_64.pkg.tar.xz...
downloading zstd-1.4.4-2-x86_64.pkg.tar.xz...
downloading pacman-5.2.1-6-x86_64.pkg.tar.xz...
checking keyring...
checking package integrity...
warning: terminate other MSYS2 programs before proceeding
loading package files...
Errors occurred, no packages were upgraded.
error: could not open file /var/cache/pacman/pkg/msys2-runtime-3.1.4-1-x86_64.pkg.tar.zst: Child process exited with status 127
error: failed to commit transaction (cannot open package file)

From the MSYS2 packages list I can see that msys2-runtime-3.1.4 was just released yesterday, and is the first release using the zst format.

zst support was added in pacman 5.2 in October 2019 and requires an update to librarchive. However the MSYS2 package from Chocolatey is from May 2019, so I am assuming it’s not updated to support zst yet.

I’d appreciate any ideas on how to resolve this.

Hey @tripef,

Have you tried updating Pacman via

pacman -Sy pacman
pacman -Su

Thanks for the suggestion. Unfortunately I don’t think this will work, as the error happens as part of the initial MSYS2 installation via choco upgrade --no-progress -y msys2.

The only solution I see right now is not to use Chocolatey to install msys2, but instead another more recent build e.g. from msys2-installer.

By the way, I’m pretty sure this issue is reproducible for any newly set up Windows CI using the official Travis instructions, or for any existing ones if you delete the cache.

Here’s the full build log (you’ll have to expand the line $ case $TRAVIS_OS_NAME in to see the error):
https://travis-ci.org/github/gnustep/libs-base/jobs/688709566#L49

I verified that this can be reproduced by just running choco install msys2, and I reported it here:

1 Like

This has been resolved in the MSYS2 package distribution.

1 Like

Instead of using a new installer, you could compile the zstd binary from ‘git clone GitHub - facebook/zstd: Zstandard - Fast real-time compression algorithm’ → cd zstd; make, then convert the .zst files in /var/cache/pacman/pkg (notably the pacman, libzstd and zstd packages) to .gz (or .bz2 or .xz) using:
for f in /var/cache/pacman/pkg/*.zst; do programs/zstd -dc $f | gzip > ${f%.zst}.gz; done
and updating the pacman, zstd and libzstd packages using:
pacman -U /var/cache/pacman/pkg/{pacman,zstd,libzstd}*.gz
After that, pacman can use zst compressed packages.