извлечь файл спецификации из пакета rpm - PullRequest
36 голосов
/ 10 апреля 2011

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

не по

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

(этот синтаксис не получает спецификационный файл, только скрипты из rpm)

Ответы [ 7 ]

23 голосов
/ 05 января 2013

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

Примеры:

rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s hercules.spec hercules
13 голосов
/ 28 сентября 2011

Файл спецификации не хранится в двоичных rpms, если упаковщик по какой-то причине специально не включил его (и на самом деле нет причин делать это). Единственная информация, которую вы можете получить из двоичного числа оборотов в минуту, - это информация, которую возвращает rpm -qi <package>, и файлы, перечисленные в rpm -ql <package>. Если вам нужно больше, вы должны найти исходный пакет. Если веб-сайт Google / поставщика не предоставляет такую ​​информацию для вас, в поле «Упаковщик» должна быть указана контактная информация обо всем, что упаковано кем-либо компетентным. Например, вот пакет, который поставляется с 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 (packager@cfengine.com)

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

7 голосов
/ 20 октября 2017

За ответ @ RumpleStiltskin, исходные файлы спецификаций находятся в исходных 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.

7 голосов
/ 04 мая 2012

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

yumdownloader --source < something.rpm

тогда:

rpm2cpio packagename | cpio -ivd
6 голосов
/ 10 апреля 2011

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

4 голосов
/ 18 февраля 2015

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

rpmrebuild -e -p <rpm_file>

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

0 голосов
/ 05 июня 2019

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

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

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

...