«

Fix missing libgcrypt11 for Brackets text editor

Note: This problem appears to be fairly widespread of late. There is an issue on the Brackets GitHub repository as well as an article on WebUpd8 discussing the topic.

Adobe’s Brackets text editor has a problem on recent distribution releases like Debian Jessie and Ubuntu Vivid. It has a dependence on libgcrypt11 which has been superseded by libgcrypt20 and is no longer supplied by distro repositories. Having libgcrypt20 is not sufficient, so we must manually install an old libgcrypt11 .deb or bundle the libgcrypt11 shared library with the Brackets package. Unless you have other packages that depend on libgcrypt11, I think bundling is the superior option.

It would be nice if the Brackets development team took care of this (as the developers of Atom have done), but alas they do not. Luckily this is pretty easy to do ourselves.

You’ll need to have a few things on hand: Brackets .deb package, libgcrypt.so.11, and debtool

debtool is a handy script I’ve created to help manipulate Debian packages. You can use dpkg primitives instead, but debtool makes things much simpler.

I’ve included links to libgcrypt.so.11 for amd64 and i386. Alternatively you can download a libgcrypt11 package from Debian or Ubuntu repositories and extract the library yourself.

Once you’re ready, here are the steps:

  1. Unpack Brackets

     debtool -u ./Brackets.Release.1.7.64-bit.deb
    
  2. Remove the package’s dependence on libgcrypt11

     sed -i 's/ libgcrypt11 (>= [0-9.]\+),//' ./brackets_1.7.0-16898_amd64/DEBIAN/control
    
  3. Copy the library into the unpacked package directory

     cp ~/Downloads/libgcrypt.so.11 ./brackets_1.7.0-16898_amd64/opt/brackets/
    
  4. Rebuild the package

     debtool -b ./brackets_1.7.0-16898_amd64/
    
  5. Install brackets_1.7.0-16898_amd64.deb (the newly created package)

In case it’s not clear what is being done, I’m simply removing the dependence on libgcrypt11 and including the library in the package. You should also note that the Atom text editor bundles libgcrypt.so.11 in the same way.

Brackets’ dependency on libgcrypt11 is due to brackets-shell’s use of the Chromium Embedded Framework (CEF), a framework for embedding Chromium-based browsers in other applications. The Linux release of Brackets currently uses CEF 1547, a somewhat ancient branch. The Brackets dev team has been in the process of migrating to CEF 2171 (which depends on libgcrypt20) for quite some time, but there appear to be a number of issues holding things behind.

Once the new CEF has been integrated successfully, developers may want to entertain the thought of dependence on the distribution’s libgcrypt20 package. Until then, I propose bundling libgcrypt.so.11 with the package.


Downloads

For people who would like to skip the above steps, I’ve repackaged the official releases and made them available below:

Release 1.7

Release 1.6 + Extract bundle

Release 1.6

Release 1.5 + Extract bundle

Release 1.5