Text

Out of the box, sadly, PHPStorm doesn't make nice with the Ubuntu Unity launcher.

Typically I manage PHPStorm by extracting it to /opt and then symlinking the extracted folder to /opt/PhpStorm.

To create a nice launcher for Unity you create a desktop entry under ~/.local/share/applications

$ vim ~/.local/share/applications/jetbrains-phpstorm.desktop

Now paste the following in (adjusted for your own paths)

[Desktop Entry]                                                                  
  Version=4.0.1                                                                   
  Type=Application                                                                
  Name=JetBrains PhpStorm                                                         
  Exec=/opt/PhpStorm/bin/phpstorm.sh %f                                           
  Icon=/opt/PhpStorm/bin/webide.png                                               
  Comment=Develop with pleasure!                                                  
  Categories=Development;IDE;                                                     
  Terminal=false                                                                  
  StartupNotify=true                                                              
  StartupWMClass=jetbrains-phpstorm           
  

Hit your windows or super key and type in 'Php' - you should see the newly created desktop entry there. Once launched and fully started, you can opt to keep PHPStorm locked to the Unity launcher for easy startup.

Text

A good, fast, howto on installing an official Java 7 JVM / JRE on Ubuntu 11.10 (Oneiric).

Text

When using apt-get remove or aptitude remove the configuration files of the packages uninstalled are not deleted.

Now you can manually do it yourself with apt-get purge , or, you can use the dpkg command to do it in a nice oneliner.

dpkg --get-selections | grep deinstall | sed 's/deinstall/\lpurge/' | dpkg --set-selections; dpkg -Pa
  
Text

I don't know when it happened, but Skype has blown up on me sometime over the past two months.

$ skype
  > skype: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
  

Hmmm.

$ locate libXss.so.1
  > /usr/lib/x86_64-linux-gnu/libXss.so.1
  > /usr/lib/x86_64-linux-gnu/libXss.so.1.0.0
  

Okay, so it's moaning about the X screensaver library, libxss, not being there. But it is there, although specifically, it's a 64bit library. I bet Skype isn't 64bit...

$ file /usr/bin/skype
  > /usr/bin/skype: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
  

So that explains that then, we need compatible shared x86 libraries, but when you get these sorts of issues it's always best to see what else is missing. The ldd tool comes to the rescue.

$ ldd /usr/bin/skype
  > linux-gate.so.1 =>  (0xf76f2000)
  > libasound.so.2 => /usr/lib32/libasound.so.2 (0xf75df000)
  > libXv.so.1 => /usr/lib32/libXv.so.1 (0xf75d9000)
  > libXss.so.1 => not found
  > librt.so.1 => /lib32/librt.so.1 (0xf75d0000)
  > libQtDBus.so.4 => not found
  > libQtGui.so.4 => not found
  > libQtNetwork.so.4 => not found
  > libQtCore.so.4 => not found
  > libpthread.so.0 => /lib32/libpthread.so.0 (0xf75b4000)
  > libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf74c9000)
  > libm.so.6 => /lib32/libm.so.6 (0xf749e000)
  > libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7480000)
  > libc.so.6 => /lib32/libc.so.6 (0xf7306000)
  > libdl.so.2 => /lib32/libdl.so.2 (0xf7301000)
  > libX11.so.6 => /usr/lib32/libX11.so.6 (0xf71cb000)
  > libXext.so.6 => /usr/lib32/libXext.so.6 (0xf71b8000)
  > /lib/ld-linux.so.2 (0xf76f3000)
  > libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7198000)
  > libXau.so.6 => /usr/lib32/libXau.so.6 (0xf7194000)
  > libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf718d000)
  

So looking at this, I do not have both compatible libxss and misc qt libraries installed.

