Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#1033826: podman: Cannot load gzip compressed images

1,467 views
Skip to first unread message

Reinhard Tartler

unread,
Apr 12, 2023, 6:50:05 AM4/12/23
to
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 <ance...@gmail.com> 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:



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

Reinhard Tartler

unread,
Apr 12, 2023, 7:00:05 AM4/12/23
to
On Wed, Apr 12, 2023 at 6:41 AM Reinhard Tartler <sire...@gmail.com> 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

Shengjing Zhu

unread,
Apr 13, 2023, 12:50:04 PM4/13/23
to
Hi
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
0 new messages