Есть ли способ извлечь файл спецификации из пакета rpm (у меня есть только файл RPM)
не по
rpm --scripts -qp my-great-app-1.1.2.rpm
(этот синтаксис не получает спецификационный файл, только скрипты из rpm)
Есть ли способ извлечь файл спецификации из пакета rpm (у меня есть только файл RPM)
не по
rpm --scripts -qp my-great-app-1.1.2.rpm
(этот синтаксис не получает спецификационный файл, только скрипты из rpm)
Установите rpmrebuild и «извлеките» (фактически заново создайте) spec-файл вашего файла rpm или вашего уже установленного пакета.
Примеры:
rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s hercules.spec hercules
Файл спецификации не хранится в двоичных rpm-пакетах, если только упаковщик не включил его по какой-то причине (и на самом деле нет причин для этого). Единственная информация, которую вы можете получить из бинарного rpm, это информация, которую возвращает 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 ([email protected])
Там у вас есть веб-сайт и адрес электронной почты, соответственно, где вы можете спросить о файле спецификации или файле srpm.
spec-файлы обычно не в rpm. Они находятся в исходных оборотах.
вы могли бы использовать
yumdownloader --source < something.rpm
тогда:
rpm2cpio packagename | cpio -ivd
Согласно ответу @RumpleStiltskin, исходные файлы спецификаций находятся в исходных rpm-пакетах, которые можно извлечь. Чтобы получить исходные обороты, выполните следующее:
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
.
rpmrebuild — ваш друг. Использовать
rpmrebuild -e -p <rpm_file>
Поскольку он открывает файл спецификации в редакторе, вы также можете вносить изменения в спецификацию rpm.
Я мог получить все свои .spec, исходники, патчи с помощью этой простой команды
$ rpmbuild --recompile --noclean ./SRPMS/somerpm.src.rpm
Теперь можно изменить спецификацию, src и пересобрать RPM или SRPM.