[pkg-go] Bug#1033826: podman: Cannot load gzip compressed images

2023-04-12 Thread Reinhard Tartler
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

2023-04-02 Thread Antonio Cebrián

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[]