Archive

Author Archive

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/modules.sh
fi

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!

Retro Thinkpad Survey

July 28th, 2015 1 comment

For those of you who haven’t already heard: Lenovo launched a survey to recreate a Thinkpad like in the good old days, when design followed function and not the other way around.

http://blog.lenovo.com/tag/retro+thinkpad

Categories: hardware, nerdcore Tags: ,

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).

psgrep

 

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

Categories: bashism, linux Tags: ,

Intel Intrinsics Guide

April 1st, 2015 No comments
Categories: software 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.”

Source: sqlite.org

Categories: fun, nerdcore, software Tags: ,

Debian + Icedove + Owncloud

March 27th, 2014 3 comments

Intro
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 libxul.so 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.

Disappearing menu in Netbeans aka Java GUI issue

March 15th, 2014 2 comments

The actual Netbeans 7.4 is showing some really annoying behaviour. In fullscreen mode, menus disappear on releasing the mouse button and/or selections seem to have an offset to the mouse position. Due to several threads in the Internet, this problem is caused by the JDK, is independent from the software (Netbeans in my case) and the JDK version, and exists for several years now. A miscalculation of the mouse position after window resizing (or something related) seems to be responsible.

Workaround (Works with Netbeans, have no idea if too with other applications):

  • Netbeans should start in non-fullscreen mode by default
  • Move the window to the upper left corner of your screen (probably your window manager will have some snap-on functionality there)
  • Now maximize the window

This seams to work for oracle- and openJDK v7 and Debian/Gnome3 and according to the Web for several other Linux distributions and desktop environments.

Please insert excessive Java rant here.

Categories: wtf 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: ,

NFS export not mounted after reboot

March 5th, 2014 8 comments

Long story short: you have an NFS export and a proper configured /etc/fstab on your client. Mounting manually via mount -a works fine but nothing happens after reboot. Try to add the following to your /etc/default/rcS:

 ASYNCMOUNTNFS=no

cheers!

Categories: linux Tags: , , ,