Wie installiere man arch Linux-Pakete mit yaourt, wenn mit Dockerfile von Dockerfile aufgerufen wird?

851
Sven M.

Ich versuche, meinen eigenen Jira-Container mit dem offiziellen Image von pritunl / archlinux zu erstellen . Ich habe yaourt bereits installiert und dies auf rusk85 / archbase festgelegt. Meine Dockerfile sieht so aus:

1: FROM rusk85/archbase 2: CMD /bin/bash 3: RUN yaourt -Sy --noconfirm atlassian-jira 

Dies führt zu einem Fehler:

Running makepkg as root is not allowed as it can cause permanent, catastrophic damage to your system. 

Dann versuchte ich nach Zeile 2 einzufügen:

RUN useradd -ms /bin/bash jira USER jira 

Das fragt mich nach einem Passwort. Eine andere Variante war, diese anstelle von USER jira zu verwenden:

RUN su jira 

Dies gibt auch den ersten Fehler zurück. Ich erstellte dann einen Benutzer jira, installierte sudo, ermöglichte es allen Benutzern von Group Wheel, einen beliebigen Befehl ohne Passwort auszuführen, und fügte Jira zu Group Wheel hinzu sowie das Passwort jira dem Benutzer jira zuzuweisen. Ich habe diese Änderungen an meinem Image vorgenommen und es erneut versucht mit:

FROM rusk85/archbase CMD /bin/bash USER jira # fixed: was docker before RUN yaourt -Sy --noconfirm atlassian-jira 

Das fragt erneut nach dem ersten Sudo-Passwort. Ich habe dieses Problem in allen Varianten gesucht, die den Männern bekannt sind, und auch mehrere Dockerfiles betrachtet, aber meine Suchanfragen kamen ohne brauchbare Ergebnisse zurück und alle Dockerfiles, die ich mir angesehen hatte, ließen mich völlig verwirrt. Ich würde mich über ein wirklich einfaches Beispiel freuen. Ich entschuldige mich, wenn es sich um ein wirklich triviales Problem handelt, aber ich habe gerade mit Docker angefangen und das Wissen, das ich bisher von arch habe, scheint das nicht ganz zu beeinträchtigen.

3
Das sieht aus wie ein sehr altes Bild. Haben Sie alle Pakete aktualisiert? Haben Sie die Paketgruppe `base-devel` installiert? quixotic vor 7 Jahren 0
@quixotic: Entschuldigung, ich habe das falsche Repo angegeben. Ich verwende eigentlich das offizielle (?) Arch Linux-Image, das "pritunl / archlinux" ist. Das wurde in meinem Beitrag behoben. Ja, ich hatte sogar "yaourt" eingerichtet, was von "base / devel" abhängt (teilweise afaik). Was hat 'base / devel' mit meinem Dilemma zu tun, dass ich keine Pakete aus einer `Dockerfile` installieren kann, die root auf die eine oder andere Art und Weise benötigt? Dateisystemversion. Erstellen Sie mit dem, was funktioniert, meinen eigenen Nginx-Reverse-Proxy. Siehe https://goo.gl/qCu7py und https://goo.gl/xoM5vJ. Ich brauche immer noch eine Antwort. Sven M. vor 7 Jahren 0
Ich benutze dich nicht, also rate ich. Ich denke, "yaourt" wird Ihnen jedes Mal ein neues Paket erstellen, wenn Sie diesen Container starten. Möglicherweise müssen Sie zunächst pacman -S-base-devel (oder ähnliches) ausführen, wenn Ihr Bild diese Pakete nicht bereits enthält. Der Fehler "makepkg", den Sie sehen, kann ein Hinweis darauf sein, dass Sie "fakeroot" benötigen, der in den Basis-Entwicklungspaketen enthalten ist. "yaourt" selbst scheint nicht von der Installation von Basisentwicklungspaketen abhängig zu sein. Wenn Sie also nur die entsprechenden Pakete haben, bedeutet das nicht, dass Sie die anderen haben. quixotic vor 7 Jahren 0
Nun, Sie haben recht. Ich hatte nur Teile des Entwicklers installiert und Fakeroot fehlt tatsächlich. Ich habe es noch nicht mit fakeroot ausprobiert, aber ich verstehe, dass einer seiner Anwendungsfälle das Erstellen von Paketen ohne erhöhte / root-Berechtigungen darstellt. Ist das korrekt? Sven M. vor 7 Jahren 0

1 Antwort auf die Frage

0
funilrys

Bevor irgendetwas, von DO NOT USE YAOURT .

Dann lassen Sie mich die offizielle Arch makepkg- Wiki-Seite zitieren :

Das Laufen makepkgals root ist nicht erlaubt . Neben dem, wie ein PKGBUILDbeliebiger Befehl enthalten kann, wird das Erstellen als root im Allgemeinen als unsicher angesehen. Benutzer, die keinen Zugriff auf ein reguläres Benutzerkonto haben, sollten makepkgals Benutzer "nobody" ausgeführt werden .

Zurück zu Ihrem Problem sollten Sie also nicht versuchen, das zu tun, was Sie versuchen.

Aber wenn Sie noch wollen:

  • Sie können yaourt installieren, aber nur als Benutzer ohne Rootberechtigung .

oder

  • Sie können (auf eigenes Risiko) die Lösung von Allan McRae ausprobieren, die als gute Erklärung für einen Ersatz des alten makepkg --asrootBefehls gilt.