Tag Archives: ebook

Calibre 4.2.0 for Slackware with no external dependencies

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!

FBReader on Android

FBReader accesses e-book library via COPS

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

Calibre 3.30.0 for Slackware with internal Qt5 libraries

It took me quite a while to release a new package for Calibre, the e-book library manager. That had a reason.

In July I switched the Qt5 package in my repositories to version 5.11 to support the latest KDE Plasma5 software and because it offers advantages over the previous 5.9 releases. Unfortunately, as I found out soon afterwards, the Calibre software fails to work with Qt 5.11 – its GUI components were not built and there was no obvious error to explain why.

Therefore I had to re-visit the calibre.SlackBuild‘s internals and try to revive the internal functions that compile an embedded Qt library set. This was last tested in the early days of my Calibre packages when Qt4 was the running champion. Adding internal Qt5 support was quite a different beast. Qt5 is a lot bigger than the venerable Qt4 so the build process needed some pruning to keep the compilation times acceptable and the package size under control.

That took a full week’s nights of compiling, debugging, recompiling and so on… hence the lack of updates on the ‘ktown’ front where I should perhaps pay some attention to a recent poppler update in slackware-current. But I managed to add Qt 5.9 internal library support to the calibre package.
My package for Slackware 14.2 still depends on an external ‘qt5’ package (to keep the package size small and because calibre works just fine with the qt 5.7 which is available from my own repository and the SBo script repository). The package for Slackware -current on the other hand was built with an embedded Qt 5.9, which means that its external dependency list shrunk to just ‘podofo’ and ‘unrar’.

Grab the new ‘calibre’ package and enjoy your e-book library!

New calibre packages – finally

calibreicoIt’s been nearly ten months since my last package for Calibre. What’s Calibre again I hear you ask? It is the highly popular E-book library management program with support for any E-Reader you can think of. I doubt that anyone who tried Calibre will ever switch back to one of the proprietary library management programs that commonly ship with E-Reader devices because Calibre transfers your E-books to and from your E-Reader device with ease. Calibre also contains an excellent E-book reader program for your desktop – even an EPUB editor comparable to Sigil. It will let you convert E-books from one format to another and allows you to subscribe to lots of news sites.

Last year august, the Calibre software switched from Qt4 to Qt5 for its user interface, and I was not yet prepared to follow suit. Running up to that month I had been working long and hard on the new KDE 5 preview and that was my first encounter with Qt5 – I decided to wait a bit for the new Calibre to mature and also I wanted to wait with adding Qt5 to my slackbuilds repository (the qt5 in ‘ktown_testing’ was just that, for testing KDE 5 and nothing production-ready).

During the previous couple of weeks I enjoyed several long weekends due to national holidays, and so it happened that I could spend some time re-visiting the calibre.SlackBuild and updating it so that it was able to compile a package for Calibre 2.x.

I wanted as few external dependencies as possible. The exception would be Qt5 which should be a proper package in its own right – it is too big to become a mere part of a calibre package. I ended up with just “podofo” and “qt5” as dependencies and I am now in the process of uploading the qt5 packages for slackware-current… something I forgot earlier this week. I borrowed them from my ktown_testing repository in order to compile Calibre.

But I also want to keep the older Qt4 version of Calibre (the 1.x releases) around for those who like that better or do not want the big Qt5 on their computer. So I renamed my SlackBuild for the 1.x version to “calibre1.SlackBuild“. I then recompiled calibre-1.48.0 for Slackware-current because the previous build of the package was broken after the recent big update and I still needed to address that issue. That is why you will find a “calibre” as well as a “calibre1” package in the repositories for Slackware 14.1 and -current. Take your pick.

Enjoy a shiny new Calibre 2.28.0 on Slackware (14.1 and -current)!

Eric

Calibre reaches 1.0 after nearly 7 years of development

calibreicoI am fully occupied this week and the next with training my new helpdesk team, so it took me a bit by surprise when tweeted that there was a version 1.0 of Calibre since this morning. Kovid Goyal, developer of Calibre, published the news in a blog post. It’s nearly seven years since Kovid started with Calibre – this was the time when the first E-ink based ereader device, SONY PRS-500, hit the market. At first, Calibre was merely a library which was able to convert e-book formats into Sony’s LRF format. It got ‘upgraded’ with a graphical user interface to manage Kovid’s growing ebook library.

There have been 44 increments in the 0.9.x series of Calibre. During that period of development, the program got powered by a new optimized database engine, you can now sub-divide your library into smaller virtual collections, and many improvements have been made to the importing, converting, polishing and exportering of digital book formats (including the .docx file format).

