Ein Installationsskript im Container eines Dockers schlägt aufgrund des Befehls xz fehl

768
Lafayette

Ich versuche, PredictProtein für Docker von hier aus zu installieren . Das von PredictProtein verwendete Skript zum Installieren der Datenbank lädt die Daten als .txzDatei herunter .

Nach dem Download versucht das Skript, die Datei zu dekomprimieren. Dies schlägt fehl und führt zu einer Fehlermeldung

/usr/local/bin/setupdb: line 15: xz: command not found 

Warum versagt es? Und wie könnte ich das lösen?

Ich verwende Docker Version 17.12.1-ce; Ich führe es in einer Ubuntu 16.04.3 VM mit VirtualBox aus

Das Skript (für den Container kopiert) lautet wie folgt:

#!/bin/bash  if [ -d /usr/share/rostlab-data/ ]; then echo "Removing current database..." rm -rf /usr/share/rostlab-data/ fi  mkdir /usr/share/rostlab-data/ cd /usr/share/rostlab-data/  echo "Downloading database release..." wget -O rostlab-data.txz "http://www.rostlab.org/services/ppmi/download_file?format=gzip&file_to_download=db"  echo "Extracting..." xz -d rostlab-data.txz tar xvf rostlab-data.tar rm -f rostlab-data.tar  echo "Done." 
1

1 Antwort auf die Frage

2
Viter

Da der Befehl xz nicht gefunden wird, ist das Tool wahrscheinlich nicht installiert. Wenn der Container auf Ubuntu basiert (er ist wahrscheinlich nicht der Fall), würde er installiert werden, so dass ich denke, dass er auf Alpin basiert.

Versuchen Sie, xz zu installieren!

apk add xz 

Wenn Sie die Docker-Datei bearbeiten, fügen Sie einfach eine RUN-Anweisung am Anfang der Datei hinzu.

Sie meinen, ich sollte diesen Befehl zum Installationsskript hinzufügen? Lafayette vor 6 Jahren 0
Wenn Sie sich in einem Container mit einem Terminal befinden (interaktiv), können Sie es einfach eingeben, bevor Sie das Skript ausführen. Andernfalls fügen Sie es als eine der ersten Zeilen zu Ihrem Dockerfile "RUN apk add xz" hinzu. Viter vor 6 Jahren 0
Ich habe `docker run ecbeaec0320f sudo apk add xz` versucht, aber ich habe den Fehler` docker: Fehlerantwort vom Daemon: OCI-Laufzeiterstellung fehlgeschlagen: container_linux.go: 348: Start des Containerprozesses verursacht "exec: \" sudo \ ": ausführbare Datei nicht in $ PATH gefunden ": unbekannt.` (ecbeaec0320f ist die Image-ID) Lafayette vor 6 Jahren 0
Verwenden Sie Sudo nicht mit Alpin. Können Sie die von Ihnen verwendete Docker-Datei verknüpfen? Viter vor 6 Jahren 0
Führen Sie auch https://training.play-with-docker.com/ops-stage1/ die ersten beiden Tutorials unter Hands-on-Learning aus und versuchen Sie, die Paketverwaltungsbefehle in Linux (apt-get in ubuntu und apk in alpine) zu verstehen ). Viter vor 6 Jahren 0
Sehr gut, ich werde es versuchen, danke. Ich habe dieses Bild über `docker pull bromberglab / predictprotein 'heruntergeladen Lafayette vor 6 Jahren 0
Außerdem ist der Container Ubuntu-basiert, nicht alpin: `docker exec my_predictprotein cat / etc / os-release NAME =" Ubuntu "VERSION =" 16.04.3 LTS (Xenial Xerus) "ID = ubuntu ID_LIKE = debian PRETTY_NAME =" Ubuntu 16.04 .3 LTS "VERSION_ID =" 16.04 "HOME_URL =" http://www.ubuntu.com/ "SUPPORT_URL =" http://help.ubuntu.com/ "BUG_REPORT_URL =" http://bugs.launchpad.net/ ubuntu / "VERSION_CODENAME = xenial UBUNTU_CODENAME = xenial` Lafayette vor 6 Jahren 0
Wenn dies ubuntu und nicht alpin ist, sollte ich apt-get anstelle von apk verwenden. Wenn ich jedoch `docker run ecbeaec0320f apt-get install xz` verwende, bekomme ich` Paketlisten lesen ... Abhängigkeitenbaum erstellen ... Statusinformationen werden gelesen ... E: Paket xz` konnte nicht gefunden werden Lafayette vor 6 Jahren 0
hey Sie müssen zuerst ein apt-get Update && apt-get Upgrade durchführen! Dann kannst du die apt-get install xz machen Viter vor 6 Jahren 0