Где я могу найти точный ответ на вопрос, что означает `*/` в Bash или Zsh?

Лучшими источниками документации будут имитация исходного кода , официальная документация по 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 .

9
30.03.2020, 09:37
1 ответ

Расширение */не означает ничего особенного для оболочки. Это точно так же, как при расширении *.txtбудут перечислены все существующие пути , которые заканчиваются на .txt.

Для любой оболочки */будет расширяться до всех доступных путей, заканчивающихся на /.

Единственная проблема заключается в том, чтобы понять, когда pathnameможет заканчиваться на /.

Это возможно только в том случае, если последнее имя файла существует и является каталогом.

Явное подтверждение (от man ksh):

*
... If followed by a / then only directories and subdirectories will match.

0
19.03.2021, 02:31

Теги

Похожие вопросы