KeyDB
KeyDB copied to clipboard
Installing keydb into an Ubuntu Docker image fails because the postinstall script assumes systemd
Describe the bug
Installing keydb into an Ubuntu-based Docker image fails because the postinstall script assumes systemd
To reproduce
docker run -it ubuntu bash
Then follow the directions on https://docs.keydb.dev/docs/ppa-deb/, which in a minimal Ubuntu Docker image would be
RUN \
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release \
&& echo "deb https://download.keydb.dev/open-source-dist `lsb_release -sc` main" > /etc/apt/sources.list.d/keydb.list \
&& curl -sSL https://download.keydb.dev/open-source-dist/keyring.gpg > /etc/apt/trusted.gpg.d/keydb.gpg\
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y keydb
This fails with:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
keydb-server keydb-tools libsnappy1v5
The following NEW packages will be installed:
keydb keydb-server keydb-tools libsnappy1v5
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.7 MB of archives.
After this operation, 39.5 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsnappy1v5 amd64 1.1.8-1build3 [17.5 kB]
Get:2 https://download.keydb.dev/open-source-dist jammy/main amd64 keydb-tools amd64 6:6.3.4-1~jammy1 [12.6 MB]
Get:3 https://download.keydb.dev/open-source-dist jammy/main amd64 keydb-server amd64 6:6.3.4-1~jammy1 [61.2 kB]
Get:4 https://download.keydb.dev/open-source-dist jammy/main amd64 keydb all 6:6.3.4-1~jammy1 [20.9 kB]
Fetched 12.7 MB in 0s (31.0 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libsnappy1v5:amd64.
(Reading database ... 18749 files and directories currently installed.)
Preparing to unpack .../libsnappy1v5_1.1.8-1build3_amd64.deb ...
Unpacking libsnappy1v5:amd64 (1.1.8-1build3) ...
Selecting previously unselected package keydb-tools.
Preparing to unpack .../keydb-tools_6%3a6.3.4-1~jammy1_amd64.deb ...
Unpacking keydb-tools (6:6.3.4-1~jammy1) ...
Selecting previously unselected package keydb-server.
Preparing to unpack .../keydb-server_6%3a6.3.4-1~jammy1_amd64.deb ...
Unpacking keydb-server (6:6.3.4-1~jammy1) ...
Selecting previously unselected package keydb.
Preparing to unpack .../keydb_6%3a6.3.4-1~jammy1_all.deb ...
Unpacking keydb (6:6.3.4-1~jammy1) ...
Setting up libsnappy1v5:amd64 (1.1.8-1build3) ...
Setting up keydb-tools (6:6.3.4-1~jammy1) ...
Setting up keydb-server (6:6.3.4-1~jammy1) ...
Created symlink /etc/systemd/system/keydb.service → /lib/systemd/system/keydb-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/keydb-server.service → /lib/systemd/system/keydb-server.service.
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
dpkg: error processing package keydb-server (--configure):
installed keydb-server package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of keydb:
keydb depends on keydb-server (<< 6:6.3.4-1~jammy1.1~); however:
Package keydb-server is not configured yet.
keydb depends on keydb-server (>= 6:6.3.4-1~jammy1); however:
Package keydb-server is not configured yet.
dpkg: error processing package keydb (--configure):
dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.35-0ubuntu3.7) ...
Errors were encountered while processing:
keydb-server
keydb
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@c212470bae66:/#
Expected behavior
It works, but does not attempt to configure any systemd integration when the system isn't using systemd.
Additional information
In my Dockerfile I'm using the following workaround, which involves downloading the keydb-server debian package, then modifying it to blank the postinst script, recreating the package, and installing that. It seems to work well:
RUN \
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release \
&& echo "deb https://download.keydb.dev/open-source-dist `lsb_release -sc` main" > /etc/apt/sources.list.d/keydb.list \
&& curl -sSL https://download.keydb.dev/open-source-dist/keyring.gpg > /etc/apt/trusted.gpg.d/keydb.gpg \
&& apt-get update \
&& mkdir /tmp/keydb \
&& cd /tmp/keydb \
&& apt-get download keydb-server keydb-tools keydb libsnappy1v5 \
&& dpkg-deb -R keydb-server_*.deb keydb-server \
&& echo "" > keydb-server/DEBIAN/postinst \
&& dpkg-deb -b keydb-server keydb-server_*.deb \
&& DEBIAN_FRONTEND=noninteractive dpkg -i *.deb \
&& rm -rf /tmp/keydb