Как запустить сценарий bash, который устанавливает rpm из текущего файла спецификации rpm?

У меня есть этот внутренний установщик программного обеспечения размером> 4,9 ГБ, он устанавливает кучу rpms / библиотек и устанавливает некоторые конфигурации в конце. Мне нужно создать RPM с помощью rpmbuild (я новичок в этом создании rpm), чтобы установить RPM, а также продолжить установку / выполнение этого установщика (его файл bash).

Моя спецификация rpm в настоящее время делает это по адресу (вы можете проверить код ниже):

%установить

  • Скопируйте 2 zip-файла в определенную папку. Это 2 zip-файла из реальной папки с программным обеспечением, я просто разделил его содержимое на 2 части и заархивировал их, чтобы избежать ограничений максимального размера (4 ГБ, если я не ошибаюсь).

%Почта

  • Разархивируйте эти файлы в определенную папку.

  • запустите установщик сценария bash, который находился внутри этих zip-файлов (он будет работать без вывода сообщений, потому что у него есть флаг -s).

  • Успешно завершите установку bash и rpm.

Я уже построил обороты, поэтому, когда я пытаюсь:

ням установить .rpm,

он отлично справляется с zip-частью, но он всегда ничего не делает в части установки bash, возможно, из-за этой блокировки rpm, но я не уверен.

Между прочим, я вообще не уверен, что это хороший подход для этого в конце, я имею в виду объединение этого rpm и инсталляционного материала.

Поскольку часть install.sh вызывает у меня эти проблемы, я попробовал следующие изменения:

sudo /root/sotfware/install.sh -silent /root/software/silent_configfile.conf

/root/sotfware/install.sh -silent /root/software/silent_configfile.conf

./root/sotfware/install.sh -silent /root/software/silent_configfile.conf

Что вы делаете, ребята, что я делаю не так? Как лучше всего это сделать? или что вы порекомендуете для этого?

Это файл спецификации:

Name:        software-19
Version:     1.0
Release:     1
Summary:     software 2019
License:     N/A
URL:         https://
AutoReqProv: no
AutoReq:     no

%description
Some description

%install
mkdir -p %{buildroot}/root/software2019

cp /root/software/software-1.zip %{buildroot}/root/software2019/software-1.zip
cp /root/software/software-2.zip %{buildroot}/root/software2019/software-2.zip

%post
unzip /root/software/software-1.zip -d /root/software2019/
unzip /root/software/software-2.zip -d /root/software2019/rpm/
sudo /root/software/install.sh -s /root/software2019/silent_configfile.conf
rm -rf /root/software/

%clean
rm -rf %{buildroot}

%files
/root/software/*

%changelog
* Tue Jan 20 2019 1.0
  - Initial release

Надеюсь, я был ясен, заранее спасибо!


person Henry V    schedule 20.01.2019    source источник
comment
Если вы хотите узнать больше об упаковке, перейдите на страницу rpm-packaging-guide.github.io   -  person msuchy    schedule 29.01.2019


Ответы (1)


У вас тут несколько проблем

  1. Вы создаете RPM как root, что опасно и может привести к уничтожению вашей машины, если вы напишете что-то неправильно. Поскольку вы только начинаете, это гораздо более вероятно.

  2. Исходные файлы не должны иметь абсолютных путей.

  3. Вы не должны использовать sudo, потому что установка RPM всегда выполняется как root.

  4. silent_configfile.conf не был включен в RPM, поэтому на целевой машине его могло не быть.

  5. %post удаляет файлы, которые вы указали RPM для установки, что может вызвать ошибки.

    1. This would also break rpm -V verification.
  6. Вы неправильно используете систему RPM, выполняя стороннюю установку в свой %post.

    1. This breaks things like rpm -q --whatprovides /root/software19/myfile.
    2. Это нарушает rpm -V, потому что не может проверить файлы, которые вы установили.
    3. Это нарушает любую концепцию удаления / обновления, потому что вы не предоставляете %preun и связанные файлы, чтобы «делать правильные вещи».

Чтобы все делать правильно и не вызывать головной боли у ваших администраторов на долгие годы, вам нужно, чтобы эти установщики запускались во время создания RPM (опять же, не как root!) С целью %{buildroot}, а затем распространять полученные файловая структура как RPM. Если это невозможно сделать, то RPM, вероятно, вам не подойдет, и вам нужно рассмотреть другие варианты распространения, такие как пользовательские скрипты.

person Aaron D. Marasco    schedule 21.01.2019