The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от auto_tips (?), 20-Сен-25, 16:25 
После обновления на Debian 13 и обновления плагинов для neovim столкнулся с неприятной ошибкой в популярном плагине для автокомплита nvim-cmp. Ошибка происходила при вводе любых данных в режиме вставки. Трассировка выдавала что-то на подобии:

   Обнаружена ошибка при обработке TextChangedI Автокоманды для "*":
   Error executing lua callback: /usr/local/share/nvim/runtime/lua/vim/lspclient.lua:643: bufnr: expected number, got function                      
   stack traceback:                                                                                                                                  
   [C]: in function 'error'                                                                                                                  
   vim/shared.lua: in function 'validate'                                                                                                    
   /usr/local/share/nvim/runtime/lua/vim/lsp/client.lua:643: in function 'resolve_bufnr'                                                    
   ...

++ Решение

В Debian 13 находится neovim версии 0.10.4. Дополнение nvim-cmp по какой-то причине требует для работы более новую версию neovim. В частности, проблема исчезла с версией 0.11.3.

++ Установка более свежей версии neovim

Существует много способов установки более свежих пакетов в Debian, включая подключение репозитория backports и использование самодостаточных пакетов типа appimage или flatpack. Ниже будет описан более сложный, но универсальный и контролируемый способ - сборка необходимого deb пакета вручную. Руководство по сборке и установки рассчитано на пользователей которые никогда раньше этим не занимались.

1. Клонирование нужной версии из официального репозитория:

   git clone --depth=1 --recurse-submodules --branch=v0.11.3 https://github.com/neovim/neovim.git

--depth=1 позволяет не скачивать всю историю изменений ветки
--recurse-submodules заставляет скачать все необходимые для сборки модули из других репозиториев github
--branch=v0.11.3 указывает необходимую для скачивания ветку, в частности используем ветку помеченую через tag v0.11.3

2. Компиляция программы
Переходим в директорию neovim и начинаем сборку:

   cd neovim
   make CMAKE_INSTALL_PREFIX=/usr/local/ -j14

prefix позволяет задать директорию для дальнейшей установки пакета отличной от директории по умолчанию. Пакеты собранные вручную лучше располfгать по пути /usr/local/
Флаг -j14 определяет количество потоков, которые будут использоваться для параллельной сборки. Рекомендуется использовать не более чем количество логических ядер процессора + 1.

3. Установка программы в локальную директорию

После окончания сборки создадим временную директорию nvim-v0.11.3 и установим в неё скомпилированный neovim:

   mkdir nvim-v0.11.3
   make DESTDIR=$(pwd)/nvim-v0.11.3 install

DESTDIR указывает директорию, которая будет использована вместо корня файловой системы. $(pwd) дописывает абсолютный путь к текущей директории. После этого шага директория nvim-v0.11.3 должна содержать папку usr содержимым, которое пакетный менеджер должен добавить в текущую систему.

На данном этапе программа уже может работать и не вызывать ошибок. Проверить это выполнив  команду:

   nvim-v0.11.3/usr/local/bin/nvim

4. Подготовка информации для превращения созданной директории в deb пакет

