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."
Lafayette
sumber

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.

Viter
sumber
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