Finding Requires (using /usr/lib/rpm/find-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.NhZae3 find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks) shebang.req.files: executable script /usr/src/tmp/egroupware-buildroot/usr/share/egroupware/api/asyncwrapper.php is not executable shebang.req: ERROR: /usr/src/tmp/egroupware-buildroot/usr/share/egroupware/setup/setup-cli.php: too many arguments: #!/usr/bin/env php -qC find-requires: ERROR: /usr/lib/rpm/shebang.req failed error: /bin/sh failed error: Failed to find Requires
Перевожу: в шебанге у команды может быть не более одного аргумента, а у вас их там два.
продолжаю переводить: shebang.req нашёл в вашем скрипте setup-cli.php ошибку, которую следует исправить.
Это не мой скрипт, это апстримный php код. Похоже что в апстримном репо Windows-код. Хорошо, посмотрю как вопрос решили в других Linux-дистрибутивах. Вопрос закрыт.
Да, так работать не будет. Это аналогично такому вызову (в смысле разбиения на аргументы): [imz@ovicaa ~]$ env 'tail -f' /dev/null env: tail -f: No such file or directory [imz@ovicaa ~]$ tail -f /dev/null ^C [imz@ovicaa ~]$ type env env is hashed (/usr/bin/env) [imz@ovicaa ~]$ rpm -qf /usr/bin/env coreutils-8.24.0.40.c1dba-alt1 [imz@ovicaa ~]$ cat > test-env-shebang #!/usr/bin/env tail -f hi [imz@ovicaa ~]$ chmod a+x test-env-shebang [imz@ovicaa ~]$ ./test-env-shebang /usr/bin/env: tail -f: No such file or directory [imz@ovicaa ~]$ В конце я явно проверил поведение в shebang-е. Это легко переписать. Например, без env.
Собственно, разобрались. Всё верно, это не проблема rpm-build. (en.wikipedia.org/wiki/Shebang_(Unix)) "The optional argument should either not be included or it should be a string representing a single argument." Single. Или второй аргумент в данном случае попросту не имеет значения, иначе никак не объяснить такую конструкцию в стабильной ветке приложения. Посмотрел в пакетах для SUSE - так и есть, никто ничего не менял. Или Ralf Becker (автор EGroupware) сам одумается, или придётся намекнуть, или (%add_findreq_skiplist *.php) игнорируем.
(In reply to comment #5) > Или второй аргумент в данном случае попросту не имеет значения, иначе никак не Нет, если ядро как у нас (и, наверное, у многих), он имеет значение, а именно сливается в одну строку. И это не работает. Я это продемонстрировал в примере выше. > объяснить такую конструкцию в стабильной ветке приложения. Посмотрел в пакетах > для SUSE - так и есть, никто ничего не менял. Или Ralf Becker (автор > EGroupware) сам одумается, или придётся намекнуть, или (%add_findreq_skiplist > *.php) игнорируем. Ничего хорошего в том, чтобы игнорировать то, что в принципе не работает, не вижу. Проще пропатчить, убрав env. Зачем игнорировать?.. лучше выкинуть целиком или поправить.
Хорошо, а как вы прокомментируете такой параметр: $ env --help | grep -A2 -- -S -S, --split-string=S обработать и разделить S на отдельные аргументы; используется для указания нескольких аргументов в строках с #! с примером из man env: #!/usr/bin/env -S perl -w -T ... Will execute perl -w -T 1.pl . который не работает: shebang.req: ERROR: /usr/src/tmp/korinf-buildroot/usr/share/eterbuild/korinf/helpers/send_via_pyxmpp.py: too many arguments: #!/usr/bin/env -S python3 -u
(In reply to comment #7) > Хорошо, а как вы прокомментируете такой параметр: > $ env --help | grep -A2 -- -S > -S, --split-string=S обработать и разделить S на отдельные аргументы; > используется для указания нескольких аргументов > в строках с #! > > с примером из man env: > #!/usr/bin/env -S perl -w -T > ... > > Will execute perl -w -T 1.pl . > > который не работает: > shebang.req: ERROR: > /usr/src/tmp/korinf-buildroot/usr/share/eterbuild/korinf/helpers/send_via_pyxmpp.py: > too many arguments: #!/usr/bin/env -S python3 -u Новая фича в coreutils. Можно и новый feature request на rpm-build завести.