Build Pidgin (or Carrier) in Ubuntu

I had a request from Will to give a run down on how to build Pidgin (Carrier, rather) from scratch in Ubuntu. It’s not too difficult, but Ubuntu doesn’t ship with many of the development headers and libraries required to build either of these two applications. Worse, Carrier doesn’t ship with a working configure script, so you need the auto* tools to build that first.

Now, I’m sure someone will probably say “But you can just download the .deb and install it from there, it’s easy!”

Yeah, you can. This post isn’t about easy: It’s about giving the user a choice. After all, that’s what open source is about, right? :) So, for the sake of argument, let’s assume that the individual reading this post has absolutely no other choice but to build Pidgin/Carrier from scratch.

Easy enough?

I’ve listed the packages that are required to have a fully functioning IM client. I also have “barely optional” and “optional” packages listed as well. Barely optional are packages which you don’t need to install, but if you don’t, certain things probably won’t work and your IM client might not play very nicely with other applications like the desktop environment. Optional packages are those which you really don’t need, but if you have a really morbid fascination for installing everything, you can choose to grab them all.

If you’re installing from Synaptic, here’s the list of packages you’ll need:

  • Required Packages
    • automake
    • libtool
    • gettext
    • libglib2.0-dev
    • libgtk2.0-dev
    • libxss-dev
    • libstartup-notification0-dev
    • libgtkspell-dev
    • libxml2-dev
    • libgstreamer0.10-dev
    • libnss3-dev
    • libgnutls-dev
  • Barely Optional Packages
    • libdbus-glib-1-dev
    • libnm-glib-dev
  • Optional Packages
    • libmeanwhile-dev
    • libavahi-client-dev
    • libperl-dev
    • tcl8.5-dev

I’ll explain more about each of the optional categories in a moment. First, let’s map out the commands you’ll need to run to get this started:

Install the Packages

You will probably need to update Ubuntu first. If you don’t, you’ll have to reinstall a bunch of packages down the road. Though, I suspect that if you’re going this far, you’re already expecting to install a lot of things. In that case…

Here’s the command line you’ll need to get started:

apt-get install automake libtool gettext libglib2.0-dev libgtk2.0-dev libxss-dev libstartup-notification0-dev libgtkspell-dev libxml2-dev libgstreamer0.10-dev libnss3-dev libgnutls-dev libdbus-glib-1-dev libnm-glib-dev

Then, unpack the Pidgin or Carrier sources:

Pidgin
tar jxvf pidgin*.tar.bz2 (Use zxvf if you have a gzip instead)

Carrier
tar jxvf carrier*.tar.bz2 (Use zxvf if you have a gzip instead)

Carrier only
Create the configure script for the next step:
./autogen.sh

Carrier and Pidgin Both
./configure --disable-meanwhile --disable-avahi --disable-perl --disable-tcl

And that’s it. Before I close this post, though…

What are all these darned packages anyway?

I’m glad you asked. It’s a mess, I’ll give you a short drill-down:

Barely Optional Packages:

  • libdbus-glib-1-dev: D-Bus support. This handles communication between user applications, the system–heck–even the kernel. You can read more about D-Bus. To disable D-Bus support use: --disable-dbus. Be careful, though. Disabling this might cause minor problems with Pidgin’s ability to interface with your desktop environment. Then again, maybe you want this…
  • libnm-glib-dev: NetworkManager. This handles network connectivity from the desktop environment. I’m not sure why libpurple or Pidgin would need this, but I imagine it has something to do with Pidgin’s ability to start when the desktop environment starts. To disable NetworkManager support use: --disable-nm. Note that you might not want to do this.

Optional Packages:

  • libmeanwhile-dev: Meanwhile/Sametime IM support. Use --disable-meanwhile to disable this.
  • libavahi-client-dev libavahi-glib-dev: Avahi/Bonjour autodiscovery support. This isn’t really necessary. If you plan on enabling it, you do need both libraries installed. Use --disable-avahi to disable this.
  • libperl-dev: Perl scripting support. Yep, some people use this. Use --disable-perl to disable this.
  • tcl8.5-dev: Tcl scripting support. Use --disable-tcl to disable this.

Other noteworthy things…

  • Installing libgtk-dev pulls in a lot of packages. In fact, it pulls in about 53 dependencies.
  • libxss-dev is required for Pidgin to track mouse/keyboard activity.
  • libxml2-dev is needed for–you guessed it–XML-related stuff. Incidentally, if you’re building PHP from scratch, you’ll need this.
  • It isn’t recommended to disable NSS and GnuTLS support with --disable-nss and --disable-gnutls; if you do, MSN, Novell Groupwise, and Google Talk support won’t be built.

