Вопрос или проблема
На моем 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
. Если у вас есть дополнительные вопросы или пожелания, не стесняйтесь спрашивать!