Установленный через Flatpak Calibre: не удается найти команду ebook-convert

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

На моем Linux Mint 22 Cinnamon (Wilma), основанном на Ubuntu 24.04 LTS (Noble).

В конце концов, я установил Calibre, несмотря на мое первоначальное неприятие, через Flatpak:

$ flatpak install flathub com.calibre_ebook.calibre

Установка прошла успешно, но оболочка не может найти команду ebook-convert (ссылка на официальную страницу руководства).

Один из способов решить это:

$ sudo updatedb
[sudo] пароль для vlastimil:

# - Нет вывода означает, что он все еще выполняется.
# - Как только он завершится, ваша подсказка снова появится.
# - Это может занять много времени, если нет быстрых SSD.

$ locate ebook-convert

/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/bin/ebook-convert
/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/lib/calibre/ebook-convert
/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/lib/calibre/bin/ebook-convert
/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/lib/calibre/resources/ebook-convert-complete.calibre_msgpack
/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/share/bash-completion/completions/ebook-convert

Вы можете увидеть два варианта. Если вы попробуете этот, вы получите ошибку, но второй работает:

/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/lib/calibre/bin/ebook-convert: ошибка при загрузке общих библиотек: libcalibre-launcher.so: невозможно открыть общий объект: Нет такого файла или каталога

Поскольку я использую Bash, я могу просто создать псевдоним для правильного файла (т.е. без /bin/ перед ebook-convert, например:

alias ebook-convert="/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/3ffcc2f6b264f6549554e88892c32eb48cd83386b8629e839bb693d2010aeaa6/files/lib/calibre/ebook-convert"

Рабочая команда:

$ ebook-convert

Использование: ebook-convert input_file output_file [options]

Преобразовать электронную книгу из одного формата в другой.

input_file - это входной файл, а output_file - выходной файл. Оба должны быть указаны в качестве первых двух аргументов команды.

Выходной формат электронной книги определяется по расширению выходного файла output_file. Выходной файл также может быть в специальном формате .EXT, где EXT - это расширение выходного файла. В этом случае имя выходного файла определяется по имени входного файла. Обратите внимание, что имена файлов не должны начинаться с дефиса. Наконец, если у выходного файла output_file нет расширения, то он обрабатывается как папка, и в эту папку записывается "открытая электронная книга" (OEB), состоящая из HTML-файлов. Эти файлы - это файлы, которые обычно передавались бы выходному плагину.

После указания входного и выходного файла вы можете настроить преобразование, указав различные параметры. Доступные параметры зависят от типов входных и выходных файлов. Чтобы получить справку по ним, укажите входной и выходной файл, а затем используйте параметр -h.

Для полной документации по системе преобразования смотрите
https://manual.calibre-ebook.com/conversion.html

Если вы передаете аргументы в ebook-convert, которые содержат пробелы, заключите аргументы в кавычки. Например: "/some path/with spaces"

Опции:
  --version       показать номер версии программы и выйти

  -h, --help      показать это справочное сообщение и выйти

  --list-recipes  Перечислить имена встроенных рецептов. Вы можете создать электронную книгу из
                  встроенного рецепта вот так: ebook-convert "Имя Рецепта.recipe"
                  output.epub


Создано Ковидом Гоялом <[email protected]>

Если у вас есть более лучшее решение, пожалуйста, поделитесь им, спасибо.

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

Проблема с командой ebook-convert в Flatpak-установке Calibre на Linux Mint 22

На вашей системе Linux Mint 22 (основанной на Ubuntu 24.04 LTS) возникла проблема: после установки инструмента Calibre через Flatpak команда ebook-convert не может быть найдена. Это распространенное затруднение, связанное с особенностями работы приложений, установленных через Flatpak.

Причина проблемы

Ваша проблема заключается в том, что приложение, установленное через Flatpak, не имеет прямого доступа к системным переменным среды и командам, доступным в обычной установке. Команда ebook-convert фактически существует в файловой системе Flatpak, но не включена в доступный путь для выполнения. Это объясняет ошибки, возникающие при попытке вызова команды напрямую в терминале.

Поиск команды ebook-convert

При использовании команды locate ebook-convert вы обнаружили путь к ebook-convert по состоянию:

/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/...
/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/.../bin/ebook-convert
/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/.../lib/calibre/ebook-convert

Однако при попытке запуска с первого пути возникает ошибка:

/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/.../bin/ebook-convert: error while loading shared libraries: libcalibre-launcher.so: cannot open shared object file: No such file or directory

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

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

Для того чтобы использовать ebook-convert, рекомендуемым решением является создание алиаса. Это решение уже возможно, как вы указали, и позволяет вам указать систему, где находится файл ebook-convert, что обеспечивает корректное выполнение команды.

Пример вашей команды для создания алиаса выглядит следующим образом:

alias ebook-convert="/var/lib/flatpak/app/com.calibre_ebook.calibre/x86_64/stable/.../lib/calibre/ebook-convert"

После добавления этой строки в ваш .bashrc или .bash_profile, вы сможете использовать команду ebook-convert в терминале, как и ожидалось.

Альтернативное решение с использованием Flatpak

Так как приложения Flatpak имеют своё окружение, вы можете запускать их используя команду Flatpak без создания алиасов. Попробуйте следующую команду:

flatpak run com.calibre_ebook.calibre ebook-convert

Такой способ запуска ebook-convert запускает его в контексте Flatpak, и все библиотечные зависимости будут доступны.

Заключение

Вы столкнулись с распространенным вопросом, связанным с использованием приложений в таком изолированном окружении, как Flatpak. Использование алиасов, либо запуск команды с flatpak run, позволит решить вашу проблему с ebook-convert. Если у вас есть дополнительные вопросы или пожелания, не стесняйтесь спрашивать!

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

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