So there you have it: Building Pidgin or Carrier yourself should be (reasonably) easy!

6 comments.
***

Quickie: Linux Mint

If you’re into the whole Linux thing, you might be interested in Linux Mint. It’s an Ubuntu-base distribution and aims to ship with more of the software one might expect of Windows and the likes. Personally, I like the GTK theme Mint uses over Ubuntu’s (though, I don’t like GTK in general). Let’s take a look:

screenshot-17

Unlike Ubuntu, the Linux Mint folks have altered the default layout of the theme to be more in line with Windows. I kinda like the application (Mint?) menu, though it is a little buggy. Admittedly, some of the mouse-overs on the various submenus are a bit of a nuisance. Though, being as it’s based on Ubuntu 9.04, the fonts look really quite nice.

Here’s a shot of the terminal window:

screenshot-20

Interestingly, sound worked right off the bat for me–and they’re using PulseAudio.

All in all, it looks like it’ll be worthwhile to play around with. I might even install it on a spare drive!

If you like Ubuntu, give it a try.

4 comments.
***

Links: June 1st

I’m going to break out of the usual cycle of posting my Links of the Week threads on Wednesday. Let’s try posting these on Monday since there’s a lot going on this week that is of importance. I’ll be keeping this post updated, particularly with the Air France airliner that went down.

Biology

  • The New York Times has an interesting book review on a work titled Catching Fire: How Cooking Made Us Human by Richard Wrangham. I may have to get this one.

    I recall some years ago when I had heard that cooking helped break down heavier starches into more manageable types (including simpler sugars), and that cooking is at least partially responsible for us having the brain we do. (While our brain-to-body mass isn’t extraordinary, the amount of oxygen our brains consume compared to the rest of our body is.) Anyway, it looks like Michael Savage was right and the vegetarians–not surprisingly–were wrong.

English

  • The Economist has a somewhat amusing style guide on commonly misused words or words that are commonly used in a non-standard manner. Now, the reason I find this particular article humorous is because it reads more like a stupid nit-pick: there’s a significant number of words that they point out as misused when they’re widely accepted, defined, or colloquial use defines them as the speaker would expect. Granted, this is purportedly an internal style guide for their use, but I sometimes wonder if such things aren’t taken to unnecessary extremes. Here are a few examples of what I mean:
    • Demographics: no, the word is demography. Funny, but it looks like demographics isn’t a nonstandard, ungrammatical use…
    • Garner means store, not gather. Are they aware that garner can be used as a verb, meaning to gather?
    • Immolate means to sacrifice, not to burn. They have a strong case here. Though, there’s still that pesky colloquial usage thing…

    Honestly, I think they need to purchase a copy of Diana Hacker’s A Pocket Style Manual.

    Edit: I’m so used to reading British English that it dawned on me that this particular style guide is most likely limited almost exclusively to UK English. If this is the case, then perhaps it is a good exercise to observe differences between US English and British English.

Local News

Technology

  • I stumbled upon an interesting graph of benchmark data from the “Computer Language Benchmarks Game” (formerly “Language Shootout”). The results are rather surprising. For those of you who claim Java is painfully slow, it might be worth looking at the benchmarks. This is pretty close to tests I’ve seen myself. Tomcat (written in Java) serves up static content faster than Apache 2 (written in C). Although, whenever .htaccess support is disabled in Apache, performance is reasonably close–with Tomcat still ahead.
  • Speaking of Java, Gilad Bracha has a fascinating article on certain deficiencies in Java. Although Python is much slower in comparison, it does make me feel a little bit better about some of Guido’s language choices. Everything as an object has its use.

World News

  • Air France Flight 447
    • Update – Tuesday afternoon: Tim Vasquez of weathergraphics.com has a tremendously detailed write-up on the influence weather may have had on flight AF447. He is careful not to implicate weather as the cause but suggests it may have had an interesting impact. He also has a few plots related to where the aircraft’s position most likely was relative to the storms in the area.
    • Update – Late Monday, early Tuesday: According to WikiNews, passengers had sent text messages to family members before the plane disappeared.
    • On Monday, a French airliner went down in the Atlantic. AirDisaster.com has a lengthy article on this along with a picture from JetPhotos.Net of the exact aircraft involved.
No comments.
***