Bug 33104

Summary: Ошибка обновления
Product: Sisyphus Reporter: Dmytro <d20052005>
Component: liblua5.1Assignee: viy <viy>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: evg, viy
Version: unstable   
Hardware: all   
OS: Linux   

Description Dmytro 2017-02-11 23:20:38 MSK
При обновлении с p8 до Sisyphus Наблюдается сразу несколько проблем. Сначала не удаляется lua5.1-alt-compat, который нужно удалить вручную, потом в системе оказывается 2 версии данной библиотеки. Если удалить их обе, то установить невозможно из-за ошибки в преинстал-скрипте.

# apt-get install liblua5.1
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие НОВЫЕ пакеты будут установлены:
  liblua5.1
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 1 не будет обновлено.
Необходимо получить 0B/87,3kB архивов.
После распаковки потребуется дополнительно 195kB дискового пространства.
Совершаем изменения...
Подготовка...                           ################################# [100%]
remove lua5.1-alt-compat manually!
ошибка: %prein(liblua5.1-5.1.5-alt7.x86_64) scriptlet failed, exit status 1
ошибка: liblua5.1-5.1.5-alt7.x86_64: установить failed
E: Произошли ошибки при выполнении транзакции
[root@simply64 ~]# apt-get -f install 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Исправление зависимостей... Завершено
Следующие дополнительные пакеты будут установлены:
  liblua5.1
Следующие НОВЫЕ пакеты будут установлены:
  liblua5.1
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 1 не будет обновлено.
Необходимо получить 0B/87,3kB архивов.
После распаковки потребуется дополнительно 195kB дискового пространства.
Продолжить? [Y/n] y
Совершаем изменения...
Подготовка...                           ################################# [100%]
remove lua5.1-alt-compat manually!
ошибка: %prein(liblua5.1-5.1.5-alt7.x86_64) scriptlet failed, exit status 1
ошибка: liblua5.1-5.1.5-alt7.x86_64: установить failed
E: Произошли ошибки при выполнении транзакции

Подробную информацию можно найти на форуме: https://forum.altlinux.org/index.php?topic=38295.0
Comment 1 viy 2017-02-11 23:43:06 MSK
task #178041: added #100: build tag "5.1.5-alt8" from /people/viy/packages/lua5.1.git
Comment 2 viy 2017-02-11 23:44:46 MSK
попробуйте, пожалуйста.
Comment 3 Dmytro 2017-02-12 15:27:48 MSK
Еще не пробовал, но посмотрел новый spec. Есть замечание.

%pre -n lib%{name}
# ----------- begin update from old lua5 to lua5.1 ----
if [ -L %_libdir/lua/5.1 ]; then
    echo "removing lua5.1-alt-compat symlink..."
    rm -f %_libdir/lua/5.1
    if [ -d %_libdir/lua5 ] && [ ! -e %_libdir/lua/5.1 ]; then
        mkdir -p %_libdir/lua
        mv %_libdir/lua5 %_libdir/lua/5.1
    fi
fi
# ----------- end update from old lua5 to lua5.1 ----

У Вас сначала идет проверка, есть ли ссылка %_libdir/lua/5.1, затем, если есть,
ее удаление, и затем во вложенном условии снова проверка, есть ли файл/каталог
%_libdir/lua/5.1. В случае, если первое условие не выполнится, то до
> if [ -d %_libdir/lua5 ] && [ ! -e %_libdir/lua/5.1 ]; then
дело не дойдет. А если 
> if [ -L %_libdir/lua/5.1 ]; 
будет истинно, то после
> rm -f %_libdir/lua/5.1
второе тоже станет истинно.

Предлагаю вынести вложенный if наружу, т.е. записать вот в таком виде:

%pre -n lib%{name}
# ----------- begin update from old lua5 to lua5.1 ----
if [ -L %_libdir/lua/5.1 ]; then
    echo "removing lua5.1-alt-compat symlink..."
    rm -f %_libdir/lua/5.1
fi
if [ -d %_libdir/lua5 ] && [ ! -e %_libdir/lua/5.1 ]; then
    mkdir -p %_libdir/lua
    mv %_libdir/lua5 %_libdir/lua/5.1
fi
# ----------- end update from old lua5 to lua5.1 ----
Comment 4 viy 2017-02-12 17:58:10 MSK
(In reply to comment #3)
> Еще не пробовал, но посмотрел новый spec. Есть замечание.
 
> У Вас сначала идет проверка, 
> if [ -L %_libdir/lua/5.1 ]; then
>     if [ -d %_libdir/lua5 ] && [ ! -e %_libdir/lua/5.1 ]; then
[...]

Да, избыточное. Поправлю, если будет новый релиз.

> Предлагаю вынести вложенный if наружу, т.е. записать вот в таком виде:

Так не хочу, хочу только когда был найден симлинк.
в остальных случаях лучше не трогать.
Comment 5 Dmytro 2017-02-12 18:45:15 MSK
(In reply to comment #4)
> (In reply to comment #3)

> > Предлагаю вынести вложенный if наружу, т.е. записать вот в таком виде:
> 
> Так не хочу, хочу только когда был найден симлинк.
> в остальных случаях лучше не трогать.

Если файлы из lua5 в lua5.1 переносить не обязательно, то Вы правы.
Comment 6 viy 2017-02-12 18:58:12 MSK
(In reply to comment #5)
> (In reply to comment #4)
> > (In reply to comment #3)
> 
> > > Предлагаю вынести вложенный if наружу, т.е. записать вот в таком виде:
> > 
> > Так не хочу, хочу только когда был найден симлинк.
> > в остальных случаях лучше не трогать.
> 
> Если файлы из lua5 в lua5.1 переносить не обязательно, то Вы правы.

да. Все пакеты, которые там держали что-либо, будут пересобраны.
Comment 7 Dmytro 2017-02-14 22:25:50 MSK
Проверил.
Обновление с p8 до Сизифа проходит корректно.

Меняю на "FIXED"