Bug#1033826: podman: Cannot load gzip compressed images
Hi On Wed, Apr 12, 2023 at 6:49 PM Reinhard Tartler wrote: > > > > On Wed, Apr 12, 2023 at 6:41 AM Reinhard Tartler wrote: >> >> 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 >> > > I've prepared an MR for this at > https://salsa.debian.org/go-team/packages/golang-github-klauspost-pgzip/-/merge_requests/4 > > I'm looking for opinions whether this code change is appropriate for bookwork > at this point. > The patch looks complicated... I can't easily understand it. So beyond the code review, I look at other facts. 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? -- Shengjing Zhu
Bug#1033826: podman: Cannot load gzip compressed images
On Wed, Apr 12, 2023 at 6:41 AM Reinhard Tartler wrote: > 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 > > I've prepared an MR for this at https://salsa.debian.org/go-team/packages/golang-github-klauspost-pgzip/-/merge_requests/4 I'm looking for opinions whether this code change is appropriate for bookwork at this point. Best, -rt -- regards, Reinhard
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
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[]