Інсталяційний скрипт у контейнері Docker виходить з ладу через команду xz


1

Я намагаюся встановити PredictProtein для Docker з тут . Сценарій для встановлення бази даних, що використовується PredictProtein, завантажує дані як .txz файл.

Після завантаження скрипт намагається розпакувати файл. Це виходить з ладу, даючи повідомлення про помилку

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

Чому він не працює? І як я можу це вирішити?

Я використовую Docker версію 17.12.1-ce; Я запускаю його всередині Ubuntu 16.04.3 VM, використовуючи VirtualBox

Скрипт (скопійований для контейнера) такий:

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

Відповіді:


2

Оскільки команда xz не знайдена, інструмент, ймовірно, не встановлено. Якщо контейнер базується на ubuntu (це, ймовірно, не так), він буде встановлений, що змусить мене здогадатися, що він базується на альпійському.

Спробуйте встановити xz!

apk add xz

Або якщо ви редагуєте Dockerfile, просто додайте оператор RUN на початку файлу.


Ви маєте на увазі, що я повинен додати цю команду до сценарію інсталяції?
Lafayette

Якщо ви знаходитесь в контейнері з терміналом (інтерактивно), ви можете просто ввести його перед запуском сценарію. В іншому випадку додайте його як один з перших рядків у файл Dockerfile "RUN apk add xz"
Viter

я намагався docker run ecbeaec0320f sudo apk add xz але я отримав помилку 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 - ідентифікатор зображення)
Lafayette

Не використовуйте sudo з альпійським. Чи можете ви зв'язати файл Dockerfile, який ви використовуєте?
Viter

Також training.play-with-docker.com/ops-stage1 запустіть перші 2 підручника під ручним навчанням та спробуйте зрозуміти команди менеджера пакетів у linux (apt-get у ubuntu та apk у alpine).
Viter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.