#jenkins #jenkins-pipeline #rpmbuild
#Дженкинс #дженкинс-конвейер #rpmbuild
Вопрос:
Начиная с Fedora32 (и Fedora 33 тоже), моя сборка libreoffice RPM больше не будет запускаться. Кажется, что он прерывается, когда /usr/lib/rpm/redhat/brp-mangle-shebangs
вызывается Дженкинсом. Я изменил brp-mangle-shebangs
, чтобы получить конкретный файл, который прерывает сборку. Это результат:
read shebang_line
orig_shebang='Denne utvidelsen blir en del av Calc, og tilbyr nye metoder for løsing til bruk i optimering av ikke-lineære programmeringsmodeller.'
'[' 'Denne utvidelsen blir en del av Calc, og tilbyr nye metoder for løsing til bruk i optimering av ikke-lineære programmeringsmodeller.' = 'Denne utvidelsen blir en del av Calc, og tilbyr nye metoder for løsing til bruk i optimering av ikke-lineære programmeringsmodeller.' ']'
echo '*** WARNING: ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt is executable but has no shebang, removing executable bit'
*** WARNING: ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt is executable but has no shebang, removing executable bit
stat -c %y ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt
ts='2021-01-28 16:22:30.267085614 0100'
chmod -x ./opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt
touch -d '2021-01-28 16:22:30.267085614 0100' /opt/loffice/libreoffice6.4/share/extensions/nlpsolver/description-nb.txt
continue
IFS=
read -r line
f=./opt/loffice/libreoffice6.4/share/extensions/package.txt
path=/opt/loffice/libreoffice6.4/share/extensions/package.txt
'[' -n '' ']'
'[' -n '' ']'
read shebang_line
Fehler: Fehler-Status beim Beenden von /var/tmp/rpm-tmp.R2w2T5 (%install)
Этот скрипт, похоже, пытается прочитать shebangs из текстовых файлов, а затем прерывается? Я, честно говоря, понятия не имею, что происходит, поскольку Дженкинс не скажет мне точно, где возникает ошибка. Так что я даже не знаю, прав ли я в своем предположении. Все, что я могу сказать, это то, что эта точная сборка работает на сервере fedora31 buildserver.
У вас, ребята, есть какие-либо намеки на то, почему эта сборка может тормозить или как ее отладить дальше? Честно говоря, я сейчас очень растерян.
Ответ №1:
Долгая история, но похоже, что «первопричиной» является «особенность» в команде установки GNU.
Обычно (включено linux/unix
), когда a file
создается, is получает свой файл mode
(разрешения) через umask
. Кроме x
того, разрешение на выполнение дополнительно удалено.
Однако, когда вы install
открываете файл, install
команда не зависит от того, является ли файл данными или сценарием, и отказывается удалять . x
(Похоже, что install
всегда используется mode = 0755
(он же «-rwxr-xr-x»).
Примеры:
umask=0027
600 -rw------- mod_0700_data # from: chmod go-rwx mod_0700_data
700 -rwx------ mod_0700_xowner # from: chmod 0700 mod_0700_xowner
777 -rwxrwxrwx mod_0777_xscript # from: chmod a rwx mod_0777_xscript
640 -rw-r----- mod_touch # from: touch mod_touch
600 -rw------- mod_cp_data # from: cp mod_0700_data mod_cp_data
600 -rw------- mod_cp_xowner # from: cp mod_0700_xowner mod_cp_xowner
750 -rwxr-x--- mod_cp_xscript # from: cp mod_0777_xscript mod_cp_xscript
600 -rw------- mod_cp_-p_data # from: cp -p mod_0700_data mod_cp_-p_data
700 -rwx------ mod_cp_-p_xowner # from: cp -p mod_0700_xowner mod_cp_-p_xowner
777 -rwxrwxrwx mod_cp_-p_xscript # from: cp -p mod_0777_xscript mod_cp_-p_xscript
755 -rwxr-xr-x mod_install_data # from: install mod_0700_data mod_install_data
755 -rwxr-xr-x mod_install_xowner # from: install mod_0700_xowner mod_install_xowner
755 -rwxr-xr-x mod_install_xscript # from: install mod_0777_xscript mod_install_xscript
600 -rw------- mod_install_data mode # from: install --mode =600 mod_0700_data mod_install_data mode
700 -rwx------ mod_install_xowner mode # from: install --mode =700 mod_0700_xowner mod_install_xowner mode
777 -rwxrwxrwx mod_install_xscript mode # from: install --mode =777 mod_0777_xscript mod_install_xscript mode
т. Е. Вам нужно вручную включить --mode
опцию для каждого install
, особенно если вам нужно сохранить x
статус бита выполнения файла (например, вкл. или выкл.).
Комментарий: Я подозреваю, что /usr/lib/rpm/redhat/brp-mangle-shebangs был добавлен в RHEL/Fedora, чтобы уменьшить случаи RPM
«случайного» создания файлов .s x
в режиме выполнения по ошибке. (Подсказка: было бы хорошим дополнением, если install
бы он только распространял / устанавливал x
режим, в котором исходный файл x
изначально имел бит. Но я не могу представить, сколько установок это изменение тогда сломается!)
Обратите внимание, что libreoffice
.rpm
RHEL / Fedora «предупреждает» не только об этом. ZFS … «Эти предупреждения возникают, когда мы (неправильно) включаем файлы данных и конфигурации в строки автоматического создания скриптов»
Заглядывая немного дальше, мне любопытно, не знает ли automake об install
агностическом / индифферентном mode
поведении файла по умолчанию. В основном потому zfs
, что в исходный код, похоже, также добавлены многочисленные исправления для исправления их Makefile.ac переменные, особенно: dist_pkgdata_SCRIPTS
и dist_pkgdata_DATA
. например.
pkgdatadir = $(datadir)/@PACKAGE@/test-runner/include
dist_pkgdata_SCRIPTS =
logapi.shlib
dist_pkgdata_DATA =
stf.shlib
Обновить:
RHEL8 имеет двоичный файл /usr/bin/install, вероятно, «скомпилированную» версию этого сценария оболочки: install-sh … Нарушающая строка # 444, где перезаписывается umask:
# 443: Copy the file name to the temp name.
(umask $cp_umask amp;amp; $doit_exec $cpprog "$src" "$dsttmp") amp;amp;
Очень зрелый код … «Консорциум авторских прав (C) 1994 X» … Поэтому я уверен, что есть веская причина для переопределения umask
.
Странно, что двоичная версия по install
умолчанию всегда создает файлы с eXecute-bit
набором.