Skrip instalasi dalam wadah Docker gagal karena perintah xz


1

Saya mencoba menginstal PredictProtein untuk Docker dari sini . Skrip untuk menginstal database yang digunakan oleh PredictProtein mengunduh data sebagai a .txz mengajukan.

Setelah mengunduh, skrip mencoba untuk mengompres file. Ini gagal, menghasilkan pesan kesalahan

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

Mengapa ini gagal? Dan bagaimana saya bisa menyelesaikan ini?

Saya menggunakan Docker versi 17.12.1-ce; Saya menjalankannya di dalam Ubuntu 16.04.3 VM, menggunakan VirtualBox

Script (disalin untuk di dalam wadah) adalah sebagai berikut:

#!/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."

Jawaban:


2

Karena perintah xz tidak ditemukan, alat ini mungkin tidak diinstal. Jika wadah tersebut didasarkan pada ubuntu (mungkin tidak) itu akan diinstal, membuat saya menebak itu didasarkan pada alpine.

Coba instal xz!

apk add xz

Atau jika Anda mengedit Dockerfile, cukup tambahkan pernyataan RUN di awal file.


Maksud Anda saya harus menambahkan perintah ini ke skrip instalasi?
Lafayette

Jika Anda berada dalam wadah dengan terminal (secara interaktif), Anda cukup mengetiknya sebelum menjalankan skrip. Atau tambahkan sebagai salah satu baris pertama ke Dockerfile Anda "RUN apk add xz"
Viter

Saya mencoba docker run ecbeaec0320f sudo apk add xz tapi saya mendapat kesalahan docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"sudo\": executable file not found in $PATH": unknown. (ecbeaec0320f adalah ID Gambar)
Lafayette

Jangan gunakan sudo dengan alpine. Bisakah Anda menautkan Dockerfile yang Anda gunakan?
Viter

Juga training.play-with-docker.com/ops-stage1 jalankan 2 tutorial pertama di bawah Praktek Langsung, dan cobalah untuk memahami perintah manajer paket di linux (apt-get di ubuntu dan apk di alpine).
Viter
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.