Bug#1033826: podman: Cannot load gzip compressed images

2023-04-13 Thread Shengjing Zhu
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

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

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


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