Perl API versions does not match when launching shutter

Standard

As many of you must know, shutter is a great piece of open source software to make screenshots, edit them and even upload to some file hostings with a pair of mouse clicks. Very useful indeed.

But shutter has problems, as everything. First of all, at the time I write this lines, shutter is on version 0.89.1 that fixes errors on export to most file hostings. On AUR, still there is version 0.88.3-1, so you must modify your PKGBUILD to install latest version. Thanks to the user yweb, we can easily replace the PKGBUILD or create a new one with this content:

# Maintainer: Shanto
# Contributor: Athurg
# Contributor: TDY
pkgname=shutter
pkgver=0.89.1
pkgrel=1
pkgdesc="A featureful screenshot tool (formerly gscrot)"
arch=('i686' 'x86_64')
url="http://shutter-project.org/"
license=('GPL3')
depends=(
xdg-utils libxml-perl imagemagick bc procps librsvg gconf-perl
perl-{gnome2-wnck,gtk2-{imageview,unique},x11-protocol,image-exiftool}
perl-{proc-{simple,processtable},net-{dbus,dropbox-api},goo-canvas}
perl-{sort-naturally,json,json-xs,xml-simple,www-mechanize,locale-gettext}
perl-{file-{which,basedir,copy-recursive},pathtools,path-class}
)
optdepends=(
'nautilus-sendto: Send To… functionality in right-click and main menu'
'perl-net-dbus-glib: Upload support for Ubuntu One'
'gnome-web-photo: Support for capturing websites'
#'perl-gtk2-trayicon: Only if you using a gtk2 lower than 2.10.x'
)
source=("http://shutter-project.org/wp-content/uploads/releases/tars/$pkgname-$pkgver.tar.gz")
md5sums=('4844e22319ce8b6dc96191116f9cdd26')
build() {
cd "$srcdir/$pkgname-$pkgver"
install -Dm755 bin/$pkgname "$pkgdir/usr/bin/$pkgname"
cp -r share "$pkgdir/usr/"
find "$pkgdir/usr/share" -type d -exec chmod 755 '{}' \;
find "$pkgdir/usr/share" -type f -exec chmod 644 '{}' \;
find "$pkgdir" -path '*plugins*' -type f ! -name '*.*' -exec chmod 755 '{}' \;
find "$pkgdir" -path '*/upload_plugins/*' -type f -name '*.pm' -exec chmod 755 '{}' \;
}

And you will install version 0.89.1. Let’s hope maintainers have some time to update it.

Well, so now you have your new, shiny and great screenshot tool installed to its latest version, so you run it and… nothing happens… Well, let’s run it through a terminal, and let’s see what is its output.
$ shutter
Perl API version v5.14.0 of Gtk2::Unique does not match v5.16.0 at /usr/lib/perl5/core_perl/DynaLoader.pm line 213.
Compilation failed in require at /usr/bin/shutter line 46.
BEGIN failed--compilation aborted at /usr/bin/shutter line 46.

As we can see, Perl API versions installed doesn’t match the needed for that version of the application. That error is not unique to shutter (perhaps, on the PKGBUILD should appear the version of the dependences as well). But the solution is fair simple and will be useful for you to know for other applications.

You’ll need to reinstall all perl modules to its latest version, to know what modules are, run:
$ pacman -Qml | awk '/_perl\/auto\/.+\.so$/ { print $1 }' | uniq
perl-goo-canvas
perl-gtk2-imageview
perl-gtk2-unique
perl-mouse
perl-proc-processtable

So, let’s update all of them, as I do not know if there are on AUR or official repositories, I directly use yaourt, which handles both repositories.
yaourt -S perl-goo-canvas perl-gtk2-imageview perl-gtk2-unique perl-mouse perl-proc-processtable

Done, now, shutter starts with no error.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s