Bug 24678

Summary: Backward incompatibility
Product: Sisyphus Reporter: Vladimir V. Kamarzin <vvk>
Component: etckeeperAssignee: Vitaly Chikunov <vt>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: evg, rider, vt
Version: unstable   
Hardware: all   
OS: Linux   

Description Vladimir V. Kamarzin 2010-12-02 10:43:23 MSK
Из-за переноса etckeeper в /usr/bin/ etckeeper не работает после обновления:

.git/hooks/pre-commit: line 4: /usr/sbin/etckeeper: No such file or directory
error: etckeeper failed to commit changes in /etc using git
E: Sub-process xargs| (if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi) returned an error code (1)
E: Failure running script xargs| (if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi)
Comment 1 Anton Farygin 2010-12-02 12:09:29 MSK
Ещё вот такие чудеса вылезли:
$ gear-hsh --commit
Чтение списков пакетов...
Построение дерева зависимостей...
Selected version fakeroot#1.12.2-alt1 for fakeroot>=0:0.7.3
Следующие дополнительные пакеты будут установлены:
  alt-gpgkeys bzlib coreutils fakeroot getopt glibc-core glibc-preinstall
  glibc-pthread libacl libattr libbeecrypt7 libcap libdb4.7 libelf libgcc4.5
  libgmp liblzma libpopt librpm librpmbuild libselinux libtinfo sh terminfo
  zlib
Следующие НОВЫЕ пакеты будут установлены:
  alt-gpgkeys bzlib coreutils fakeroot filesystem getopt glibc-core
  glibc-preinstall glibc-pthread libacl libattr libbeecrypt7 libcap libdb4.7
  libelf libgcc4.5 libgmp liblzma libpopt librpm librpmbuild libselinux
  libtinfo rpm setup sh terminfo zlib
0 будет обновлено, 28 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B/5871kB архивов.
После распаковки потребуется дополнительно 22,0MB дискового пространства.
Запуск RPM (hsh-rpmi-print-files -U -v -h -r /home/rider/hasher/aptbox --oldpackage)...
/raid/ALT/Sisyphus/noarch/RPMS.classic/alt-gpgkeys-0.7.32-alt1.noarch.rpm
/raid/ALT/Sisyphus/noarch/RPMS.classic/setup-2.2.14-alt1.noarch.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/filesystem-2.3.7-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/glibc-preinstall-2.11.3-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/glibc-core-2.11.3-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/bzlib-1.0.6-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libattr-2.4.43-alt3.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libacl-2.2.49-alt2.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libcap-2.16-alt2.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libgmp-4.3.2-alt2.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libgcc4.5-4.5.1-alt7.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/glibc-pthread-2.11.3-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/sh-3.2.51-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libselinux-2.0.96-alt6.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/terminfo-5.7-alt5.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libtinfo-5.7-alt5.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/coreutils-8.7-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/getopt-2.18.0-alt1.20101027.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/fakeroot-1.12.2-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libbeecrypt7-4.2.1-alt5.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libdb4.7-4.7.25-alt6.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libelf-0.149-alt2.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/liblzma-5.0.0-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/libpopt-1.14-alt5.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/zlib-1.2.5-alt1.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/librpm-4.0.4-alt100.4.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/librpmbuild-4.0.4-alt100.4.x86_64.rpm
/raid/ALT/Sisyphus/x86_64/RPMS.classic/rpm-4.0.4-alt100.4.x86_64.rpm
Завершено.
rm: невозможно удалить «/var/cache/etckeeper/packagelist.pre-install»: Отказано в доступе
E: Подпроцесс if [ -x /usr/bin/etckeeper ]; then etckeeper post-install; fi завершился с ошибкой (1).
E: Ошибка выполнения скриптов RPM::Post-Invoke 'if [ -x /usr/bin/etckeeper ]; then etckeeper post-install; fi'
E: Подпроцесс завершился с ошибкой
hsh-initroot: failed to calculate package file list.
hsh-initroot: Failed to generate initial package file list.
Comment 2 Evgenii Terechkov 2010-12-02 16:52:35 MSK
Попробуйте 0.50-alt5.1
Comment 3 Anton Farygin 2010-12-02 16:57:24 MSK
у меня вылезло именно на etckeeper-0.50-alt5.1
Comment 4 Evgenii Terechkov 2010-12-02 18:40:11 MSK
2rider: у меня не получилось воспроизвести и единственный вариант, который я пока себе представляю это запуск hsh во время обновления самой системы apt-ом.

