Bug 33532 - Ошибка "too many arguments" скрипта shebang.req
: Ошибка "too many arguments" скрипта shebang.req
Status: CLOSED NOTABUG
: Sisyphus
(All bugs in Sisyphus/rpm-build)
: unstable
: all Linux
: P3 normal
Assigned To:
:
: http://git.altlinux.org/people/pauli/...
:
:
:
  Show dependency tree
 
Reported: 2017-06-07 12:58 by
Modified: 2017-06-08 16:47 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2017-06-07 12:58:31
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
------- Comment #1 From 2017-06-07 13:01:32 -------
Перевожу: в шебанге у команды может быть не более одного аргумента, а у вас их
там два.
------- Comment #2 From 2017-06-07 13:03:54 -------
продолжаю переводить: shebang.req нашёл в вашем скрипте setup-cli.php ошибку,
которую следует исправить.
------- Comment #3 From 2017-06-07 13:23:18 -------
Это не мой скрипт, это апстримный php код. Похоже что в апстримном репо
Windows-код. Хорошо, посмотрю как вопрос решили в других Linux-дистрибутивах.
Вопрос закрыт.
------- Comment #4 From 2017-06-08 15:19:16 -------
Да, так работать не будет. Это аналогично такому вызову (в смысле разбиения на
аргументы):

[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.
------- Comment #5 From 2017-06-08 16:39:21 -------
Собственно, разобрались. Всё верно, это не проблема 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) игнорируем.
------- Comment #6 From 2017-06-08 16:47:55 -------
(In reply to comment #5)
> Или второй аргумент в данном случае попросту не имеет значения, иначе никак не

Нет, если ядро как у нас (и, наверное, у многих), он имеет значение, а именно
сливается в одну строку. И это не работает. Я это продемонстрировал в примере
выше.

> объяснить такую конструкцию в стабильной ветке приложения. Посмотрел в пакетах
> для SUSE - так и есть, никто ничего не менял. Или Ralf Becker (автор
> EGroupware) сам одумается, или придётся намекнуть, или (%add_findreq_skiplist
> *.php) игнорируем.

Ничего хорошего в том, чтобы игнорировать то, что в принципе не работает, не
вижу. Проще пропатчить, убрав env.

Зачем игнорировать?.. лучше выкинуть целиком или поправить.