Я пытаюсь упаковать приложение узла как пакет rpm
, следуя этому руководству с небольшими изменениями, так как я использую docker
вместо vagrant
, пакет устанавливается без проблем после этого. Используются следующие команды:
На хост-компьютере:
docker run -it centos /bin/bash
docker cp ~/menlolab/runner #########:/runner
В контейнере Docker:
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum intall -y nodejs
yum install -y rpm-build redhat-rpm-config
npm i -g speculate
ln -s /runner ~/rpmbuild
cd ~/rpmbuild
speculate
rpmbuild -bb ~/rpmbuild/SPECS/runner.spec
yum install -y ~/rpmbuild/RPMS/x86_64/runner-0.1.4-1.x86_64.rpm
Я хочу иметь возможность упаковать приложение на локальном компьютере. машина. Я установил пакет rpm
, следуя приведенным выше шагам, я запускаю speculate
в корне проекта, связываю его с rpmbuild
с помощью ln
, но когда я запускаю rpmbuild -bb
, я получаю следующую ошибку: даже если nodejs четко установлен.
error: Failed build dependencies:
nodejs is needed by runner-0.1.4-1.x86_64
Что может вызвать это?
В файле .spec
должен быть указан список его зависимостей, однако, поскольку он не устанавливается из репозитория, необходимо включить localinstall
. Это приведет к загрузке и установке зависимостей. В этом не должно быть необходимости, если вы загрузите свой .rpm
в репозиторий и установите его таким образом.
$ sudo yum localinstall path/to/package.rpm
При создании .rpm
я всегда использовал rpm
для проверки всех путей (новая установка, переустановка, пропуск-версия, удаление), чтобы убедиться, что все пути в порядке, против использования yum
, который предназначен для взаимодействия с репо.
Когда вы спрашиваете о сборке .rpm
, обязательно включите ваш файл .spec
, чтобы мы лучше поняли вашу ситуацию.