Попробуй в 50vcs-commit добавить к rm -f ещё ||: в конце, должно полечиться.
Comment 5 Anton Farygin 2010-12-02 18:57:55 MSK
нет, я конечно обновлял систему, но hasher запускался после окончания обновления. Более того - я попробовал два-три раза собрать, ошибка воспроизводилась

вот примерно так выглядел процесс обновления:
Dec  2 11:35:47 riderkvm64 apt-get: etckeeper-0.50-alt5.1 installed 
Dec  2 11:35:48 riderkvm64 apt-get: etckeeper-0.50-alt3 removed 

а потом я удалил etckeeper:
Dec  2 12:10:47 riderkvm64 rpm: etckeeper-0.50-alt5.1 removed
Comment 6 Vladimir V. Kamarzin 2010-12-07 12:13:19 MSK
в %post
if [ -e %_sysconfdir/.git/hooks/pre-commit ] && egrep '^%name' %_sysconfdir/.git/hooks/pre-commit >/dev/null 2>&1; then

egrep '^etckeeper' не сработает, т.к. строка начинается с /usr/sbin/etckeeper
Comment 7 Evgenii Terechkov 2010-12-07 12:40:16 MSK
2vvk: как раз пост-скрипт и чинился в 0.50-alt5.1. Жду обратной связи, прежде чем накатывать обход ситуации, с которой столкнулся rider...
Comment 8 Anton Farygin 2010-12-07 12:45:41 MSK
какой обратной связи ?
Comment 9 Vladimir V. Kamarzin 2010-12-07 12:51:13 MSK
Да не может он починиться таким %post-скриптом.

# cat /etc/.git/hooks/pre-commit
#!/bin/sh
# pre-commit hook for etckeeper, to store metadata and do sanity checks
set -e
/usr/sbin/etckeeper pre-commit /etc

# rpm -q --scripts etckeeper
....

# if [ -e /etc/.git/hooks/pre-commit ] && egrep '^etckeeper' /etc/.git/hooks/pre-commit >/dev/null 2>&1; then echo "pre-commit hook will be changed" ; else echo "pre-commit hook untouched" ; fi
pre-commit hook untouched
Comment 10 Vladimir V. Kamarzin 2010-12-07 12:53:29 MSK
А, так ты не залил 0.50-alt5.1. А я собрал бэкпорт на 5.1 с последнего тага 0.50-alt5. Тогда понятно всё.
Comment 11 Vladimir V. Kamarzin 2010-12-07 12:54:30 MSK
И да, релиз лучше сделать 0.50-alt6, это же не nmu какой.
Comment 12 Vladimir V. Kamarzin 2010-12-07 13:06:09 MSK
Да, исправление из 0.50-alt5.1 работает. Но вообще зачем там абсолютные пути? Может убрать, т.к. /usr/bin и так есть в PATH при выполнении из cron-а?
Comment 13 Evgenii Terechkov 2010-12-07 14:17:57 MSK
2rider: обратной связи от vvk

2vvk: Почему же не заливал, в Сизифе alt5.1 появился на следующий день после alt5. Хорошо, тогда я убираю абсолютные пути (это я глупость сделал) и заливаю alt6.
Comment 14 Evgenii Terechkov 2010-12-12 10:02:46 MSK
* Втр Дек 07 2010 Terechkov Evgenii <evg@altlinux.org> 0.50-alt6
- Workaround for #24678