Вопрос или проблема
Если я использую 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, но не может получить доступ по причине ограничений безопасности.
Основные причины ограничений
-
AppArmor: AppArmor — это система Mandatory Access Control (MAC), которая накладывает дополнительные ограничения на выполнение приложений. В вашем случае она ограничивает возможности команды
man
использовать FUSE. -
FUSE: FUSE (Filesystem in Userspace) требует определенных прав для монтирования файловых систем, и процесс может быть ограничен настройками безопасности системы.
Решение проблемы
Шаг 1: Изменение профиля AppArmor
Поскольку AppArmor блокирует вашу попытку использовать FUSE с man
, вам нужно создать локальное правило для команды man
. Для этого выполните следующие шаги:
-
Создайте или отредактируйте файл
/etc/apparmor.d/local/usr.bin.man
следующим содержимым:mount fstype=fuse.nvim options=(ro, nosuid, nodev) -> /tmp/**, /usr/bin/fusermount Ux,
-
Перезагрузите профиль 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. Убедитесь, что внесенные изменения не оказывают негативного влияния на системную безопасность. Все действия выполняйте с пониманием возможных последствий для системы.