I try to maintain an up-to-date version of my custom-built Calibre package (and a fairly successful package it is!). Calibre is invaluable to anyone in the possession of an E-Reader or even just a collection of E-Books. I use it every day – one of Calibre’s many functions is to download my daily (paid) newspaper in EPUB format, so that I can access the newspaper (today’s and all previous days’editions) anywhere I have an internet connection.

I realize that the Calibre web site urges you to download the developer’s own distro-agnostic installer – it is the only binary version of Calibre he will support – but to me the calibre.SlackBuild has been a learning experience akin to developing my SlackBuild script for VLC, only this time for a Python-based program. Been lots of fun! Also, a proper Slackware package is a more appropriate way of installing software in Slackware.

I hope you give the new Calibre 1.0 package a spin. I made packages available for Slackware releases 13.37, 14.0 and -current. While the Slackware 13.37 package is pretty much self-contained (you only need podofo and icu4c installed additionally), the package for newer Slackware releases is a lot smaller, but has many external dependencies: BeautifulSoup, dnspython, podofo, pycrypto, pysetuptools, python-apsw, python-cssselect, python-cssutils, python-dateutil, python-imaging, python-lxml, python-mechanize, python-netifaces and python-psutil (note: python-apsw is a new dependency since the previous version). All of these packages can be found in my repository as well, of course.

Kovid, thanks for this nice piece of software.

Readers, have fun!

Eric

Packages for LibreOffice 3.6.5, calibre and steamclient, and lots of movement on the horizon

Yes, I finally got rid of the flu – but it took a week. I lost some weight (and I am not overweight so I am looking starved now), I still have a bad cough and my lower back muscles are strained and painful because of the continuous coughing. Otherwise I am fine.

I had a bit of a Slackware backlog which I am getting rid of now, thanks to my automated build scripts (creating these packages took time, not effort).

LibreOffice

The Libre Office developers had published their 3.6.5 release last week, and I finally felt good enough to build packages. I did a quick examination and it appears that the opening/saving of password-protected files is finally working! Other bugfixes are documented in the release notes. That shows a fairly long list, let’s hope 3.6.5 is going to be rock stable for everyone. It is the last 3.x release before moving on to 4.0.0 in February.

These LibreOffice 3.6.5 packages have been built on Slackware 13.37. They can be installed on Slackware 14 as well, but there seem to be some dynamic linking errors, so I assume that some functionality is broken. I have not yet found where that happens, though. If you find any issues on Slackware 14 please tell me.

The next series, 4.x ,will be compiled on Slackware 14.0 and that will be the end of the library errors in any case. Modifying the libreoffice.SlackBuild script for the 4.x release required real effort! I am running LibreOffice 4.0.0_RC2 here on the desktop machine and it will be worth it, I promise. I will wait with making my new packages public until the official stable 4.0.0 release, so be patient for now please… Those who are still on Slackware 13.37 will have a good fallback choice with LibreOffice 3.6.5.

Downloads are available here, as usual:

Remember, you can add more functionality by installing extensions. LibreOffice extensions are available from http://extensions.libreoffice.org/extension-center

steam

Steam client

I also updated my steamclient package with a re-packaging of Valve’s latest binary release (a debian package for Ubuntu actually): 1.0.0.22. I am going to write a separate blog entry about Steam this weekend so I am not lingering here too long. Rest assured that the new package will rid you of the annoying “outdated client” errors and works like a charm (mostly).

calibreico

Calibre Ebook Management

And I am again in line with the weekly updates of Kovid Goyal, developer of Calibre. I still maintain an up-to-date version of my custom-built package because I think it is an important tool for anyone with an E-Reader who does not want to tie his hands to a commercial ebook management & library system. Calibre acts as my family’s library and using OPDS protocol, I do not even need a cable to download new books onto the reader. I just use the wireless network.

The Event Horizon!

The blog’s subject hinted that more is coming.. Indeed I already have my packages ready for KDE 4.10.0 but I am not yet releasing them yet… I am waiting for the official announcement next week (and maybe other packagers will find bugs in the meantime). It is looking cool and I am running it here with no issues. In fact I played several hours of Half-Life Deathmatch against my son (there’s a Linux Beta of that too, since this week on Steam – well worth the 10 bucks), and neither the new KDE nor Steam nor Half-life crashed. Also imminent is a new release of IcedTea, the build framework for OpenJDK which I use. That means, there will be a Slackware package for OpenJDK “7u12” or somewhat like that, very soon.

And last but certainly not least, the VideoLAN developers (who are currently partying at FOSDEM, Brussels) will have to come up fast with a fix for a critical vulnerability in the VLC player, which was divulged yesterday… I guess that you should not be opening ASF files in the meantime.

Eric