[pkg-go] Bug#1033826: podman: Cannot load gzip compressed images
Control: reassign -1 golang-github-klauspost-pgzip 1.2.5-2 Control: affects -1 libpod Control: forwarded -1 https://github.com/containers/podman/issues/15944 Control: severity -1 important Hi Antonio, Thanks for your report. I've looked through the source code, and while the exact error message doesn't exactly match, I did confirm that the current debian/sid podman is indeed built with golang 1.19, and uses an older version of klauspost/pgzip that doesn't have that code change from https://github.com/klauspost/pgzip/pull/50. I'd argue it is necessary for golang 1.19. In order to fix this, the code change needs to go into pgzip and libpod needs to be rebuilt. -rt On Sun, Apr 2, 2023 at 6:51 AM Antonio Cebrián wrote: > 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. > > -- regards, Reinhard ___ Pkg-go-maintainers mailing list
[pkg-go] Bug#1033826: podman: Cannot load gzip compressed images
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[] podman filtering at log level debug DEBU[] Called load.PersistentPreRunE(podman --debug image load -i hello-world.tar.gz) DEBU[] Merged system config "/usr/share/containers/containers.conf" DEBU[] Using conmon: "/usr/bin/conmon" DEBU[] Initializing boltdb state at /home/devel/.local/share/containers/storage/libpod/bolt_state.db DEBU[] Using graph driver vfs DEBU[] Using graph root /home/devel/.local/share/containers/storage DEBU[] Using run root /run/user/1000/containers DEBU[] Using static dir /home/devel/.local/share/containers/storage/libpod DEBU[] Using tmp dir /run/user/1000/libpod/tmp DEBU[] Using volume path /home/devel/.local/share/containers/storage/volumes DEBU[] Set libpod namespace to "" DEBU[] [graphdriver] trying provided driver "vfs" DEBU[] Initializing event backend journald DEBU[] Configured OCI runtime runc initialization failed: no valid executable found for OCI runtime runc: invalid argument DEBU[]