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

Извлечь файл spec из пакета rpm

Есть ли способ извлечь файл spec из пакета rpm (у меня есть только файл RPM)

не

   rpm --scripts -qp my-great-app-1.1.2.rpm 

(этот синтаксис не позволяет получить файл spec только скриптов из rpm)

4b9b3361

Ответ 1

Установите rpmrebuild и "извлеките" (фактически заново создайте) файл спецификации вашего rpm файла или уже установленного пакета.

Примеры:

rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s hercules.spec hercules

Ответ 2

Файл спецификации не сохраняется в двоичных rpms, если только пакет не включил его по какой-либо причине (и на самом деле нет причин для этого). Единственной информацией, которую вы можете получить из двоичного rpm, является информация, возвращаемая rpm -qi <package>, и файлы, которые rpm -ql <package> перечислены. Если вам нужно больше, вам нужно найти исходный пакет. Если веб-сайт Google/поставщика не предоставит вам это, в поле Packager должна быть указана контактная информация, предназначенная для любого, кто будет компетентен. Например, вот пакет, который поставляется с RHEL и пакетом от стороннего поставщика:

$ rpm --qf '%{Packager}\n' -q redhat-release
Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
$ rpm --qf '%{Packager}\n' -q cfengine-community
CFEngine AS ([email protected])

Здесь у вас есть веб-сайт и адрес электронной почты, где вы можете узнать о файле спецификации или файле srpm.

Ответ 3

В ответ на @RumpleStiltskin исходные файлы spec найдены в исходных rpms, которые можно извлечь. Чтобы получить исходные rpms, запустите следующее:

yum install yum-utils # Only required if yumdownloader is not installed
yumdownloader --source <package name, like 'emacs-nox'>

Это установит пакет в текущий каталог. Чтобы извлечь его, выполните:

rpm2cpio <package name>.src.rpm | cpio -civ '*.spec'

Файл .spec будет находиться в вашем текущем каталоге.

Если вы не можете установить yum-utils по какой-либо причине, посмотрите файлы в /etc/yum.repos.d/ и найдите разделы, относящиеся к репозиториям исходного rpm. Вы можете ввести значения baseurl в свой браузер и вручную найти исходный пакет. Для извлечения .spec требуется rpm2cpio.

Ответ 4

Файлы спецификаций обычно не находятся в об/мин. Они находятся в исходных оборотах.

Ответ 5

вы можете использовать

yumdownloader --source < something.rpm

то

rpm2cpio packagename | cpio -ivd

Ответ 6

rpmrebuild - ваш друг. Используйте

rpmrebuild -e -p <rpm_file>

Когда он открывает файл спецификации в редакторе, вы также можете внести изменения в спецификацию rpm.

Ответ 7

Я мог получить все свои .spec, source, Patches этой простой командой

$ rpmbuild --recompile --noclean ./SRPMS/somerpm.src.rpm

Теперь можно изменить spec, src и пересобрать RPM или SRPM.