5
votes

systemctl introuvable lors de la construction de l'image mongo

J'essaie de créer une image mongo 4.4 basée sur l'image officielle Dockerfile mais je rencontre un problème avec systemctl introuvable. L'image elle-même a une ligne pour la supprimer après l'installation, mais vous ne savez pas d'où elle vient. Des idées?

Setting up mongodb-org-database-tools-extra (4.4.0) ...
Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-1) ...
Setting up libkrb5support0:amd64 (1.16-2ubuntu0.1) ...
Setting up krb5-locales (1.16-2ubuntu0.1) ...
Setting up libkeyutils1:amd64 (1.5.9-9.2ubuntu2) ...
Setting up libk5crypto3:amd64 (1.16-2ubuntu0.1) ...
Setting up libkrb5-3:amd64 (1.16-2ubuntu0.1) ...
Setting up libgssapi-krb5-2:amd64 (1.16-2ubuntu0.1) ...
Setting up libcurl4:amd64 (7.58.0-2ubuntu3.10) ...
Setting up mongodb-database-tools (100.1.1) ...
Setting up mongodb-org-mongos (4.4.0) ...
Setting up mongodb-org-tools (4.4.0) ...
Setting up mongodb-org-server (4.4.0) ...
/var/lib/dpkg/info/mongodb-org-server.postinst: 43: /var/lib/dpkg/info/mongodb-org-server.postinst: systemctl: not found
dpkg: error processing package mongodb-org-server (--configure):
 installed mongodb-org-server package post-installation script subprocess returned error exit status 127
Setting up mongodb-org-shell (4.4.0) ...
dpkg: dependency problems prevent configuration of mongodb-org:
 mongodb-org depends on mongodb-org-server; however:
  Package mongodb-org-server is not configured yet.

dpkg: error processing package mongodb-org (--configure):
 dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.27-3ubuntu1.2) ...
Errors were encountered while processing:
 mongodb-org-server
 mongodb-org
[91mE: Sub-process /usr/bin/dpkg returned an error code (1)
[0mThe command '/bin/sh -c set -x   && export DEBIAN_FRONTEND=noninteractive    && apt-get update   && echo "mongodb-org hold" | dpkg --set-selections  && echo "mongodb-org-server hold" | dpkg --set-selections   && echo "mongodb-org-shell hold" | dpkg --set-selections    && echo "mongodb-org-mongos hold" | dpkg --set-selections   && echo "mongodb-org-tools hold" | dpkg --set-selections    && apt-get install -y       ${MONGO_PACKAGE}=$MONGO_VERSION         ${MONGO_PACKAGE}-server=$MONGO_VERSION      ${MONGO_PACKAGE}-shell=$MONGO_VERSION       ${MONGO_PACKAGE}-mongos=$MONGO_VERSION      ${MONGO_PACKAGE}-tools=$MONGO_VERSION   && rm -f /usr/local/bin/systemctl   && rm -rf /var/lib/apt/lists/*  && rm -rf /var/lib/mongodb  && mv /etc/mongod.conf /etc/mongod.conf.orig' returned a non-zero code: 100


2 commentaires

Pouvez-vous partager le Dockerfile que vous utilisez et les étapes minimales à reproduire? Merci!


Dockerfile en question! Pour reproduire, vous devez créer l'image.


3 Réponses :


0
votes

echo ln to / bin / systemctl résout le problème.


0 commentaires

2
votes

Pour être précis

RUN ln -s /bin/echo /bin/systemctl
RUN apt-get -qqy install  mongodb-org


0 commentaires

2
votes

La réponse FL3SH fonctionne mais pour transmettre le sens plus efficacement, vous pouvez créer un lien symbolique de /bin/systemctl vers /bin/true .

/bin/true est une commande qui renvoie toujours 0 (la valeur de vérité du shell) pour ne pas échouer. C'est un moyen standard d'indiquer que vous souhaitez renvoyer true. Voir aussi cet article SO

La commande que vous devez ajouter dans le Dockerfile est:

echo "test"
echo $?

ou

RUN ln -s /bin/true /bin/systemctl

L'effet est que vous trompez le script de post-installation en appelant /bin/true au lieu de /bin/systemctl

Vous pouvez trouver la même astuce dans la ligne 91 officielle de mongodb Dockerfile 4.4 que haytham a liée dans sa description.

/bin/echo fonctionne aussi bien que /bin/true car echo renvoie également 0. Vous pouvez l'essayer en faisant

RUN ln -s /bin/true /usr/local/bin/systemctl

Et vous verrez 0 comme résultat du deuxième echo .


0 commentaires