Вопрос или проблема
ocrmypdf не удается для некоторых ID на 24.04. Исключением является ID, который выполнил sudo apt install ocrmypdf, работает корректно. Запуск sudo ocrmypdf также работает. Почему он не работает для всех, кроме ID, который выполнил sudo apt install? Все ID на системе 22.04 могут запускать ocrmypdf.
Строка текста, представляющая ошибку, следующая:
An exception occurred while executing the pipeline _sync.py:473
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/ocrmypdf/_sync.py", line
409, in run_pipeline
optimize_messages = exec_concurrent(context, executor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ocrmypdf/_sync.py", line
315, in exec_concurrent
pdf, messages = post_process(pdf, context, executor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ocrmypdf/_sync.py", line
247, in post_process
return optimize_pdf(pdf_out, context, executor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ocrmypdf/_pipeline.py", line
1009, in optimize_pdf
output_pdf, messages =
context.plugin_manager.hook.optimize_pdf(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^
File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501,
in __call__
return self._hookexec(self.name, self._hookimpls.copy(),
kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line
119, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs,
firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line
138, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line
102, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/usr/lib/python3/dist-packages/ocrmypdf/builtin_plugins/optimize.p
y", line 151, in optimize_pdf
'jbig2': jbig2enc.available(),
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ocrmypdf/_exec/jbig2enc.py",
line 22, in available
version()
File "/usr/lib/python3/dist-packages/ocrmypdf/_exec/jbig2enc.py",
line 17, in version
return Version(get_version('jbig2', regex=r'jbig2enc
(\d+(\.\d+)*).*'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^
File
"/usr/lib/python3/dist-packages/ocrmypdf/subprocess/__init__.py",
line 159, in get_version
proc = run(
^^^^
File
"/usr/lib/python3/dist-packages/ocrmypdf/subprocess/__init__.py",
line 63, in run
proc = subprocess_run(args, env=env, check=check, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 548, in run
with Popen(*popenargs, **kwargs) as process:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.12/subprocess.py", line 1955, in
_execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: 'jbig2'
Ответ или решение
Ваша проблема связана с неудачей при запуске ocrmypdf
для некоторых учетных записей на 24.04, при этом она успешно работает только для пользователя, выполнившего установку с помощью sudo apt install ocrmypdf
. Запуск команды с использованием sudo ocrmypdf
также проходит успешно. Однако, в аналогичной системе 22.04 все учетные записи могут выполнять ocrmypdf
без каких-либо ошибок. Давайте рассмотрим возможные причины и решения этой проблемы.
Теория: Понимание проблемы
Основная ошибка, с которой вы столкнулись, — это PermissionError: [Errno 13] Permission denied: 'jbig2'
. Эта ошибка указывает на то, что ocrmypdf
пытается получить доступ к бинарному файлу jbig2
, но не имеет надлежащих разрешений для выполнения этой команды. Поскольку команда работает под sudo
или для пользователя, который выполнял установку, это указывает на потенциальную проблему с правами доступа или конфигурацией окружения для других пользователей.
Когда вы запускаете sudo apt install ocrmypdf
, программа может быть установлена с зависимостями и правами, доступными только для администратора или для пользователя, выполнившего команду установки. Это может вызвать проблему с доступом к необходимым ресурсам для других пользователей без административных привилегий.
Пример: Объяснение на примере
Предположим, у вас есть два пользователя: admin
, выполнивший установку ocrmypdf
, и user
, который также хочет запустить ocrmypdf
, но сталкивается с указанной выше ошибкой. Для admin
установка прошла успешно и все бинарные файлы, такие как jbig2
, доступны. Когда user
пытается использовать ocrmypdf
, он сталкивается с отсутствием доступа к jbig2
, что вызывает исключение.
Ошибка возникает из-за того, что установка, вероятно, добавила бинарные файлы или библиотеки в путь или директорию, доступную только admin
или администраторам системы. Альтернативно, установка могла использовать системные пути или библиотеки, доступные только для sudo
.
Применение: Решение проблемы
Чтобы устранить эту ошибку, необходимо убедиться, что все нужные бинарные файлы и зависимости имеют правильные разрешения и могут быть выполнены всеми пользователями, которые должны иметь возможность использовать ocrmypdf
. Рассмотрим шаги, которые помогут решить эту проблему:
-
Проверка разрешений: Убедитесь, что бинарный файл
jbig2
и другие зависимости имеют правильные права доступа. Это можно сделать с помощью командыls -l /path/to/jbig2
, которая покажет текущие права доступа. Необходимо, чтобы файл был доступен для чтения и выполнения всеми нужными пользователями. -
Настройка PATH: Убедитесь, что директория, содержащая
jbig2
, добавлена в переменнуюPATH
всех пользователей, которые должны иметь доступ кocrmypdf
. Это можно сделать, добавив соответствующий путь в файл.bashrc
или.profile
пользователей. -
Проверка установленного программного обеспечения: Убедитесь, что все зависимости, необходимые для работы
ocrmypdf
, установлены и доступны всем пользователям. Это может включать в себя утилиты для обработки PDF или библиотек, которыеocrmypdf
требует для выполнения. -
Использование ограниченной установки: Если предыдущие шаги не решат проблему, рассмотрите возможность использования установки
ocrmypdf
через виртуальное окружение или в контейнеризованной среде, что может снизить проблемы с доступом и зависимостями. -
Документация и поддержка: Найдите дополнительную информацию по настройке
ocrmypdf
для многопользовательской среды в официальной документации или обращайтесь за поддержкой в сообщества пользователей Ubuntu илиocrmypdf
.
С правильной настройкой разрешений и окружения, фактическое применение решит проблему, и все пользователи смогут использовать ocrmypdf
без необходимости прибегать к административным правам.