Это возможно, но очень сложно сделать так, чтобы все было сделано правильно. Если вы в отчаянии, вы можете создать новый RPM- .spec
файл и создать «поддельный» исходный RPM-файл (SRPM), который затем можно использовать для создания результирующего RPM-файла, используя rpmbuild --rebuild
.
Вместо этого я бы продолжил поиск фактических оборотов. Вы не указываете, что в вашем вопросе, но по моему опыту вы можете найти что-нибудь в Интернете, если вы знаете, как его искать. Я нашел древние версии RPM для дистрибутивов Red Hat, которые не использовались более 10 лет, поэтому мне трудно поверить, что нигде нет остатков этого RPM.
Также вы можете часто возвращаться к источнику приложения, содержащемуся в RPM, и использовать его для реконструкции RPM. Часто исходные приложения содержат необходимый .spec
файл, который используется для перестройки RPM.
Наконец, вы можете получить исходный код и .spec
файл из службы сборки, такой как Koji для дистрибутивов на основе Red Hat. SuSE поддерживает аналогичные сервисы сборки, поэтому вы можете искать их, чтобы получить старые артефакты сборки.
Принимая бинарные файлы как есть
Вы можете использовать этот метод, чтобы поднять фактические исполняемые файлы из одной системы и скопировать их для развертывания в другой системе.
машина А
$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz
машина B
$ tar -zxvf /path/to/your/program.tgz
SLES-версия RPM
Согласно одному из постов в этой теме: Re: Как создать RPM для установленных пакетов rpm
на SLES, якобы для того, чтобы иметь переключатель --repackage
. Этого не существует в версии Red Hat (в Fedora или CentOS). Но согласно посту вы можете использовать его так:
$ rpm -e --repackage <somepackage>
После этого вы найдете свой RPM доступным здесь:
/var/spool/repackage
Использование rpmerizor
Rpmerizor - это сторонний инструмент / скрипт, который вы можете установить, который перепакует исходные файлы в соответствующий RPM. Использование этого скрипта доступно здесь, под названием: man-страница rpmerizor .
выдержка
Rpmerizor - это скрипт, который позволяет вам создавать RPM-пакет из установленных файлов. Вам просто нужно указать файлы в командной строке и ответить на несколько интерактивных вопросов, чтобы заполнить метаданные rpm (имя пакета, версия ...). Вы также можете использовать его в пакетном режиме с параметрами командной строки для метаданных.
Использование rpmrebuild
Не путайте со средством сборки rpmbuild
, rpmrebuild
это еще один сторонний скрипт, который вы можете использовать для переупаковки уже установленного RPM.
выдержка
rpmrebuild - это инструмент для создания файла RPM из пакета, который уже был установлен для базового использования, использование rpmrebuild не требует никаких знаний по сборке rpm. (На Debian эквивалентным продуктом является dpkg-repack).
пример
Скажем, мы хотим переупаковать openssh-сервер.
$ rpm -aq | grep openssh-server
openssh-server-6.2p2-8.fc19.x86_64
Теперь упакуйте это:
$ rpmrebuild openssh-server-6.2p2-8.fc19.x86_64
/usr/lib/rpmrebuild/rpmrebuild.sh: WARNING: some files have been modified:
..?...... c /etc/ssh/sshd_config
..?...... c /etc/sysconfig/sshd
Do you want to continue ? (y/N) y
Do you want to change release number ? (y/N) n
result: /root/rpmbuild/RPMS/x86_64/openssh-server-6.2p2-8.fc19.x86_64.rpm
Ссылки