Как запустить скрипт bash, который устанавливает rpms из текущего файла спецификаций rpm? - PullRequest
0 голосов
/ 21 января 2019

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

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

% install

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

% post

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

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

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

Я уже собрал rpm, поэтому при попытке:

yum install .rpm,

он делает zip-часть просто отлично, но он остается навсегда бездействующим в части установки bash, возможно, из-за этой блокировки 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

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

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

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

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

1 Ответ

0 голосов
/ 21 января 2019

У вас есть несколько вопросов здесь

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

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

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

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

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

    1. Это также нарушит проверку rpm -V.
  6. Вы неправильно используете систему RPM, выполняя стороннюю установку в %post.

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

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

...