With Ubuntu, to enable multiarch support, check the file /etc/dpkg/dpkg.cfg.d/multiarch. There should be a line like below (and if there isn't, add it):

# in file /etc/dpkg/dpkg.cfg.d/multiarch
  foreign-architecture i386
  

Now we need to satisfy Skype's i386 dependencies.

 $ sudo apt-get install libxss1:i386 libqtcore4:i386 libqt4-dbus:i386 libqtgui4:i386
  

If we re-run ldd we can see Skype's shared library dependencies are now satisfied.

$ ldd /usr/bin/skype
  > linux-gate.so.1 =>  (0xf7749000)
  > libasound.so.2 => /usr/lib32/libasound.so.2 (0xf7634000)
  > libXv.so.1 => /usr/lib32/libXv.so.1 (0xf762e000)
  > libXss.so.1 => /usr/lib/i386-linux-gnu/libXss.so.1 (0xf7629000)
  > librt.so.1 => /lib32/librt.so.1 (0xf7620000)
  > libQtDBus.so.4 => /usr/lib/i386-linux-gnu/libQtDBus.so.4 (0xf75a6000)
  > libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xf6ae0000)
  > libQtNetwork.so.4 => /usr/lib/i386-linux-gnu/libQtNetwork.so.4 (0xf69a4000)
  > libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xf6702000)
  > libpthread.so.0 => /lib32/libpthread.so.0 (0xf66e7000)
  > libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf65fc000)
  > libm.so.6 => /lib32/libm.so.6 (0xf65d2000)
  > libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf65b4000)
  > libc.so.6 => /lib32/libc.so.6 (0xf6439000)
  > libdl.so.2 => /lib32/libdl.so.2 (0xf6434000)
  > libX11.so.6 => /usr/lib32/libX11.so.6 (0xf62fe000)
  > libXext.so.6 => /usr/lib32/libXext.so.6 (0xf62eb000)
  > libQtXml.so.4 => /usr/lib/i386-linux-gnu/libQtXml.so.4 (0xf62aa000)
  > libdbus-1.so.3 => /lib32/libdbus-1.so.3 (0xf6261000)
  > libfontconfig.so.1 => /usr/lib32/libfontconfig.so.1 (0xf622b000)
  > libaudio.so.2 => /usr/lib32/libaudio.so.2 (0xf6211000)
  > libglib-2.0.so.0 => /lib32/libglib-2.0.so.0 (0xf6118000)
  > libpng12.so.0 => /lib32/libpng12.so.0 (0xf60ee000)
  > libz.so.1 => /usr/lib32/libz.so.1 (0xf60d9000)
  > libfreetype.so.6 => /usr/lib32/libfreetype.so.6 (0xf6041000)
  > libgobject-2.0.so.0 => /usr/lib32/libgobject-2.0.so.0 (0xf5ff2000)
  > libSM.so.6 => /usr/lib32/libSM.so.6 (0xf5fe9000)
  > libICE.so.6 => /usr/lib32/libICE.so.6 (0xf5fcf000)
  > libXi.so.6 => /usr/lib32/libXi.so.6 (0xf5fbf000)
  > libXrender.so.1 => /usr/lib32/libXrender.so.1 (0xf5fb4000)
  > libgthread-2.0.so.0 => /usr/lib32/libgthread-2.0.so.0 (0xf5fad000)
  > /lib/ld-linux.so.2 (0xf774a000)
  > libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf5f8e000)
  > libexpat.so.1 => /lib32/libexpat.so.1 (0xf5f64000)
  > libXt.so.6 => /usr/lib32/libXt.so.6 (0xf5f08000)
  > libXau.so.6 => /usr/lib32/libXau.so.6 (0xf5f04000)
  > libpcre.so.3 => /lib32/libpcre.so.3 (0xf5ec4000)
  > libffi.so.6 => /usr/lib32/libffi.so.6 (0xf5ebd000)
  > libuuid.so.1 => /lib32/libuuid.so.1 (0xf5eb7000)
  > libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf5eb0000)
  

Skype now starts up and behaves as I would expect.

Text

I've been using Oneiric since its release and in many ways it is a giant leap forward from Natty Narwhal. Unity is still horrible mind, but a lot of the rough edges (multiple / external monitor support) have been softened and the overall package is more stable.

Some things still grate, particularly the global menus and the overlay scrollbar, but they are manageable.

A great resource I think to checkout for anyone using Oneiric is webupd8. You can find a lot of tips to bend Oneiric to your will.

For me, that means getting an official JVM installed Installing Oracle Java 7 and getting a sane desktop environment configured with global menu and overlay scrollbars zapped away Things to Tweak After Installing Oneiric.

Linux Mint (now on release 12, Lisa) is increasingly becoming a viable alternative to Ubuntu. I've played around with it a fair bit, but I still think it is not quite there yet in terms of 'just working' when compared with Ubuntu.

For someone that needs to get work done with a minimum of fuss, Ubuntu is still the leader. I do hope though, someone can work out how to marry usability and power in a slightly better way than I feel Canonical are managing at the moment.