У меня есть основной вопрос об RPM. Я не очень много знаю о сборке RPM, кроме основного файла .rpmmacros, каталога сборки и т.д. Я работаю в компании, где есть сервер непрерывной сборки (Jenkins), где отдел операций хочет, чтобы автономные RPM были отброшены для развертывания. Это первый раз, когда я столкнулся с этой методологией, и теперь мне нужно понять "мелкие мелочи" создания RPM. Я чувствую, что если я понимаю основную логику логики rpmbuild, я могу взять ее оттуда, но мне было трудно найти учебники или документацию, которые объясняют процесс.
Итак, в основном, я свел это к простому вопросу, как мне сделать эти три простых вопроса типа вопроса, который, я думаю, поднимет завесу в построении RPM.
Отправной точкой является файл .spec и пара файлов, которые необходимо развернуть.
Name: my-ws
Version: 0.1.0
Release: 1
Summary: A web service to do cool stuff
URL: http://my.ws/
BuildRoot: %{_tmppath}/my-ws-build-root
Requires: some-web-server-such-as-Jetty
%description
my-ws war file and data update script
%prep
%build
%install
%pre
%preun
%postun
%clean
%files
%defattr(-,www-data,www-data,-)
%doc
Теперь веб-сервис на самом деле состоит из 3 частей кода: сценарий Python, который обновляет файл данных, файл .war, который определяет маршруты и выполняет некоторые вычисления в Java, и cronjob для запуска сценария Python один раз в день и перезапуска сервер, возможно Jetty.
Так что где-то в этом файле спецификации я думаю, что мне нужно кодировать следующую логику:
To install this rpm
copy the python script my-ws-update.py to /opt/my-ws/bin and chown it to www-data
copy the war file my-ws.war to /opt/webapps
install a cronjob for www-data to run my-ws-update.py and restart some server
To uninstall this rpm
undo install steps
Начиная с пустого файла спецификации, я понятия не имею, куда идти дальше. Я пробовал несколько учебных пособий, но ни один из них не предназначен для такого простого, фундаментального уровня. У меня такое ощущение, что директива% files является одним из ключей ко всему этому, но когда я смотрю на примеры других людей, я вижу только список каталогов, и мне не ясно, как rpm знает, как поместить файл x из пути y подать w в путь z.
Может кто-нибудь помочь мне понять основные гайки и болты в этом? Это будет то, что мне нужно сделать много раз, по крайней мере, в течение следующего года, поэтому помощь очень ценится!
Более продвинутая версия этого в конечном итоге будет заключаться в установке cronjobs в шахматном порядке на серверах, чтобы избежать простоев.