Лучшими источниками документации будут имитация исходного кода , официальная документация по rpm , руководство по пакетированию rpm и любая дополнительная документация по любому из этих рекомендовать. Что касается вашего опубликованного примера, похоже, что ваш пакет example.src.rpm
не имеет надлежащего файла спецификации в правильном месте, с которым можно работать.
mock будет использовать входной файл src.rpm для перестроения, или вы можете использовать файл спецификации и каталог с исходным кодом для сборки исходного rpm (SRPM ). С некоторой дополнительной конфигурацией вы даже можете использовать mock напрямую с проверкой исходного кода. После того, как вы установили mock и пользователь сконфигурировал его для использования (, mock будет жаловаться, если вы попытаетесь использовать его как root, непривилегированный пользователь должен быть в группе mock ), это довольно просто использовать:
yumdownloader --source openssl
mkdir rpm-results
mock -r epel-7-x68_64 --resultdir=rpm-results openssl-*.src.rpm
Это перестроит дистрибутив, предоставленный OpenSSL, и поместит полученные пакеты в каталог результатов rpm -. Чтобы внести изменения в пакет, предоставленный дистрибутивом, вам нужно установить src.rpm, внести изменения, а затем собрать полученные файлы rpm :
.
yumdownloader --source openssl
rpm -ivh openssl-*.src.rpm
# usually this installs to ~/rpmbuild
# make your changes to ~/rpmbuild/SOURCES/* and ~/rpmbuild/SPEC/openssl.spec as necesary
mkdir rpm-results
mock -r epel-7-x68_64 --resultdir=rpm-results --buildsrpm ~/rpmbuild/SPEC/openssl.spec
mock -r epel-7-x68_64 --resultdir=rpm-results rpm-results/openssl-*.src.rpm
Я не уверен, что более новые версии не требуют двухэтапной сборки (SRPM => RPM ), но именно так мы использовали mock в моем магазине. Вы, вероятно, захотите/должны сделать это для каждого пакета, который вы пытаетесь пересобрать. Я бы не советовал упаковывать все в один пакет, как вы просите, но технически ничто не мешает вам это сделать.Вам просто нужно создать свой собственный файл спецификаций, который объединяет все вместе, или использовать другой инструмент, например FPM .
Расширение */
не означает ничего особенного для оболочки. Это точно так же, как при расширении *.txt
будут перечислены все существующие пути , которые заканчиваются на .txt
.
Для любой оболочки */
будет расширяться до всех доступных путей, заканчивающихся на /
.
Единственная проблема заключается в том, чтобы понять, когда pathname
может заканчиваться на /
.
Это возможно только в том случае, если последнее имя файла существует и является каталогом.
Явное подтверждение (от man ksh):
*
... If followed by a / then only directories and subdirectories will match.