August 7, 2018

Diffmerge on Arch Linux

As I might have mentioned before, I’m doing the “Complete Java Masterclass” by Tim Buchalka on Udemy. In lection 31, diffmerge is introduced, a closed source application to ease the process of reviewing differences in files and folders and to merge them.

The stress is on closed source. I use Linux, I install my software from repositories or compile sources. diffmerge is not so well known a program to be added to the repositories of most Linux distributions and certainly is not in the Arch Linux repositories. They do however offer a .deb and a .rpm package, so if you are on debian or Red Hat derivates, you are lucky, but if you are on Arch like I am, you’re out of luck. Almost.

There is of course the possibility to install .deb or .rpm packages on Arch Linux, but using another package manager besides pacman feels wrong, so I already decided to give up on installing diffmerge. After all, there’s the command line diff program and there’ll certainly be something to do merges, I could look into for the task.

Thanks to helixarch, I do not have to do so, at least not for the course in question, because honestly I consider knowing my command line tools an important thing. But here and now my task is to study Java, not command line.

helixarch wrote a bash in the AUR (Arch User Repository).

So you can get and install it (as this points to git rather than to a tar.gz file you need git clone instead of wget) and then just download diffmerge’s .deb package and run

 debtap -u

and then

 debtap $filename$.deb

You’ll be asked some simple questions and end up with a .tar.xz file. This can be installed with pacman -U.

In the end you have diffmerge installed on your system. If everytrhing went on your machine like on mine, it won’t work. Instead you get an error:

diffmerge: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by diffmerge)

Turns out diffmerge does rely a bit on a version of libcurl that’s a bit older. As I have version 3 on my machine as well, I could get around this by invoking diffmerge with

LD_PRELOAD=/usr/lib/libcurl.so.3 diffmerge

So now I have the right app runinng and can go on with my course and learned a bit besides. If this was of any help to you: Even better!

Till next time.

© tonnerkiller

Powered by Hugo & Kiss.