ошибка pandoc: Доступ запрещен

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

Я использую 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.

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

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