One of the programs I use a lot on all my computers is Calibre, the E-book library management system. My wife and I both have Kobo e-readers, and on my Android phone I use FBReader to read my books on the road whenever I have some free time.
Having Calibre on a computer still requires a USB cable to transfer e-books from the computer to your ereader/phone, but networked alternatives exist. Calibre comes with a content server which can make your e-book library accessible online (on your LAN or on the Internet). Earlier versions of the Calibre content server were too resource-intensive and therefore I have chosen another solution for online access to my books. That’s COPS. which is short for “Calibre OPDS PHP Server“. OPDS (Open Publication Distribution System) Is the protocol through which E-readers can access online libraries. COPS allows me to download new books to read from my Calibre library over the wireless network to both my Kobo e-reader and to FBReader on my phone. No more cables needed!
Calibre is of course more than a library manager and a content server – the software comes bundled with its own e-book reader, a format converter, and an e-book editor!
Calibre is written in Python. For its graphical interface it heavily uses PyQt5 which in turn is based on Qt5 libraries.
I have been offering calibre packages in my repository for over eight years, starting with the 0.7.20 release as far as I could see (then still Qt4 based). This roughly coincided with my wife buying her first E-reader. The program has evolved a lot over the years and is much better than the proprietary library management software that ships with the major E-reader hardware.
Kovid Goyal is the primary developer, and he released a new major version of Calibre a few weeks ago. The new 4.x series delivers a completely re-written reader, a new content server with basically the same management and editing capabilities as the calibre desktop program, and a stark increase in amount and version numbers of the dependent software. For instance, Calibre 4 now depends on features in Qt 5.13.0 and PyQt 5.13.0. Several new pieces of sofware are listed in the dependencies list now, which were not required for Calibre 3.
The challenge was to create a solid Slackware package for Calibre 4. I know, you can simply download pre-built binaries for a generic Linux platform, and SlackBuilds.org even offers a build script to package these binaries for you, but it is much more fun, and very educational, to compile all of it yourself. In addition you’ll get binaries which are native to your Slackware distro instead of having to resort to binaries that were compiled on Ubuntu or Debian and do unpeakable things to your system when you’re not looking.
Luckily I have taken a week off from work, so I had time to spend on a rewrite of calibre.SlackBuild.
I also decided to do away with external dependencies. Until now, you would have to install podofo and unrar in order to fully use Calibre’s functionality. WIth my new calibre-4 package all dependencies are bundled inside. This includes Python 2.7.17 and Qt 5.13.1 as well as podofo and unrar libraries. This bundling makes it possible to build a fully functional Calibre on Slackware 14.2 (I had to add a newer version of the hunspell spell-checker because Slackware 14.2 has a version that is too old).
You can still compile a calibre package without all these internal libraries. For instance if you already have Qt 5.13.1 installed you can reduce the size of the package significantly by recompiling it. The calibre.SlackBuild will find your Qt5 libraries and won’t compile an internal version then. Same for Python 2.7. But I would recommend building the package always with the python interpreter and the slew of python modules included. It does not take that much time and you’ll be independent of updates in Slackware. Also, I do not offer packages for all those required Python modules anyway.
Here’s a couple of example command lines in case you would want to recompile. If you want create a package without any external dependency:
# BUILD_QT=YES BUILD_PYTHON=YES BUILD_MTP=YES ./calibre.SlackBuild
In case you already have Qt 5.13.0 or newer installed and want to shrink the size of the package:
# BUILD_PYTHON=YES ./calibre.SlackBuild
Note:
On Slackware 14.2 you will have to install meson, python3 and python3-setuptools from my repository or else the compilation will fail. Slackware-current contains all of them already.Note:
If you have issues with Calibre 4 and think you can convince me to re-add a Calibre 3 package to my repository, let me know in the comments section below.Note:
If you use XFCE or some other desktop environment which does not support StatusNotifier (and only supports the old X11 based XEmbed specification like the systray), then Calibre will not be able to display its system tray icon. You will have to install ‘xfce4-statusnotifier-plugin’ and its dependency ‘libdbusmenu-gtk’. Both are available as packages in my repository. After installing, right-click on the XFCE status bar, select ‘Panel > Add new items’ and add ‘Status Notifier Plugin’.
Get the new ‘calibre-4.2.0‘ package from my repository (or any mirror) and enjoy your e-book library!
If you want to know how to properly setup COPS and serve your e-book library on the internet (with or without authentication) let me know and I will devote an article to the topic. Perhaps in more generic terms, I should address the topic of reverse proxying.
Eric
Cool, thanks! Calibre is seriously nifty.
And I sprung for the paid version of FBReader for my phone, just because I use it so much.
Yes I paid for my FBReader too. That, and BubbleUPnP and MX Player are the ones I paid for on my phone. Now that there’s a properly working VLC for Android I would not pay for MX Player anymore, but at the time there was no good media player available for free,
A COPS setup article will be appreciated. Thanks Eric!
Fantastic Eric – I spent a large portion of last night updating my library : )
I still find the calibre interface to be a bit busy but otherwise it’s great.
I have updated the main article with instructions on how to make the Calibre system tray icon visible in XFCE.
Much appreciate your Calibre easy-install. I don’t read using Calibre gui preferring commandline ebook-viewer & ebook-convert with occasional use of ebook-meta & ebook-polish to restore book covers when they disappear for some unknown reason.
Also I create my own .epub’s that include book series read order & other useful info. I create a simple .html then convert it to .epub – easy peasy.
Thank you *very* much for that! I was stuck in some calibre 3.* binary version taken from the official website for ages on 14.2. Thanks to you, I can now have an up to date Calibre on my system!
Is there an updated SlackBuild for Calibre 5.16.1 (Python3 only)?
I am sorry, no. The effort required to change the calibre.SlackBuild from Python 2 to 3 is too much to fit my overloaded life. Perhaps some future time – most likely that will happen when I find that the 4.x package no longer works for me and I have to give it priority.
Calibre is complex.