Archive for the ‘software’ Category

Lmod and Sudo: ‘module: command not found’

September 11th, 2015 No comments

Recently, I switched from Environment Modules to Lmod because of … reasons. I really like it so far but one thing annoyed me a bit. When executing sudo -s which is one of my usual workflows, my shell reports:

module: command not found

The reason is simple: sudo dumps most of the users environment with some exceptions, due to env_reset in /etc/sudoers, when spawning the new non-login shell. Specifically the last fact causes the trouble since Lmod is activated by sourcing the proper file on (login-)shell startup. In my case (following the Lmod docs) there is a soft link in /etc/profile.d pointing to /usr/share/lmod/lmod/init/profile.

My first attempts to modify the env_keep list in /etc/sudoers didn’t work, because the module command itself is set as a shell function which AFAIK cannot be handled by that list of kept variables.

from the shell environment:

BASH_FUNC_module%%=() { eval $($LMOD_CMD bash “$@”);
[ $? = 0 ] && eval $(${LMOD_SETTARG_CMD:-:} -s sh)

$ type module
module is a function
module ()
eval $($LMOD_CMD bash “$@”);
[ $? = 0 ] && eval $(${LMOD_SETTARG_CMD:-:} -s sh)

So I saw no other solution but adding the following code snippet to my /etc/bash.bashrc

if [ -z "$LMOD_CMD" ]; then
. /etc/profile.d/

This will test if there is a LMOD_CMD environment variable set. If not, it will source the proper file to activate Lmod.

Feel free to post if there are better solution! Cheerio!

Shell One-liner: psgrep

July 6th, 2015 2 comments

When I want to find out specific process information, I usually use ps aux | grep PATTERN. There are several drawbacks, but the most annoying one for me are the missing coloumn headlines. Therefore, I made this little alias and put it into my global bash.bashrc file:

alias psgrep=’ps u | head -n 1; ps aux | grep -v grep | grep’

This enables a psgrep command which can be used like grep (since that is exactly what it is).



Maybe some of you know an even better way? Cheerio!

Categories: bashism, linux Tags: ,

Phone Book Backup Ubuntu Phone (Aquaris E 4.5)

April 25th, 2015 No comments

If you have an Ubuntu Phone, like the Aquaris E4.5 from BQ. You can backup your contacts the following way:

  1. Install the “Terminal” app from Ubuntu Core App Developers
  2. Open the app and type: syncevolution --export /home/phablet/Documents/utcontacts.vcf backend=evolution-contacts
  3. Connect phone to computer, copy the vcf from Documents

Do not follow the instructions on this website. The sudo leads to an “[ERROR] creating source registry: Cannot autolaunch D-Bus without X11 $DISPLAY”, while the “database=Personal” leads to “[ERROR] database not found: ‘Personal'”

Intel Intrinsics Guide

April 1st, 2015 No comments
Categories: software Tags: , , ,

Patching Running Linux Kernel

October 27th, 2014 No comments
Categories: linux Tags: , , ,

RESTful APIs and Python

September 16th, 2014 No comments
Categories: software Tags: ,

SQLite rowid picking joke….ehm algorithm

July 22nd, 2014 No comments

I laughed very hard at this:

“The usual algorithm is to give the newly created row a ROWID that is one larger than the largest ROWID in the table prior to the insert. If the table is initially empty, then a ROWID of 1 is used. If the largest ROWID is equal to the largest possible integer (9223372036854775807) then the database engine starts picking positive candidate ROWIDs at random until it finds one that is not previously used. If no unused ROWID can be found after a reasonable number of attempts, the insert operation fails with an SQLITE_FULL error.”


Categories: fun, nerdcore, software Tags: ,

Debian + Icedove + Owncloud

March 27th, 2014 3 comments

As many others I have to sync my contacts and calendar between several systems. Since I have no Apple products and don’t want to donate my private data to Google, I found owncloud as the best solution covering my needs. Debian and Gnome have been allies for a long time now so I coupled the Evolution mail client with my owncloud instance. The last weeks were a little tricky due to several issues in my mail client (damaged encrypted mails, hung ups, excessive ressource consumption…) on Debian Jessie. After reaching peak annoyance level, it was time for a change.

Part I – The Mail Client
The only useful alternative known to me is Thunderbird. In the past I got to know Thunderbird as a very nice, fast, and powerful piece of software. Debian re-brands it to Icedove which can be installed using APT. To me as a Chromium user it looks quite familiar and exhibits a huge performance increase towards Evolution. Nice…
Next thing was to get my calendar into Icedove. Usually, I don’t like bloated software and prefer small, fast tools one for each task. The Exceptions to me are development suits and mail clients. Having all the important information bundled in on place is a nice thing. Thunderbird got the Lightning plugin, a great ‘little’ helper to manage dates within Thunderbird. Unfortunately, the integrated plugin interface of Icedove doesn’t work with (all?) Thunderbird plugins, so beware of using the integrated Extensions/Add-Ons menu! My first attempt lead to a crashing mail client on it’s startup with the following error message (when startet on the console) and seems to be a known Bug:

…version xul24.0 not defined in file with link time reference…

On Debian one has to install Iceowl-extension, which basically is the Lightning plugin for Icedove, via APT and all is fine.

Part II – Owncloud and Remote Address Books
Getting Icedove and Owncloud to cooperate wasn’t that easy as expected (and as it should be!). First Problem, there is no way to enter a remote location for an address book (except LDAP) or calendar server. To ‘fix’ this one you need the Inverse SOGo Connector. The available software of the Debian repository does not include this frontend (just a sogo server and common files, as far as I can see) which helps to connect collaborative applications. So just download it from the website and install it. This time, the Thunderbird plugin works fine with Icedove. The SOGo Connector adds the entry Remote Address Book in the address book’s menu which can be found in File->New in your address book view. In the appearing wizard you can enter your owncloud address book link and your done.
Same thing for the calendar. Create a new calendar, choose On the Network and CalDAV and enter your proper owncloud link. When the sync seems not to work, and you get a message on startup (vie console) saying the calendar location seems to be a CalDAV collection and therefore is in the wrong format, you have entered the wrong link. If this is the case, log into your owncloud account, choose calendar and spot the button to get the personal link. This should include your login as an directory level in the URL. Use this link for your calendar location in Icedove.

reusing time machine backup disk for new (ly installed) mac

March 25th, 2014 4 comments

The migration assistant only offers the option to inherit an old time machine backup during the os installation. I had to wipe and reinstall my macbook 4 weeks ago (tinkered to much with os-dependent services ^^) and now wanted to incorporate my old time machine backups so that I have access to old file as i started with a clean mac not using the migration stuff (as this would most probably have recreated some of the issues i wanted to evade in the first place). Turns out the time machine has a command line interface tmutil that make this task very easy:

sudo tmutil inheritbackup /Volumes/BACKUPDISK/Backups.backupdb/OLDMACHINENAME

Categories: software Tags:

Update-alternatives by example

March 13th, 2014 1 comment

Hi everyone,

some Linux distributions are using a symlink-based method to manage multiple versions of the same binary. For example one could have several Java VM version installed on the same system. Usually typing the java command will start one of them … but which one? The command update-alternatives manages a set of symlinks, located in /etc/alternatives by default, which refer to the correct binary. In the case of java, /etc/alternatives/java will refer to the binary somewhere in /usr/lib/jvm (for Debian). To change this link just call:

sudo update-alternatives –config java
There are 2 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
* 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode

Press enter to keep the current choice[*], or type selection number:

The command’s output will show a list of installed alternatives for this binary, which will be configured by the packet manager. Selecting a number will change the symlink.

To add a custom alternative, update-alternatives –install is used. The description of this command can be found in it’s manpage, but I think an example will make it more clear. Let’s say we got JDK7 from the oracle website and want to add it. First install/copy it do a useful destination. I’ve chosen /usr/lib/jvm/java-7-sunjdk-amd64/jdk/. 😉

update-alternatives –install /usr/bin/java java /usr/lib/jvm/java-7-sunjdk-amd64/jdk/bin/java 1072

The first parameter (excluding –install) is the path of the symlink your system will use to find the binary. Therefore, it has to be at a location listed in your PATH environment variable. Thereafter, the name of the group is specified followed by the absolute location of the binary. A group is an alias which assorts the similar binaries. Finally, a priority value is set. The result looks like this:

update-alternatives –config java
There are 3 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status
0 /usr/lib/jvm/java-7-sunjdk-amd64/jdk/bin/java 1072 auto mode
* 1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode
3 /usr/lib/jvm/java-7-sunjdk-amd64/jdk/bin/java 1072 manual mode


Categories: linux Tags: ,