RPM SPEC файл на самом деле ничего не делает, просто устанавливает? - PullRequest
0 голосов
/ 24 октября 2018

Это мой первый опыт создания RPM для Linux, и я исследую его как решение для распространения пакета программного обеспечения, состоящего в основном из файлов и некоторой конфигурации.

Я прочитал некоторую документацию, ноЯ чувствую, что некоторые разделы неоднозначны между системой сборки и целевой системой установки.

Я написал файл SPEC для rpmbuild, и он собирает RPM, но, кажется, ничего не делает, когда я его устанавливаю налокальная система.Он просто говорит, что был установлен.

Я удалил почти все аспекты, и я просто пытаюсь заставить RPM создать каталог.Он не создается.

Что-то не так я здесь делаю?

%define _topdir     /sourcecode/agent/rpm/
%define name        agent
%define release     0
%define version     0.1a
%define buildroot %{_topdir}/BUILD

BuildRoot:      %{buildroot}
Summary:        agent
License:        GNU
Name:           %{name}
Version:        %{version}
Release:        %{release}
Source0:        hello.sh
Prefix:         /opt
Group:          PhysicalEdge

%prep

%build

%install
mkdir -p /opt/edgeagent
cp %{SOURCE0} /opt/edgeagent/hello.sh

%files
%defattr(-,root,root)

Другой вопрос, который у меня возник, - это включить файлы, я перечислил их в Source (Source0: hello.sh).,Я перечисляю их в директиве% files, где они начинаются в исходной системе, или где они заканчиваются в целевой системе?

Я пытаюсь получить файл hello.sh в / opt / agent / onцелевая система на данный момент.

Спасибо!

1 Ответ

0 голосов
/ 25 октября 2018

Это неправильно: cp %{SOURCE0} /opt/edgeagent/hello.sh

Вы не должны когда-либо создавать RPM как root!Эта команда должна была завершиться с ошибкой .

Что вы хотели:

mkdir -p %{buildroot}/opt/edgeagent/
cp %{SOURCE0} %{buildroot}/opt/edgeagent/hello.sh

Затем добавьте /opt/edgeagent/hello.sh в раздел %files, как вы предполагали.

...