Linux Mint страницы руководства требуют sudo, когда пейджер — neovim.

Вопрос или проблема

Если я использую sudo man, всё работает нормально, иначе я получаю

~$ man ls
fuse: mount failed: Permission denied

Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information
open dir error: No such file or directory

для справки, настройка MANPAGER в соответствии с помощью neovim

export MANPAGER='nvim +Man!'

команда :Man работает нормально внутри nvim.

Я не совсем понимаю, почему это происходит с MANPAGER, но следуя предложению в вашем сообщении об ошибке, я считаю, что это работает:

export MANPAGER='nvim --appimage-extract-and-run -c "set ft=man"'

ОБНОВЛЕНИЕ:

Предыдущее решение больше не работает в neovim >= v0.6.1. Следующий подход рекомендуется:

export MANPAGER='nvim +Man!'

Это вызвано песочницей AppArmor для man.

Мы можем добавить локальное переопределение, чтобы разрешить это:

/etc/apparmor.d/local/usr.bin.man

mount fstype=fuse.nvim options=(ro, nosuid, nodev) -> /tmp/**,
/usr/bin/fusermount Ux,

Ответ или решение

Конечно, рассмотрим проблему, связанную с использованием Linux Mint и неудачей команды man при заданном пейджере Neovim. Из вашего описания видно, что проблема возникает из-за ограничения прав доступа, что проявляется в сообщении об ошибке связанных с FUSE и AppImage.

Проблема и её возможные причины

При попытке вызова man ls без привилегий sudo, вы сталкиваетесь с ошибкой:

fuse: mount failed: Permission denied

Cannot mount AppImage, please check your FUSE setup.

Вы задали переменную окружения MANPAGER как nvim +Man!. Это предполагает, что Neovim пытается использовать функционал FUSE для работы с AppImage, но не может получить доступ по причине ограничений безопасности.

Основные причины ограничений

  1. AppArmor: AppArmor — это система Mandatory Access Control (MAC), которая накладывает дополнительные ограничения на выполнение приложений. В вашем случае она ограничивает возможности команды man использовать FUSE.

  2. FUSE: FUSE (Filesystem in Userspace) требует определенных прав для монтирования файловых систем, и процесс может быть ограничен настройками безопасности системы.

Решение проблемы

Шаг 1: Изменение профиля AppArmor

Поскольку AppArmor блокирует вашу попытку использовать FUSE с man, вам нужно создать локальное правило для команды man. Для этого выполните следующие шаги:

  1. Создайте или отредактируйте файл /etc/apparmor.d/local/usr.bin.man следующим содержимым:

    mount fstype=fuse.nvim options=(ro, nosuid, nodev) -> /tmp/**,
    /usr/bin/fusermount Ux,
  2. Перезагрузите профиль AppArmor с помощью команды:

    sudo apparmor_parser -r /etc/apparmor.d/usr.bin.man

Шаг 2: Убедитесь в корректности установки FUSE

Предупреждение об ошибке указывает на проблему с монтированием AppImage, поэтому убедитесь, что FUSE правильно настроен. Для этого убедитесь, что пакет FUSE установлен:

sudo apt install fuse

Альтернативное решение

Если указанное решение не устраняет проблему или у вас более новая версия Neovim, проверьте актуальность команд:

export MANPAGER='nvim --headless -c "Man! %:p" -c "wincmd p"'

Эта команда обеспечивает вызов нативного режима Neovim без графического интерфейса, что может быть более совместимым с настройками системы.

Заключение

Разрешение заданной проблемы требует изменения политик безопасности AppArmor и проверки конфигурации FUSE. Убедитесь, что внесенные изменения не оказывают негативного влияния на системную безопасность. Все действия выполняйте с пониманием возможных последствий для системы.

Оцените материал
Добавить комментарий

Капча загружается...