-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[master] deb,rpm: include dockerd man-page in docker-ce package #1159
Conversation
Hm... something broke with the deb packages; need to check what exactly;
|
Looks like at least the verify script needs some updating;
|
Ah! Because (currently) both still have the same man-page;
That should go away once the CLI changes are merged, but perhaps the package needs some extra information to indicate it "replaces" docker-cli; |
The CLI currently builds man-pages for sections 1, 5, and 8, but this list may change; for example, the dockerd man-page is currently built from the CLI repository but intended to be removed. This patch changes the code to check all (1..9) secions, and install the man-pages found in them. This patch also updates the %doc and %files section; from the Fedora packaging guide (see [1]); > The %files section holds a list of all the files that RPM should install > from the package. **This list should be exhaustive**, so that the RPM system > knows exactly what your package installs. There are some options, though, > to name all the files within a directory to help with packages containing > hundreds of files. > (...) > In addition to naming each file on a line, you can use glob-style wildcards. But also worth noting that it's NOT needed to mark manpages as %doc, see [2]; > Note also that files installed in %{_mandir} are automatically marked by RPM > as documentation. Thus it is not necessary to use %doc. So this patch: - uses wildcards to enumerate all manpages in all sections - removes the %doc for manpages, as this is automatic. [1]: https://jfearn.fedorapeople.org/en-US/RPM/4/html/RPM_Guide/ch09s05.html [2]: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_manpages Signed-off-by: Sebastiaan van Stijn <[email protected]>
67e353b
to
e9aaf34
Compare
Cool; this works now, after adding the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks alright to me although my understanding of debian packaging scripts are really limited 😅
deb/common/control
Outdated
@@ -40,7 +40,8 @@ Suggests: cgroupfs-mount | cgroup-lite | |||
Conflicts: docker (<< 1.5~), | |||
docker-engine, | |||
docker.io | |||
Replaces: docker-engine | |||
Replaces: docker-engine, | |||
docker-ce-cli (<= 5:27) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sorry I'm a bit noob with this, but why do we need to specify the epoch
number here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good question; MAYBE we no longer need to? We never should've had those epochs in the first place (ISTR they had to be added first because of CalVer versioning (where, e.g. 18.03
was not sorted correctly because of the leading 0
) and when marketing kinda forced to use non-standard suffixes -ce
/ -ee
), and -tp1
for technical previews, which sorts after -ce
/ -ee
, so unstable releases took priority over stable releases (joy!)).
Let me try what it says
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sigh.. so it doesn't work;
# "nightly" <= 27
dpkg --compare-versions "5:0.0.0~20250124134141.b8879a4-1~debian.12~bookworm" le "5:27" && echo "OK"
OK
# 27.5.1 <= 27
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" le "5:27" && echo "OK" || echo "KO"
KO
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" le "27" && echo "OK" || echo "KO"
KO
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" le "27.5.1" && echo "OK" || echo "KO"
KO
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" le "27.5.2" && echo "OK" || echo "KO"
KO
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" le "5:27.5.1" && echo "OK" || echo "KO"
KO
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" le "5:27.5.2" && echo "OK" || echo "KO"
OK
So perhaps we need to use 28 and <<
to work around that, but even with that, it looks like we need the epoch;
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" lt "28" && echo "OK" || echo "KO"
KO
dpkg --compare-versions "5:27.5.1-1~debian.12~bookworm" lt "5:28" && echo "OK" || echo "KO"
OK
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah i see 🙈
e9aaf34
to
669215a
Compare
Updated to |
Maybe |
When splitting the docker CLI from the moby/moby repository, the dockerd documentation and man-pages were moved to the CLI repository. This was a bit of a bad choice, as now the documentation and code lived in separate repositories, but when the CLI and dockerd packages were split, the man page for dockerd ended up in the CLI package. Starting with [moby@d6e9b5f], the dockerd man-page has been reintegrated into the moby repository, which means that we can build the man-page from that repository, and remove it from the CLI repository. This patch updates the packing to do so: Before this patch; dpkg-deb -c docker-ce_0.0.0~20250124134141.b8879a4-1~ubuntu.24.04~noble_arm64.deb | grep -E '^-' -rw-r--r-- root/root 642 2025-01-24 14:29 ./etc/default/docker -rwxr-xr-x root/root 2946 2025-01-24 14:29 ./etc/init.d/docker -rwxr-xr-x root/root 2741336 2025-01-24 19:54 ./usr/bin/docker-proxy -rw-r--r-- root/root 1727 2025-01-24 14:29 ./usr/lib/systemd/system/docker.service -rw-r--r-- root/root 295 2025-01-24 14:29 ./usr/lib/systemd/system/docker.socket -rwxr-xr-x root/root 604336 2025-01-24 19:54 ./usr/libexec/docker/docker-init -rw-r--r-- root/root 2248 2025-01-24 14:29 ./usr/share/doc/docker-ce/README.md -rw-r--r-- root/root 168 2025-01-24 19:54 ./usr/share/doc/docker-ce/changelog.Debian.gz rpm -qpl ./docker-ce-0.0.0~20250124134141.b8879a4-0.fc41.aarch64.rpm /etc/docker /usr/bin/docker-proxy /usr/bin/dockerd /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.socket /usr/libexec/docker/docker-init With this patch: dpkg-deb -c docker-ce_0.0.0~20250124134141.b8879a4-1~ubuntu.24.04~noble_arm64.deb | grep -E '^-' -rw-r--r-- root/root 642 2025-01-24 14:29 ./etc/default/docker -rwxr-xr-x root/root 2946 2025-01-24 14:29 ./etc/init.d/docker -rwxr-xr-x root/root 2741336 2025-01-24 20:55 ./usr/bin/docker-proxy -rwxr-xr-x root/root 79458592 2025-01-24 20:55 ./usr/bin/dockerd -rw-r--r-- root/root 1727 2025-01-24 14:29 ./usr/lib/systemd/system/docker.service -rw-r--r-- root/root 295 2025-01-24 14:29 ./usr/lib/systemd/system/docker.socket -rwxr-xr-x root/root 604336 2025-01-24 20:55 ./usr/libexec/docker/docker-init -rw-r--r-- root/root 2248 2025-01-24 14:29 ./usr/share/doc/docker-ce/README.md -rw-r--r-- root/root 166 2025-01-24 20:55 ./usr/share/doc/docker-ce/changelog.Debian.gz -rw-r--r-- root/root 6561 2025-01-24 20:55 ./usr/share/man/man8/dockerd.8.gz rpm -qpl ./docker-ce-0.0.0~20250124134141.b8879a4-0.fc41.aarch64.rpm /etc/docker /usr/bin/docker-proxy /usr/bin/dockerd /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.socket /usr/libexec/docker/docker-init /usr/share/man/man8/dockerd.8.gz Given that the dockerd man-page was previously packaged as part of docker-ce-cli, we need to add a "Replaces:" condition to the package, to prevent dpkg from detecting it as a conflict when an older version of the docker-ce-cli package was installed that contains the manpage; Unpacking docker-ce (5:0.0.0~20250124134141.b8879a4-1~raspbian.12~bookworm) ... dpkg: error processing archive ./deb/debbuild/raspbian-bookworm/docker-ce_0.0.0~20250124134141.b8879a4-1~raspbian.12~bookworm_armhf.deb (--install): trying to overwrite '/usr/share/man/man8/dockerd.8.gz', which is also in package docker-ce-cli 5:0.0.0~20250124134141.b8879a4-1~raspbian.12~bookworm From the [Debian manual][1] > 7.6.1. Overwriting files in other packages > > It is usually an error for a package to contain files which are on the > system in another package. However, if the overwriting package declares > that it Replaces the one containing the file being overwritten, then dpkg > will replace the file from the old package with that from the new. The > file will no longer be listed as “owned” by the old package and will be > taken over by the new package. [1]: https://www.debian.org/doc/debian-policy/ch-relationships.html [moby@d6e9b5f]: moby/moby@d6e9b5f Signed-off-by: Sebastiaan van Stijn <[email protected]>
669215a
to
3ded61e
Compare
Double checked if a "rc" of v28.0.0 would also be picked up; it does, but that's probably OK; even if it doesn't contain the dockerd manpage, it would consider dpkg --compare-versions "5:28.0.0~rc.1-1~debian.12~bookworm" lt "5:28.0.0" && echo "OK" || echo "KO"
OK Let me bring this one in; we can always touch-up if there's still an issue (hope not!) |
rpm: adjust spec to account for varying list of man-page sections
The CLI currently builds man-pages for sections 1, 5, and 8, but this
list may change; for example, the dockerd man-page is currently built
from the CLI repository but intended to be removed.
This patch changes the code to check all (1..9) secions, and install the
man-pages found in them.
This patch also updates the %doc and %files section; from the Fedora packaging
guide (see 1);
But also worth noting that it's NOT needed to mark manpages as %doc, see 2;
So this patch:
deb,rpm: include dockerd man-page in docker-ce package
When splitting the docker CLI from the moby/moby repository, the dockerd
documentation and man-pages were moved to the CLI repository. This was a
bit of a bad choice, as now the documentation and code lived in separate
repositories, but when the CLI and dockerd packages were split, the man
page for dockerd ended up in the CLI package.
Starting with moby@d6e9b5f, the dockerd man-page has been reintegrated
into the moby repository, which means that we can build the man-page
from that repository, and remove it from the CLI repository.
This patch updates the packing to do so:
Before this patch;
With this patch:
Given that the dockerd man-page was previously packaged as part of docker-ce-cli,
we need to add a "Replaces:" condition to the package, to prevent dpkg from
detecting it as a conflict when an older version of the docker-ce-cli package
was installed that contains the manpage;
From the Debian manual
- Description for the changelog
- A picture of a cute animal (not mandatory but encouraged)