Bug 59346 - Удаление пакета node-nightly приводит к удалению /usr/bin/node и /usr/bin/npm
Summary: Удаление пакета node-nightly приводит к удалению /usr/bin/node и /usr/bin/npm
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: node-nightly (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: majioa@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-05-27 16:37 MSK by Великий Руслан Олегович
Modified: 2026-05-29 16:11 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Великий Руслан Олегович 2026-05-27 16:37:27 MSK
node-nightly-25.8.2-alt2

Стенды, обновленные до Sisyphus:
ALT Education KDE 11.1 x86-64  
ALT Education XFCE 11.1 x86-64  
ALT K Workstation 11.3 x86-64  
ALT Workstation 11.1 x86-64
ALT Server 11.1 x86-64

Шаги, приводящие к ошибке:
1) Установить node и npm:
    # apt-get install node npm
2) Установить node-nightly:
    # apt-get install node-nightly
3) Удалить пакет node-nightly:
    # apt-get remove node-nightly
4) Проверить наличие и работоспособность команд node и npm:
    # ls -l /usr/bin/node /usr/bin/npm
    # node -v
    # npm -v

Фактический результат:
node: команда не найдена, npm: команда не найдена

Ожидаемый результат:
Вывод версии программ node и npm соответствующих им пакетов в терминал, бинарные файлы node и npm не удалились из /usr/bin/

Дополнительно:
node-nightly регистрирует alternatives для /usr/bin/node, /usr/bin/npm. После установки node-nightly команды node/npm переключаются на реализации из node-nightly. После удаления node-nightly ссылки не восстанавливаются на реализации из пакетов node/npm, удаляются бинарные файлы node/npm из /usr/bin/
Comment 1 Малъ Скрылевъ 2026-05-27 18:05:03 MSK
Видимо это жукъ въ alternatives
Comment 2 Alexander Makeenkov 2026-05-29 16:01:53 MSK
Проблема в том, что пакеты node и npm не участвуют в системе альтернатив и не регистрируют свои файлы в /etc/alternatives/packages.d (нет файлов для node/npm).

# rpm -q node npm node-nightly
node-22.22.2-alt1.x86_64
npm-10.9.7-alt1.noarch
node-nightly-25.8.2-alt2.x86_64

# l /etc/alternatives/packages.d | grep -E "node|npm"
-rw-r--r-- 1 root root  348 мая 15 17:42 node-nightly

Следовательно, нужно либо делать альтернативы для node и npm, либо не использовать альтернативы для node-nightly.

Технические подробности:
1. При установке node-nightly срабатывает триггер alternatives-update. Так как /usr/bin/node не является ссылкой альтернатив, утилита переименовывает его в /usr/bin/node.alternatives_save.
2. Файл /usr/bin/npm (который в оригинальном пакете является симлинком) просто перезаписывается ссылкой альтернатив без сохранения.
3. При удалении node-nightly система альтернатив удаляет свои ссылки из /usr/bin/, но:
   * Не восстанавливает бинарный файл из .alternatives_save.
   * Не может восстановить симлинк npm, так как он не был сохранен.
Это происходит именно из-за того, что основные пакеты node и npm "не знают", что их файлы теперь управляются через alternatives.
Comment 3 Малъ Скрылевъ 2026-05-29 16:07:24 MSK
(Ответ для Alexander Makeenkov на комментарий #2)
> Проблема в том, что пакеты node и npm не участвуют в системе альтернатив и
> не регистрируют свои файлы в /etc/alternatives/packages.d (нет файлов для
> node/npm).
> 
именно поэтому это и не проблема node-nightly и node включительно
Comment 4 Alexander Makeenkov 2026-05-29 16:11:52 MSK
(Ответ для Малъ Скрылевъ на комментарий #3)
> именно поэтому это и не проблема node-nightly и node включительно

Зачем делать альтеративу для пакетов, которые альтернативы не предоставляют?