Your message dated Mon, 1 Jan 2024 17:23:24 +0200
with message-id <[email protected]>
and subject line Re: Bug#1033826: podman: Cannot load gzip compressed images
has caused the Debian Bug report #1033826,
regarding podman: Cannot load gzip compressed images
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1033826: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033826
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: podman
Version: 4.3.1
Podman cannot load images compressed with gzip. Uncompressed images or
bzip2 compressed images work right therefore it seems to be a problem
related to gzip handling.
It seems to be the same problem reported here:
https://github.com/containers/podman/issues/15944
Tested under Bookworm with podman 4.3.1:
*$ podman image pull hello-world:latest*
Resolved "hello-world" as an alias
(/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
*$ podman image save hello-world:latest > hello-world.tar*
*$ podman image save hello-world:latest | gzip > hello-world.tar.gz*
*$ podman image save hello-world:latest | bzip2 > hello-world.tar.bz2*
*$ podman image load -i hello-world.tar*
Getting image source signatures
Copying blob e07ee1baac5f skipped: already exists
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image: docker.io/library/hello-world:latest
*$ podman image load -i hello-world.tar.gz*
Error: payload does not match any of the supported image formats:
* oci: initializing source oci:hello-world.tar.gz:: open
hello-world.tar.gz/index.json: not a directory
* oci-archive: loading index: open /var/tmp/oci3062655986/index.json:
no such file or directory
* docker-archive: loading tar component manifest.json: unexpected EOF
* dir: open hello-world.tar.gz/manifest.json: not a directory
*$ podman image load -i hello-world.tar.bz2*
Getting image source signatures
Copying blob e07ee1baac5f skipped: already exists
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image: docker.io/library/hello-world:latest
Attached you have the debug output of the failing command:
*$ podman --debug image load -i hello-world.tar.gz*
In Bullseye with podman 3.0.1 all works as expected:
*$ podman image pull hello-world:latest*
Resolved "hello-world" as an alias
(/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
*$ podman image save hello-world:latest > hello-world.tar*
Copying blob e07ee1baac5f done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
*$ podman image save hello-world:latest | gzip > hello-world.tar.gz*
Copying blob e07ee1baac5f done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
*$ podman image save hello-world:latest | bzip2 > hello-world.tar.bz2*
Copying blob e07ee1baac5f done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
*$ podman image load -i hello-world.tar*
Getting image source signatures
Copying blob e07ee1baac5f [--------------------------------------] 0.0b
/ 0.0b
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/hello-world:latest
*$ podman image load -i hello-world.tar.gz*
Getting image source signatures
Copying blob e07ee1baac5f skipped: already exists
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/hello-world:latest
*$ podman image load -i hello-world.tar.bz2*
Getting image source signatures
Copying blob e07ee1baac5f [--------------------------------------] 0.0b
/ 0.0b
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/hello-world:latest
Best regards.
$ podman --debug image load -i hello-world.tar.gz
INFO[0000] podman filtering at log level debug
DEBU[0000] Called load.PersistentPreRunE(podman --debug image load -i
hello-world.tar.gz)
DEBU[0000] Merged system config "/usr/share/containers/containers.conf"
DEBU[0000] Using conmon: "/usr/bin/conmon"
DEBU[0000] Initializing boltdb state at
/home/devel/.local/share/containers/storage/libpod/bolt_state.db
DEBU[0000] Using graph driver vfs
DEBU[0000] Using graph root /home/devel/.local/share/containers/storage
DEBU[0000] Using run root /run/user/1000/containers
DEBU[0000] Using static dir /home/devel/.local/share/containers/storage/libpod
DEBU[0000] Using tmp dir /run/user/1000/libpod/tmp
DEBU[0000] Using volume path /home/devel/.local/share/containers/storage/volumes
DEBU[0000] Set libpod namespace to ""
DEBU[0000] [graphdriver] trying provided driver "vfs"
DEBU[0000] Initializing event backend journald
DEBU[0000] Configured OCI runtime runc initialization failed: no valid
executable found for OCI runtime runc: invalid argument
DEBU[0000] Configured OCI runtime runj initialization failed: no valid
executable found for OCI runtime runj: invalid argument
DEBU[0000] Configured OCI runtime kata initialization failed: no valid
executable found for OCI runtime kata: invalid argument
DEBU[0000] Configured OCI runtime runsc initialization failed: no valid
executable found for OCI runtime runsc: invalid argument
DEBU[0000] Configured OCI runtime krun initialization failed: no valid
executable found for OCI runtime krun: invalid argument
DEBU[0000] Using OCI runtime "/usr/bin/crun"
INFO[0000] Setting parallel job count to 25
DEBU[0000] Loading image from "hello-world.tar.gz"
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as an OCI directory
DEBU[0000] Normalized platform linux/amd64 to {amd64 linux [] }
DEBU[0000] parsed reference into
"[vfs@/home/devel/.local/share/containers/storage+/run/user/1000/containers]localhost/hello-world.tar.gz:latest"
DEBU[0000] Copying source image hello-world.tar.gz: to destination image
[vfs@/home/devel/.local/share/containers/storage+/run/user/1000/containers]localhost/hello-world.tar.gz:latest
DEBU[0000] Error loading hello-world.tar.gz (oci): initializing source
oci:hello-world.tar.gz:: open hello-world.tar.gz/index.json: not a directory
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as an OCI archive
DEBU[0000] Normalized platform linux/amd64 to {amd64 linux [] }
DEBU[0000] Error deleting temporary directory: <nil>
DEBU[0000] Error loading hello-world.tar.gz (oci-archive): loading index: open
/var/tmp/oci1734198058/index.json: no such file or directory
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as a Docker archive
DEBU[0000] Detected compression format gzip
DEBU[0000] No compression detected
DEBU[0000] Error loading hello-world.tar.gz (docker-archive): loading tar
component manifest.json: unexpected EOF
DEBU[0000] -> Attempting to load "hello-world.tar.gz" as a Docker dir
DEBU[0000] Normalized platform linux/amd64 to {amd64 linux [] }
DEBU[0000] Error loading hello-world.tar.gz (dir): open
hello-world.tar.gz/manifest.json: not a directory
Error: payload does not match any of the supported image formats:
* oci: initializing source oci:hello-world.tar.gz:: open
hello-world.tar.gz/index.json: not a directory
* oci-archive: loading index: open /var/tmp/oci1734198058/index.json: no such
file or directory
* docker-archive: loading tar component manifest.json: unexpected EOF
* dir: open hello-world.tar.gz/manifest.json: not a directory
--- End Message ---
--- Begin Message ---
Version: 1.2.6-1
On Fri, Apr 14, 2023 at 12:40:11AM +0800, Shengjing Zhu wrote:
> The patch is on upstream master branch and not tagged. So all
> consumers expect pdoman haven't used that. It makes me worry.
>
> Maybe we could ask upstream if they can tag a new version, to indicate
> they are confident about the change?
My understanding is:
* This was reported as https://github.com/containers/podman/issues/15944
* This is an underlying issue with klauspost/pgzip, with a fix in the PR:
https://github.com/klauspost/pgzip/pull/50
* The PR was merged, as commit 17e8dac29df8ce00febbd08ee5d8ee922024a003:
"Consume z.current prepared by Reader.Read in Reader.WriteTo (#50)"'
and subsequently tagged as v1.2.6:
$ git log --oneline -n 1 17e8dac29df8ce00febbd08ee5d8ee922024a003
17e8dac (HEAD -> master, tag: v1.2.6, origin/master, origin/HEAD) Consume
z.current prepared by Reader.Read in Reader.WriteTo (#50)
* The aforementioned upstream podman issue has been resolved, due to
them vendoring a version of pgzip that fixes this issue. In Debian we
use the system copy from src:golang-github-klauspost-pgzip.
* Debian has src:golang-github-klauspost-pgzip 1.2.6-1, which, as
mentioned above, contains a fix for this bug.
* podman 4.7.2+ds1-2 has been built against golang-github-klauspost-pgzip-dev
1.2.6-1 in (at least) amd64, as evident from Built-Using.
So, therefore I believe this bug has been fixed.
For good measure, I ran the reproduction steps as outlined in the first
message of this bug report, and cannot reproduce this behavior.
Resolving this bug, and I'll close Reinhard's MR #4 as well.
Thanks,
Faidon
--- End Message ---