Для формирования пакета в директории nvim-v0.11.3 необходимо создать еще одну папку DEBIAN и добавить в ней два файла.
Файл с описанием пакета nvim-v0.11.3/DEBIAN/control со следующим содержимым:

   Package: neovim
   Version: 0.11.3
   Architecture: amd64
   Section: editors, devel
   Priority: standard
   Maintainer: Ваше Имя {your@mail.ru>
   Description: Code editor

Можно изменить сведения в поле Maintainer и отредактировать поле Architecture в соответствии с архитектурой вашего процессора (актуально для всяких SBC на ARM и RISC-V)

Устанавливаемые программы могут использовать разделяемые библиотеки (shared object). Данные библиотеки содержат общий для разных программ код в виде скомпилированных функций. Для того, чтобы эти библиотеки были доступны из места их установки часто необходимо указать системе о необходимости обновить соответствующую информацию. Сделать это можно в специальном скрипте, выполняемом после установки. Содержимое файла nvim-v0.11.3/DEBIAN/postinst должно выглядеть так:

   #!/usr/bin/env bash
   ldconfig && echo "Кэш разделяемых библиотек обновлен"

Данный скрипт необходимо сделать исполняемым. Сделать это можно консольной командой:

   chmod +x nvim-v0.11.3/DEBIAN/postinst

5. Сборка deb пакета

Теперь полученную директорию можно превратить в deb пакет. Для этого необходимо выполнить команду:

   dpkg-deb --build --root-owner-group nvim-v0.11.3

После успешного выполнения команды в текущей директории должен появиться файл nvim-v0.11.3.deb. Пакет можно скопировать на флешку либо распростронять любым другим способом, чтобы не собирать его снова на других компьютерах.

6. Установка deb пакета

Установить пакет можно с помощью менеджера apt:

   sudo apt install ./nvim-v0.11.3.deb

При помощи apt пакет можно будет удалить. При необходимости установить более свежую версию nvim apt автоматически удалит предыдущую.

После установки nvim должен запускаться и нормально работать с указанным плагином.

URL:
Обсуждается: http://www.opennet.dev/tips/info/3278.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +1 +/
Сообщение от Груман (?), 20-Сен-25, 16:25 
> чтобы не собирать его снова

Тогда-уж, опишите как сделать свой репо и не возиться с флешками

Ответить | Правка | Наверх | Cообщить модератору

2. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от Гость (??), 21-Сен-25, 15:37 
И как настроить отдельный сервер под репо. И как сделать его отказоустойчивым, чтобы не возиться с восстановлением диска. Да, мой хороший?
Ответить | Правка | Наверх | Cообщить модератору

3. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от Груман (?), 21-Сен-25, 20:39 
Зачем? Для этого можно запустить виртуальную машину.
А так, автор собрал пакет, так почему-бы и репо не запустить? И это про удобство.
Ответить | Правка | Наверх | Cообщить модератору

4. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от Аноним (4), 23-Сен-25, 09:56 
>виртуальную машину

Господи боже. И бекапить её Стейт как сумасшедший.

Ответить | Правка | Наверх | Cообщить модератору

5. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +1 +/
Сообщение от нах. (?), 23-Сен-25, 13:40 
оооо, деб-пакеты из 96го года, ручной сборки.

Ответить | Правка | Наверх | Cообщить модератору

6. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от 0xdeadbee (-), 23-Сен-25, 22:21 
кому чего не нра, всегда могут "./configure ; make ; make install"
в /usr/local или даже в ~/.local, как это делаю я например.
Ответить | Правка | Наверх | Cообщить модератору

7. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +1 +/
Сообщение от нах. (?), 24-Сен-25, 07:35 
И если локалхостов хотя бы два...

(да и вспомнить потом через пару лет что откуда взялось и как теперь это переносить на новую систему тоже интересное приключение)

Ответить | Правка | Наверх | Cообщить модератору

8. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от Аноним (8), 25-Сен-25, 00:41 
> вспомнить потом через пару лет

Для этого все эти "configure && make && make install" надо делать не руками, а положить в скрипт /usr/local/src/neovim.sh и запускать его.

> И если локалхостов хотя бы два...

Ну лаааадно... вместо "make install" делайте "make DESTDIR=/tmp/neovim install", запаковывайте /tmp/neovim в архив и распаковывайте где надо... ну это если оба ваших локалхоста на одной версии одного дистрибутива...

Я так с 2005 по 2018 на lfs сидел, раз в год (в новогодние каникулы) пересобирая всю систему. Правда, благодаря внедрению всяких растов, постоянным миграциям между сборочными системами и прочему бардаку это стало бессмысленно, а постоянные правки скриптов начали занимать слишком много времени. Так что вернулся на слаку. А теперь, вероятно, перейду на диван, так как идеальный для меня интервал релизов - раз в пару лет, а у слаки есть только два варианта - стабильный (раз в 8 лет) и карент (раз в пару дней).

Ответить | Правка | Наверх | Cообщить модератору

9. "Сборка deb-пакета для решения проблем с плагином nvim-cmp для neovim в Debian 13"  +/
Сообщение от нах. (?), 25-Сен-25, 08:03 
> Для этого все эти "configure && make && make install" надо делать не руками,

ты феноменальный...

Эта операция делается в таких вот случаях - ОДИН раз. Причем - вполне возможно - итеративно, с первой попытки ты ошибешься с аргументами configure - забудешь нужную фичу или включишь ненужную, мэйк сфейлится потому что ты забыл про какую-то из зависимостей, конфиг уедет в local а нужен в /etc. И это СОВЕРШЕННО незачем автоматизировать.
И при выходе следующей версии придется переделывать потому что появилась новая зависимость и у сonfigure новый аргумент.
Поэтому - именно руками, пока не получится что-то съедобное.

> Ну лаааадно... вместо "make install" делайте "make DESTDIR=/tmp/neovim install",
> запаковывайте /tmp/neovim в архив и распаковывайте где надо...

А как теперь - удалить, не оставив мусора и не зацепив ничего чужого? Как выяснить через два года, какая у тебя версия?
А вот dpkg за тебя все это помнит и автоматизирует. Эту операцию - автоматизировать - стоит. Тем более что, как видим, это один файлик на пять строчек.

> Я так с 2005 по 2018 на lfs сидел

ну что с подобных взять...

необучаемые же ж. Наглядное доказательство не то что бесполезности, а явного вреда lfs.
Вы учитесь выполнять чужие скрипты без понимания откуда они взялись и зачем вообще нужны.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру