Как в CentOS перенести уже установленный пакет с одного сервера на другой

Это возможно, но очень сложно сделать так, чтобы всё было сделано правильно. Если вы в отчаянии, вы можете создать новый 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

tar -zxvf /path/to/your/program.tgz

SLES-версия 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).

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