Вопрос или проблема
Я использую Manjaro Linux. У меня установлен texlive-most
.
Я пытаюсь создать pdf-файлы из md с помощью pandoc. Однако я постоянно получаю ошибки Permission denied
. Я пробовал использовать pdflatex
и pdfroff
.
Запуск с параметром --pdf-engine=pdflatex
:
$ pandoc test.md -o test.pdf
warning: kpathsea: конфигурационный файл texmf.cnf не найден в следующих директориях: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c.
kpathsea: Выполнение mktexfmt pdflatex.fmt
mktexfmt: Permission denied
warning: kpathsea: конфигурационный файл texmf.cnf не найден в следующих директориях: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c.
kpathsea: Выполнение mktexfmt pdflatex.fmt
mktexfmt: Permission denied
Ошибка при создании PDF.
Это pdfTeX, Версия 3.14159265-2.6-1.40.20 (TeX Live 2019/Arch Linux) (предварительно загруженный формат=pdflatex)
Не могу найти файл формата `pdflatex.fmt'!
Быстрое расследование:
$ ll /usr/bin/mktexfmt
lrwxrwxrwx 1 root root 7 Ноя 1 2019 /usr/bin/mktexfmt -> fmtutil
$ ll /usr/bin/fmtutil
lrwxrwxrwx 1 root root 48 Ноя 1 2019 /usr/bin/fmtutil -> /usr/share/texmf-dist/scripts/texlive/fmtutil.pl
$ ll /usr/share/texmf-dist/scripts/texlive/fmtutil.pl
-rwxr-xr-x 1 root root 49K Ноя 1 2019 /usr/share/texmf-dist/scripts/texlive/fmtutil.pl
$ locate pdflatex.fmt
/var/lib/texmf/web2c/pdftex/pdflatex.fmt
$ ll /var/lib/texmf/web2c/pdftex/pdflatex.fmt
-rw-r--r-- 1 root root 7.7M Июн 5 09:27 /var/lib/texmf/web2c/pdftex/pdflatex.fmt
Запуск с --pdf-engine=pdfroff
:
$ pandoc --pdf-engine=pdfroff test.md -o test.pdf
pandoc: pdfroff: createProcess: runInteractiveProcess: exec: permission denied (Permission denied)
Запуск pandoc
с sudo
работает, но я бы предпочел не использовать sudo
для генерации pdf. Я вижу, что mktexfmt
имеет права execute
, а pdflatex.fmt
имеет права read
для всех. Я также хотел бы использовать по умолчанию pdflatex
, а не другой движок.
Как мне решить эту проблему с Permission denied
?
Я разобрался в проблеме. Я запустил sudo firecfg
после установки pandoc, что привело к тому, что pandoc
оказался символической ссылкой и оказался в песочнице firejail. Проблема была решена с помощью sudo rm /usr/local/bin/pandoc
, который удаляет символическую ссылку pandoc от firejail, фактически убирая pandoc из песочницы.
Ответ или решение
Как исправить ошибку "Permission denied" при использовании Pandoc на Manjaro Linux
Ошибка "Permission denied" (доступ запрещён) при попытке сгенерировать PDF-файлы из Markdown-документов с помощью Pandoc на Manjaro Linux может возникать по различным причинам. Давайте разберёмся с проблемой более подробно, обращая внимание на ключевые аспекты и предлагая возможные решения.
1. Описание проблемы
Вы столкнулись с ошибками, связанными с разрешениями при использовании Pandoc и движка PDF, такого как pdflatex
или pdfroff
. Рассмотрим конкретные сообщения, которые вы получили:
-
Ошибка с
pdflatex
:kpathsea: Running mktexfmt pdflatex.fmt mktexfmt: Permission denied
Это указывает на то, что процесс не может создать или получить доступ к нужному формату
pdflatex.fmt
. -
Ошибка с
pdfroff
:pandoc: pdfroff: createProcess: runInteractiveProcess: exec: permission denied (Permission denied)
Это говорит о том, что Pandoc не имеет разрешения на выполнение
pdfroff
.
2. Анализ среды
Вы также отметили, что выполнение команды с использованием sudo
решает проблему:
$ sudo pandoc test.md -o test.pdf
Это говорит о том, что у вас могут быть проблемы с правами доступа для пользователей, не обладающих административными правами. Но использование sudo
для повседневных задач не рекомендуется из соображений безопасности.
3. Возможные причины
Основными причинами ошибок могут быть:
-
Ошибочная конфигурация прав доступа:
Если необходимые файлы или каталоги имеют ограниченные права, вы можете столкнуться с проблемами доступа. -
Проблема с Firejail**:
Использование утилиты безопасности Firejail может ограничивать права доступа для приложений. Вы упомянули, что запускалиsudo firecfg
, что могло создать символическую ссылку на Pandoc, из-за чего он оказался в "песочнице".
4. Решение проблемы
Судя по вашему последнему обновлению, вскоре после исследований вы нашли решение, которое устраняет проблему:
$ sudo rm /usr/local/bin/pandoc
Это удаляет символическую ссылку Pandoc, созданную Firejail, и возвращает его в нормальное состояние без песочницы.
Заключение и рекомендации
-
Используйте Pandoc без
sudo
: Убедитесь, что разрушающая команду для удаления символической ссылки была выполнена, и теперь вы можете запускать Pandoc без необходимости получать административные права. -
Проверьте права доступа: Если в дальнейшем вы столкнётесь с проблемами доступа, проверьте права доступа к нужным файлам и каталогам, связанных с TeX и Pandoc.
-
Изучите Firejail: Если вы хотите продолжать использовать Firejail для обеспечения безопасности, подумайте о том, как правильно настроить его для работы с Pandoc, минимизируя ограничения.
Эти шаги помогут вам решить проблемы с доступом и обеспечить беспроблемную работу Pandoc в вашем окружении Manjaro Linux.