Slackware 14 getting closer
by BenV on Jul.01, 2012, under Software
So I still run Slackware Linux on pretty much all of my machines, which I often smile upon when I see another Ubuntu/Debian/Pokemon update break stuff (that I then get to fix, details). However, running bleeding edge Slackware-current also draws some blood every now and then.
In the Slackware Changelog I read that the aaa_base package now has version 14.0, with the introduction of another garbage directory in the root called /run. I wonder if they’ll ever stop polluting the root path with such garbage, but whatever. Maybe this is for the upcoming /var/run based on tmpfs, but so far I can find no references to this new directory.
In the upgrades a few notable ones are:
- Changed the password encryption standard to SHA256 in /etc/login.defs
- Perl 5.16, breaking custom stuff as usual just like the rest of this post about Python
- GCC version 4.7.1
- Kernel version 3.2.21, although I still build my own since they’re a bit ahead (version 3.4.4 at the moment)
- KDE 4.8.4, which I don’t care much for except for when building Digikam
- And tons of minor version updates of existing tools like coreutils, cron, logrotate, nmap, etc
Keep up the good work Patrick and the rest of the team! 🙂
Anyway, one of the other interesting changes is an upgrade to Python version 2.7. Just like new Perl versions this tends to break the stuff that I installed myself.
The first thing I noticed that was broken is Deluge, my favorite bittorrent client. When starting it it barfs:
benv@home:~:0>deluge-console
Traceback (most recent call last):
File "/usr/bin/deluge-console", line 5, in
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
Hmz, lovely. This error can be tracked down to the CPAN-like “Setuptools“, aka the garbage called “easy_install“. Since it’s not bundled with Python by default and Slackware doesn’t care to add it, this is one of the customly installed (by me) python addons.
First attempt to fix it is simply installing the newer version of setuptools:
benv@home:/usr/src$ wget -q http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
benv@home:/usr/src$ tar axf setuptools-0.6c11.tar.gz
benv@home:/usr/src$ cd setuptools-0.6c11
benv@home:/usr/src/setuptools-0.6c11$ mkdir pkg ; python setup.py install --root `pwd`/pkg
benv@home:/usr/src/setuptools-0.6c11$ cd pkg
benv@home:/usr/src/setuptools-0.6c11/pkg$ makepkg -l y -c n /usr/src/packages/setuptools-0.6c11-x86_64-1BnV.txz
benv@home:/usr/src/setuptools-0.6c11/pkg$ upgradepkg /usr/src/packages/setuptools-0.6c11-x86_64-1BnV.txz
Now that the first problem is fixed, the obvious next one is that all other custom python things need recompilation as well.
Most are pretty trivial like setuptools above, so next goes Deluge.
Obviously we upgrade our version of libtorrent first, since they often have new releases with bugfixes and new features.
However, upgrades are not always a good plan, since for instance with libtorrent version 0.16 there’s a known issue that breaks
the “move completed to” feature, leaving completed files/directories in the downloading directory.
Apart from that I found no issues with the v0.16 libtorrent, so I’m using v0.16.1 atm:
root@torrents:/usr/src# wget -q http://libtorrent.googlecode.com/files/libtorrent-rasterbar-0.16.1.tar.gz
root@torrents:/usr/src# tar axf libtorrent-rasterbar-0.16.1.tar.gz
root@torrents:/usr/src# cd libtorrent-rasterbar-0.16.1
root@torrents:/usr/src/libtorrent-rasterbar-0.16.1# ./configure --prefix=/usr --enable-dependency-tracking --enable-shared --enable-static --enable-python-binding --with-boost --with-libgeoip
# skip configure blabla
root@torrents:/usr/src/libtorrent-rasterbar-0.16.1# make -j4
# Take some coffee, this takes a while
root@torrents:/usr/src/libtorrent-rasterbar-0.16.1# mkdir pkg
root@torrents:/usr/src/libtorrent-rasterbar-0.16.1# DESTDIR=`pwd`/pkg make install
# More output
root@torrents:/usr/src/libtorrent-rasterbar-0.16.1# cd pkg && makepkg /usr/src/packages/libtorrent-rasterbar-0.16.1-x86_64-1BnV.txz
root@torrents:/usr/src/libtorrent-rasterbar-0.16.1/pkg# upgradepkg /usr/src/packages/libtorrent-rasterbar-0.16.1-x86_64-1BnV.txz
Easy. Same for deluge, although I had to whack it into shape in accepting my new libtorrent. For some reason it felt the need to run their
retarded get_libtorrent.sh, which I replaced with a symlink to /bin/true.
root@torrents:/usr/src# wget -q http://download.deluge-torrent.org/source/deluge-1.3.5.tar.bz2
root@torrents:/usr/src# tar axf deluge-1.3.5.tar.bz2
root@torrents:/usr/src# cd deluge-1.3.5
root@torrents:/usr/src/deluge-1.3.5# rm get_libtorrent.sh ; ln -s /bin/true get_libtorrent.sh # Prevent it from building their own libtorrent
root@torrents:/usr/src/deluge-1.3.5# mkdir pkg ; python setup.py install --root `pwd`/pkg
root@torrents:/usr/src/deluge-1.3.5# cd pkg ; makepkg /usr/src/packages/deluge-1.3.5-x86_64-1BnV.txz
Tada, another problem fixed.
And yeah, I’m sure some of you pokemon OS guys will gloat “haha, the sucker has to recompile it by hand” here, but I’ll laugh again when you receive another wonderful invention from Lennart “PulseAudio” Poettering like his configuration daemon or binary syslog…. or perhaps he’ll write a new usermanager next to replace PAM 😉