“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.”
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.
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:
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.
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).
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/.
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).
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:
I don’t know why this is still an issue on Debian/Linux machines but it is as annoying as it already was 2 years or more ago. Imagine you want to export /home via NFSv4 on a server so your clients can mount it remotely. Mostlikely, you will end up with lots of nobody:nogroup labeled entries, when you do a ls -la /home on your client. Check your logfiles and when you find something like:
rpc.idmapd: nss_getpwnam: name ‘USERNAME’ not found in domain ‘localdomain’
chance is high your idmap is not properly configured. This service is needed for NFSv4 as far as I know. Unfortunately, it is sometimes deactivated by default. Check /etc/defaults/nfs-common for this entry:
which also will tell NFS to start idmapd on startup. Next step is to adjust domain settings which depends on your setup.
Check DNS/DHCP server config, especially on correct domain name and it’s export if this is desired
Check if the client correctly receives and sets domain name (see lease-file and domainname-command for example)
Last but not least you need to check /etc/idmapd.conf to have this entry:
Domain = yourdomain
where yourdomain must be set properly. If you’re not sure about the DNS/DHCP config and/or receive a (none) by the domainname command, you want to go with localdomain as value here.
Do not forget to restart all reconfigured services and that should fix the issue.