26

Calibre stopped working recently. Tried uninstalling and reinstalling.

When I open a terminal and call $calibre I get the following error message:

Traceback (most recent call last):
  File "/usr/bin/calibre", line 20, in <module>
    sys.exit(calibre())
  File "/usr/lib/calibre/calibre/gui_launch.py", line 73, in calibre
    main(args)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 543, in main
    listener = create_listener()
  File "/usr/lib/calibre/calibre/gui2/main.py", line 514, in create_listener
    return Listener(address=gui_socket_address())
  File "/usr/lib/calibre/calibre/utils/ipc/server.py", line 110, in __init__
    self._listener._unlink.cancel()
AttributeError: 'NoneType' object has no attribute 'cancel'

Do I need to install some dependency that the sudo apt install didn't get? I tried installing via command line and the software installer/updater GUI.

I'm on version Ubuntu 20.04.1 LTS. I made sure that my software in general is up to date also.

rory
  • 363
  • 1
  • 3
  • 6
  • 3
    From what I can see, Calibre 4.99 and under (which is what is in the 20.04 repos) was written for Python 2 and not Python 3. Calibre released version 5 for Python 3 which I wish was in the repos, but you can install it from https://calibre-ebook.com/download_linux 20.04 no longer has Python 2. – Terrance Oct 20 '20 at 18:53
  • @Terrance that did it thanks. Please make it an answer so I can mark it accordingly – rory Oct 20 '20 at 18:59
  • installing the newer version (now it was 5.5) from the suggested link has worked like a charm – Quaesitor Veritatem Nov 20 '20 at 19:47

6 Answers6

33

Unfortunately, at this moment the version of Calibre that is in the 20.04 repos is version 4.99 which does not work with Python 3. To make 4.99 work you would have to patch a file yourself as shown in the bug https://bugs.launchpad.net/ubuntu/+source/calibre/+bug/1898904 or you could download it from a different repository. Either way, Canonical has not patched 4.99 to work with 20.04 yet in the official repositories.

Also, quoted from Calibre themselves:

Please do not use your distribution provided calibre package, as those are often buggy/outdated. Instead use the Binary install described below.

You can download it from https://calibre-ebook.com/download_linux

You can also run the command from that site to install it (which is actually easier to install with):

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

I have added the above command to a script called install_calibre so that I can run it anytime to update my Calibre to the newest version.

Hope this helps!

Terrance
  • 39,774
  • 7
  • 116
  • 176
  • There is a patch here - https://bugs.launchpad.net/ubuntu/+source/calibre/+bug/1898904 . – N0rbert Oct 20 '20 at 19:19
  • 2
    @N0rbert Thanks for that. Reading this https://github.com/kovidgoyal/calibre/commit/7b6416ac6522fc40f24f6baf3ca552b17a8b91d6 People are blaming Canonical for not upgrading the repo to 5. The patch doesn't look like it would be something super easy to install. Just my thoughts on it. – Terrance Oct 20 '20 at 19:24
  • 1
    I have requested a package sync https://bugs.launchpad.net/ubuntu/+source/calibre/+bug/1901921 – memeplex Oct 28 '20 at 17:08
  • BTW, it's not fair to blame Canonical on this since the package is in Universe, it's community maintained. – memeplex Oct 28 '20 at 17:09
  • @memeplex I wasn't blaming them. It was people in the comments that were. – Terrance Oct 28 '20 at 17:11
  • 1
    Ubuntu 21.04 default repositories will have Calibre 5.3 that works with Python 3. – karel Oct 30 '20 at 00:02
  • 1
    installing the current v5.5 from the suggested link has worked like a charm – Quaesitor Veritatem Nov 20 '20 at 19:48
  • 1
    This is *not* a Python 3 issue. Version 4.99 works well in Python 3. The crash is caused by [bug #1898904](https://bugs.launchpad.net/ubuntu/+source/calibre/+bug/1898904); see other answer. – bitinerant Dec 15 '20 at 06:19
  • A few days ago, Calibre (*version 4.99x) was installed and working. I did not uninstall it! And yet, it dissapeared from menus and nothing happened typing calibre in terminal. I don't recall what updates I applied in that time frame, it was only something like a security patch (probably Python) and somehow that silently uninstalled Calibre! running the " sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin " installed version 5.29 (october 2021) which works, but lost all my preferences for the UI. – fixitmanarizona Oct 11 '21 at 05:09
  • If I already installed the distribution version (which indeed is not working) should I uninstall it first (how?)? – Kvothe Dec 06 '21 at 23:50
  • @Kvothe `sudo apt remove calibre` should do it. – Terrance Dec 06 '21 at 23:51
9

To fix this, it is not necessary to abandon Calibre 4.99. The cause of the crash is documented in bug #1898904, which can be fixed with a one-line patch. To manually apply the patch:

  • open Terminal
  • type: sudo gedit /usr/lib/calibre/calibre/utils/ipc/server.py
  • in Gedit, go to line 110
  • change the line:
                self._listener._unlink.cancel()
    
  • to:
                if self._listener._unlink is not None:
                    self._listener._unlink.cancel()
    
  • save and close Gedit

This change will be overwritten when Calibre is updated, but of course it won't matter because this bug has been fixed in the next version of Calibre.

bitinerant
  • 819
  • 8
  • 14
3

Sorry for interupting, This may not be an ideal go around, but maybe a temporary solution. I also face the same problem, in my Ubuntu 20.04, and I decided to install the flathub version instead and its being running fine up till now.

https://flathub.org/apps/details/com.calibre_ebook.calibre

2

Calibre is working properly again.

Calibre has been updated in Ubuntu 20.04 and later. The latest version of Calibre from the Ubuntu 20.04 default repositories is working properly again.

karel
  • 110,292
  • 102
  • 269
  • 299
1

https://download.calibre-ebook.com/4.html

Go to this site and download previous version. extract the file run the Calibre file (which as no extension) just double click.

Ravexina
  • 54,268
  • 25
  • 157
  • 179
sharath
  • 11
  • 1
0

Check on the launchpad the corrected packages. They are made from the patch metioned above. First install the bin package and then the alldeb. In that way no need to add ppa, flatpack or manually install sh scripts.

Beernarrd
  • 386
  • 1
  • 5