This has been plaguing me for years and I finally figured it out. Thanks to eleperte who created ssh-xdg-open, I was finally able to see what to do. Ssh-xdg-open didn’t work for me, but there was enough information available for me to figure out the missing pieces.

Forget about gconftool and you don’t need ssh-xdg-open. If all you want is working ssh://protocol links, then just use xdg-mime to set the default application for handling ssh protocol links and create an application handler with the same name as that application.

xdg-mime default ssh.desktop x-scheme-handler/ssh
cat << EOF > ~/.local/share/applications/ssh.desktop
[Desktop Entry]
Name=SSH Launcher
Exec=bash -c '(URL="%U" HOST="\${URL:6}"; ssh \$HOST); bash'

All this does is launch bash, parse the host from the URL and executes ssh. When ssh exits, it executes bash again so the window stays open. I wrote it this way because you can’t count on everything to work all the time and if you don’t keep the window open, the error messages will vanish into the ether and your sanity with them.

Continue reading »

nginx logo The nginx build in the official ubuntu package repository is somewhat out-of-date, so I built my own package from source using 0.7.59. I’m going to provide it here in case anyone else would like it. One of the new features I like is the try_files directive. Here’s an example of what I’m doing using 0.6.35, the full post is here

location / {
  root /var/www/;
  proxy_set_header X-Forwarded-For  $remote_addr;
  if (-f $document_root/beehive$uri) {
    rewrite (.*) /beehive$1 break;
  if (-f $request_filename) {
  if (-f $request_filename/index.html) {
    rewrite (.*) $1/index.html break;
  if (-f $document_root/beehive$uri/index.html) {
    rewrite (.*) /beehive$1/index.html break;
  if (!-f $request_filename) {

Continue reading »

Since 2008, Debian has had a movabletype-opensource package available in the repository. That’s good news for people who like to make short work of system administration. Unfortunately, the package in the repository isn’t the very latest and greatest. Even so, there are big benefits to using aptitude to install movable type, the main one being that it automatically installs all the various dependencies and offloads your job (maintaining those packages) to someone else. Plus the file locations are well-thought-out. Rather than throwing everything right into the web root the package maintainer put the cgi files into a common cgi-bin folder, the shared files into /usr/shared, the perl modules into the shared perl library, and the configuration files into /etc.

Because I imagine I’ll be upgrading my install of MT from time to time, I wrote this script so I can be even more lazy in the future, and I’ll put it here in case anyone else wants to use it. It’s only been tested on a brand new Ubuntu 8.10 install and the package.

Continue reading »

Eclipse PDT IDE After upgrading to Intrepid Ibex Alpha 5, I was presented with a familiar problem. I knew I had dealt with this at least a half-dozen times in the past, but I never seem to learn. It all happened when I tried to import a project I’d started from my subversion repository into eclipse on my laptop. I began to get very strange un-googlable Java errors that I knew I’d seen before. Here’s two of them:

java.lang.NoClassDefFoundError: org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList

When I made the distribution upgrade, I failed to notice that my symbolic link /etc/alternatives/java (pointed to by /usr/bin/java) had changed. Instead of using Sun Java, I was back to using GCJ. GCJ is a great effort, and if it could run PDT smoothly I would use it in a heartbeat. Until then, I’m forced to use Sun Java. Don’t bother changing the symbolic links by hand, Ubuntu has a handy tool to do that for you. It would have been nice to have preserved my original configuration though.

sudo update-java-alternatives --set java-6-sun

Next time I get these messages maybe I’ll remember to check which Java I’m using.

Continue reading »

At about this time semi-annually, I can no longer hold myself back from upgrading to the next version of Ubuntu; and usually I am quite sorry I did just because of the nature of alpha software. The transition from edgy to feisty, feisty to gutsy, and from gutsy to hardy was a little painful at the alpha stage because the new network-manager applet was in its early stages. Each of those upgrades caused problems with my internet activity which made it difficult to access the internet and hence report bugs.

This time around my wireless internet connections are stable and we’re still only in alpha 4, plus the automated bug reporting system is much better tuned. We’re starting to see a much more mature product emerge after all this time. Looking at the upcoming features, you’ll see things like “encrypted private directories”, “3g support”, and a new “guest account”.

At first I was a little disappointed to see these features because unlike previous versions, they seemed small in comparison. But now I feel that Ubuntu has climbed to a kind of development plateau where all the bare necessities of a truly excellent operating system are in place and working well. I’m truly proud to be a member of the Ubuntu community and I welcome the upcoming “small” features as a sign of our community’s excellence.

Continue reading »