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