Подтвердить что ты не робот

Как установить папку назначения rpmbuild

Я заметил, что rpmbuild (-bb и --buildroot options) создает .rpm в разных местах в зависимости от того, какую ОС вы используете:

  • GNU/Linux Ubuntu <= 9.04:/usr/src/rpm/...
  • GNU/Linux Ubuntu >= 9.10:/home/rpmbuild/...
  • GNU/Linux Fedora:/usr/src/redhat/...

Итак, как я могу вручную установить папку назначения для всех ОС?

4b9b3361

Ответ 1

Отвечая на вопрос, добавив:

%define _rpmdir /outputdir

в файл .spec.

Ответ 2

Вы можете использовать аргумент команды --define: например, это приведет к отправке файлов rpm в текущий каталог.

rpmbuild anything.spec --bb --define "_rpmdir $(pwd)"

Это отправит выходной файл rpmsto

rpmbuild anything.spec --bb --define "_rpmdir /outputdir"

Или возможно что-то более сложное, например Пользовательская gradle задача для rpmbuild.

Ответ 3


Настройка среды rpmbuild в /home/ http://www.linuxquestions.org/questions/linux-software-2/need-rpm-package-for-php-version-5-2-7-and-up-on-redhat-5-1-a-766486/#13

На самом деле не рекомендуется использовать /usr/src/ **. То есть используя/home/[name]/rpms/вы можете работать как непривилегированный пользователь. Для сборки пакетов не требуется su или sudo.


Ответ 4

Просто крошечный комментарий. добавление "% define _rpmdir/outputdir" в spec файл также поддерживается rpmbuild в ОС AIX

Ответ 5

Для меня решение было установить _topdir в подкаталоге rpmbuild внутри моего проекта. Я также установил несколько макросов, чтобы контролировать путь .rpm:

rpm:
rpmbuild -bb package.spec -D "_topdir $(shell pwd)/rpmbuild"  -D "SRC $(shell pwd)" -D "NAME $(NAME)" -D "ARCH $(ARCH)" -D "VERSION $(VERSION)" -D "RELEASE $(RELEASE)"
mv rpmbuild/RPMS/$(ARCH)/$(NAME)-$(VERSION)-$(RELEASE).$(ARCH).rpm ./
rm -rf rpmbuild

Затем я использую make, чтобы сгенерировать файл .rpm и переместить его. Я предпочитаю, чтобы rpmbuild работал внутри своего каталога.

make rpm

package.spec использует эти макросы, например

Name:           %{NAME_PACKAGE}