[pkg-go] Bug#1020540: podman-remote should be built and offered as seperate package

Norbert Lange nolange79 at gmail.com
Thu Sep 22 23:57:35 BST 2022


Package: podman
Version: 4.2.1-0.1
Severity: minor
Tags: patch
X-Debbugs-Cc: nolange79 at gmail.com

Hello,

I am aware of #1000521, I dont see it as resolved.

The problem is that you can run podman as service, and clients
can connect on for ex. an exposed unix socket.

Practical example is:

-   run rootless podman providing an unix socker
-   run an container jenkins/inbound-agent container
    binding that socket
-   provide a binary that takes the same arguments as docker
    while using the socket

Now the issue is, that you have to install podman and its many
dependencies in the jenkins/inbound-agent container.

Way better would be to use one of the simple remote-only clients,
this is a single file without any dependencies
(run ldd on both).

docker provides the docker-ce-cli package, podman the podman-remote
binary.

Debian should offer the package as independent package,
so client/server can be updated together.
Then containers can get a bind-mount to the host's
/usr/bin/podman-remote binary.


-- System Information:
Debian Release: bookworm/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.16.0-6-amd64 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages podman depends on:
ii  conmon                           2.1.3+ds1-1
ii  crun                             1.5+dfsg-1+b1
ii  golang-github-containers-common  0.49.1+ds1-1
ii  libc6                            2.34-7
ii  libdevmapper1.02.1               2:1.02.185-1
ii  libgpgme11                       1.17.1-4.1
ii  libseccomp2                      2.5.4-1+b1

Versions of packages podman recommends:
pn  buildah                       <none>
pn  catatonit | tini | dumb-init  <none>
ii  dbus-user-session             1.14.0-2
pn  fuse-overlayfs                <none>
ii  slirp4netns                   1.2.0-1
ii  uidmap                        1:4.11.1+dfsg1-2

Versions of packages podman suggests:
ii  containers-storage  1.42.0+ds1-1
pn  docker-compose      <none>
ii  iptables            1.8.8-1

-- no debconf information
-------------- next part --------------
diff -burN a/debian/control b/debian/control
--- a/debian/control	2022-08-19 09:43:54.000000000 +0200
+++ b/debian/control	2022-08-19 09:43:54.000000000 +0200
@@ -131,6 +131,32 @@
  .
  Podman is a daemon-less alternative to Docker.
 
+Package: podman-remote
+Architecture: any
+Built-Using: ${misc:Built-Using}
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: engine to run OCI-based containers in Pods
+ Podman is an engine for running OCI-based containers in Pods.
+ Podman provides a CLI interface for managing Pods, Containers, and
+ Container Images.
+ .
+ At a high level, the scope of libpod and podman is the following:
+  * Support multiple image formats including the OCI and Docker image
+    formats.
+  * Support for multiple means to download images including trust & image
+    verification.
+  * Container image management (managing image layers, overlay filesystems,
+    etc).
+  * Full management of container lifecycle.
+  * Support for pods to manage groups of containers together.
+  * Resource isolation of containers and pods.
+  * Support for a Docker-compatible CLI interface through Podman.
+ .
+ Podman is a daemon-less alternative to Docker.
+ .
+ This package installs a smaller executable being only a
+ frontend to control a remote podman instance.
+
 Package: golang-github-containers-libpod-dev
 Architecture: all
 Depends: ${misc:Depends},
diff -burN a/debian/podman.install b/debian/podman.install
--- a/debian/podman.install	2022-08-19 09:43:54.000000000 +0200
+++ b/debian/podman.install	2022-08-19 09:43:54.000000000 +0200
@@ -1,5 +1,4 @@
 completions/zsh/_podman             /usr/share/zsh/vendor-completions
-completions/zsh/_podman-remote      /usr/share/zsh/vendor-completions
 cni/87-podman-bridge.conflist		/etc/cni/net.d/
 
 debian/etc/containers/libpod.conf	/etc/containers/
diff -burN a/debian/podman-remote.install b/debian/podman-remote.install
--- a/debian/podman-remote.install	1970-01-01 01:00:00.000000000 +0100
+++ b/debian/podman-remote.install	2022-08-19 09:43:54.000000000 +0200
@@ -0,0 +1,3 @@
+completions/zsh/_podman-remote      /usr/share/zsh/vendor-completions
+
+usr/bin/podman-remote
diff -burN a/debian/podman-remote.manpages b/debian/podman-remote.manpages
--- a/debian/podman-remote.manpages	1970-01-01 01:00:00.000000000 +0100
+++ b/debian/podman-remote.manpages	2022-08-19 09:43:54.000000000 +0200
@@ -0,0 +1 @@
+docs/build/man/podman-remote*.1
diff -burN a/debian/rules b/debian/rules
--- a/debian/rules	2022-08-19 09:43:54.000000000 +0200
+++ b/debian/rules	2022-09-23 00:38:15.821251178 +0200
@@ -36,6 +36,7 @@
 
 ## https://podman.io/getting-started/installation#build-tags
 BUILDTAGS := apparmor,ostree,seccomp,selinux,systemd
+BUILDTAGS_REMOTE := remote,exclude_graphdriver_btrfs,btrfs_noversion,exclude_graphdriver_devicemapper,containers_image_openpgp
 # containers_image_openpgp
 
 %:
@@ -45,6 +46,11 @@
 	$(MAKE) docs docker-docs
 
 #	LDFLAGS_PODMAN="-X main.gitCommit=$(GIT_COMMIT)"
+#   upstream Makefile calls `go build ... -o bin/podman-remote ./cmd/podman`
+#   dont know how I get dh_auto_build to do that.
+	dh_auto_build -v  --builddirectory=_output -- -tags "$(BUILDTAGS_REMOTE)" \
+          -ldflags "-X main.buildInfo=$(DEB_VERSION)"
+	mv _output/bin/podman _output/bin/podman-remote
 	dh_auto_build -v  --builddirectory=_output -- -tags "$(BUILDTAGS)" \
           -ldflags "-X main.buildInfo=$(DEB_VERSION)"
 
@@ -77,8 +83,6 @@
 
 # Disable dh_missing
 override_dh_missing:
-	# remove unwanted files, cf. #1000521
-	find debian -name '*podman-remote*' -ls -delete
 	dh_missing --list-missing -X goecho -X testvol -X version
 
 override_dh_installsystemd:


More information about the Pkg-go-maintainers mailing list