Вызов makepkg из внешнего каталога - PullRequest
0 голосов
/ 13 ноября 2018

Я понял, что когда я пытаюсь вызвать makepkg команду для PKGBUILD во внутреннем файле, например makepkg package_name/PKGBUILD, я получаю сообщение об ошибке:

==> ОШИБКА:PKGBUILD не существует.

Но когда я меняю свой текущий каталог на каталог PKGBUILD file, cd package_name и запускаю makepkg PKGBUILD, у меня не возникает проблем.Итак, правда ли, что я должен строго находиться в каталоге PKGBUILD файла, чтобы иметь возможность вызывать makepkg для него?

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Команда makepkg PKGBUILD не делает то, что вы думаете, она делает. makepkg не принимает имя PKGBUILD в качестве позиционного параметра и полностью его исключает.

Согласно man-странице, если вы хотите указать PKGBUILD для использования, вы должны использовать опцию -p <buildscript>. Также в соответствии с man-страницей, «buildscript должен находиться в каталоге, из которого вызывается makepkg».

$ makepkg -p package_name/PKGBUILD
==> ERROR: package_name/PKGBUILD must be in the current working directory.

Как вы можете видеть, makepkg содержит код, который гарантирует, что вы не пытаетесь делать что-то, что он не позволяет вам делать - но вы должны правильно использовать параметры командной строки makepkg, чтобы makepkg распознает, что вы пытаетесь сделать, и говорит, что вы сделали неправильно.

0 голосов
/ 16 ноября 2018

Кажется, так. Если вы пишете этот сценарий и хотите избежать переключения папок назад и вперед, можно использовать такую ​​под-оболочку, как эта

(cd package_name && makepkg PKGBUILD)

, который затем перенесет вас обратно в текущую папку после выполнения действий в скобках.

...