Archive for the ‘Jon F’ Category

Finally Synching my Blackberry on Linux

January 2nd, 2010 18 comments

Some readers may recall all of the attempts that I’ve made in the past to synchronize my Blackberry with Mozilla’s Thunderbird email and calendar client. During each of these tries, I had relied on the OpenSync framework, along with the Barry project for communication with my phone, and a number of different solutions to link into Thunderbird. At various times, these included the opensync-plugin-iceowl, opensync-plugin-sunbird, and bluezync packages, none of which yielded success.

While running GNOME on my Debian laptop, I had managed to successfully synchronize my phone with the Evolution mail client. Even so, I continued to work at Thunderbird synchronization because I disliked Evolution, seeing it as a Microsoft Outlook clone, which is a platform that I have had considerable problems with in the past.

With my recent installation of Kubuntu 9.10 on my PC, I have been exposed to the Kontact PIM suite, and have thus far been impressed. Kmail is a solid email client, although the way that it handles the setup of multiple email accounts is confusing to say the least, forcing the user to create a sending, receiving, and identity object for each account, and then to link them together. Likewise, Kontact is a decent application, but is sorely lacking basic GUI configuration options, something I never thought that I would say about a KDE app. Finally, Kalendar does everything that one would expect, and allows the user to display appointments in a number of useful ways. All have excellent integration, and live in a tray widget that uses the native KDE notifications system to let me know when something important has happened.

Most importantly however, I managed to get the entire Kontact suite to sync with my Blackberry after about five minutes of playing around in the terminal. Unlike during previous installation attempts, I found the latest stable Barry packages available in my repositories, so installation was a snap. I simply added the following packages to my system:

  • libopensync0 v0.22-2
  • multisync-tools v0.92
  • libbarry0 v0.14-2.1
  • opensync-plugin-kdepim v0.22-4
  • opensync-plugin-barry v0.14-2.1

From a terminal, I then used the msynctool application and the following steps to do a little bit of configuration:

  1. msynctool –listplugins if the install went well, this command should list both kdepim-sync and barry-sync as available plugins
  2. msynctool –addgroup BB create an OpenSync sync profile for my Blackberry called BB
  3. msynctool –addmember BB barry-sync add the barry-sync plugin to the BB sync group
  4. msynctool –addmember BB kdepim-sync add the kdepim-sync plugin to the BB sync group
  5. msynctool –showgroup BB this lists each of the plugins that we just added to the BB sync group, along with their member numbers. In my case, barry-sync was member number 1, and kdepim-sync was member number 2. The output also showed that while barry-sync still needed to be configured, kdepim-sync had no configuration options to be set.
  6. msynctool –configure BB 1 configures member number 1 of the sync group BB. In my case, this was barry-sync, and simply popped a config file in the nano text editor. All that had to be changed in the file was the PIN of the Blackberry that the plugin would attempt to sync with.
  7. msynctool –sync BB actually performed the synchronization process. For safety’s sake, I made sure that Kontact was fully closed before running this command.

And that’s it! In the future, I simply have to run the msynctool –sync BB command to synchronize my Blackberry with Kontact. That’s one more reason to stick with Linux – Blackberry synchronization that isn’t tied to Microsoft Outlook!

Filling a Zune from Linux

January 1st, 2010 2 comments

Thinking that I was up for a challenge, I decided to spend the day figuring out how to put the music in my Banshee library onto a Microsoft Zune. Since my library contains a good number of FLAC files that I’ve ripped in from my CD collection, my solution called for a caching system that converts the FLAC files to mp3s and stores them so that the playlist can be changed without having to re-convert the FLAC files into something that the Zune can play on every sync. My weapons of choice for the project were a Windows XP instance running inside of Sun Virtual Box, and 126 lines of perl script.

The Steps:

  1. Create a WinXP VM that has the Zune software installed and can see two shared folders on my Linux machine:
    1. My normal Music folder, which contain my entire collection
    2. The cache folders, which contain all of the FLAC files in my collection, but converted to mp3 so that the Zune can play them
  2. Open the Banshee database, located at ~/.config/banshee-1/banshee.db
  3. Select all of the FLAC files in the playlist that we’d like to put on the Zune
  4. For each, check if it has been converted and cached
    1. If so, simply add the path to the cached copy of the track to an m3u file in the cache folder
    2. If not, convert the track, and then add the path to the cached copy of the track to an m3u file in the cache folder
  5. Select all of the mp3 files in the playlist that we’d like to put on the Zune
  6. Put those in a separate m3u file that is located in the Music folder.
  7. Boot up the Zune software on the VM. It should autoscan it’s monitored folders, find the m3u playlists, and put them in its library
  8. Sync the playlists with the Zune by dragging and dropping them to the device icon in the lower left corner of the screen

As previously mentioned, steps 2 through 6 were accomplished by way of a perl script that I can run as often as I like:


#Requirements: libdbd-sqlite3-perl, flac, lame

#We need database support
use DBI;

#Database path – change this to reflect your user environment
my $dbpath = “dbi:SQLite:dbname=/home/jon/.config/banshee-1/banshee.db”;

#Playlist name – change this to reflect the playlist that you want to export
my $plistname = “Favorites”;

#Cache Path – the path to the directory where you’ve been caching converted FLAC files
my $cachepath = “/home/jon/Storage/mp3Cache/”;

#Music Path – the path to the folder where your music collection is actually stored
my $musicpath = “/home/jon/Music/”;

#Connect to the database – no username/password
my $dbh = DBI->connect($dbpath,””,””,{RaiseError => 1, AutoCommit => 0});

if(!$dbh) {
print “Could not connect to database $dbpath”,”\n”,”Exiting”;

#Pull the list of FLAC files for conversion and caching
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%flac'”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $cachepath.$plistname.’_cached.m3u’ or die “Error trying to open cache m3u playlist for overwrite. Do you have write permissions in $cachepath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#add /music to $cachepath so that files are in a subdirectory, away from the m3u file
$cachepath = $cachepath.”music/”;
if( ! -e $cachepath ) {
`mkdir “$cachepath”`;

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri by removing the file:// prefix and reverting the uri escaping
$uri = substr $uri, 7;
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;

#fix time into seconds
$length = int($length/1000);

#check if the flac file has already been converted and cached at cachepath
#if not, convert it and put it at cachepath.
my $path = $cachepath . $artist . ‘/’ . $album . ‘/’ . $title . ‘.mp3′;
if( ! -e $path ) {
#file dne, convert it
print “\nTrack: $title by $artist has not yet been cached, converting…”,”\n”;

#make sure that the file actually exists before attempting to convert it
if( ! -e $uri ) {
print “WARNING: Track $title by $artist does not exist at $uri”,”\n”;
} else {

#ensure that cache album/artist directories exist
my $partpath = $cachepath.$artist;
if( ! -d $partpath ) {
`mkdir “$partpath”`;
$partpath = $partpath.’/’.$album;
if( ! -d $partpath ) {
`mkdir “$partpath”`;l

#do the conversion – we’re chaining flac and lame here, reading in the flac file from $uri, and putting the resulting mp3 at $path
`flac -cd “$uri” | lame -h – “$path”`;

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u ‘\\music\\’.$artist.’\\’.$album.’\\’.$title.’.mp3′,”\r\n\r\n”;

#close the m3u file in the cachepath directory
close $m3u;

#TODO: scan the m3u file and delete any files that aren’t in it from the cache directory

#Pull the list of MP3 files and dump them into an m3u file
my $flac = $dbh->selectall_arrayref(“SELECT sme.TrackID, ct.Title, car.Name AS ‘Artist’, ca.Title AS ‘Album’, ct.Uri, ct.Duration AS ‘Length’ FROM corealbums AS ca, coreartists AS car, coresmartplaylistentries AS sme INNER JOIN coretracks AS ct ON sme.TrackID = ct.TrackID WHERE sme.SmartPlaylistID = (SELECT `SmartPlaylistID` FROM `coresmartplaylists` WHERE `Name` = ‘$plistname’) AND ca.AlbumID = ct.AlbumID AND car.ArtistID = ct.ArtistID AND ct.MimeType LIKE ‘%mp3′”);

#open the m3u file to write the cached items to
open my $m3u, ‘>’, $musicpath.$plistname.’.m3u’ or die “Error trying to open music folder m3u playlist for overwrite. Do you have write permissions in $musicpath ?”;
print $m3u “#EXTM3U\r\n\r\n”;    #note windows \r\n here

#loop through the files and check if they need to be cached
foreach my $i (@$flac) {
my ($trackid, $title, $artist, $album, $uri, $length) = @$i;

#correct the uri to become a windows file path
$uri = substr $uri, 7;            #remove file:// prefix
$uri =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;    #correct uri encoding
$uri =~ s/$musicpath//g;            #remove musicpath prefix
$uri =~ s/\//\\/g;                #change forward slashes to backslashes
$uri = ‘\\’.$uri;                #add the leading backslash

#fix time into seconds
$length = int($length/1000);

#add the track to the m3u file – note that these entries are relative to the location of the m3u file in the root of $cachepath
#the paths use a backslash and a \r\n newline so that they work correctly on windows
print $m3u “#EXTINF:$length,$artist – $title\r\n”;
print $m3u $uri,”\r\n\r\n”;

#close the m3u file and the database connection
close $m3u;

Sorry for the horrible formatting.

The only snag that I hit during the entire process was really my fault – I have a tendency to overcomplicate things, and did so on this project by initially writing the script to output a *.zpl file instead of a *.m3u file. That didn’t work at all, and I ended up simplifying the script greatly by just outputting an *.m3u file and hoping for the best.

On the off chance that the Zune jukebox software refuses to properly update its playlists after you change the *.m3u files, first try deleting them from the application, and then restarting it. If that doesn’t work, you can write a Windows batch script with code similar to the following:

del /q “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists\*”
xcopy “\\Vboxsvr\mp3cache\Favorites_cached.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”
xcopy “\\Vboxsvr\music\Favorites.m3u” “C:\Documents and Settings\Jonathan\My Documents\My Music\Zune\Playlists”

This script deletes all files from the Zune playlists directory, and then copies each of the *.m3u files that we created with the above perl script directly into the Zune playlists directory. This should force the application to get it’s act together.

Overall, I’m happy with this patchwork job. It allows me to use the Zune on Linux, which is great because the Zune really is a beautiful piece of hardware. Now if only the libmtp guys could get it working natively, without a WinXP VM…

This piece was mirrored at Index out of Bounds

Setting up an LVM for Storage

December 30th, 2009 5 comments

Recently, I installed Kubuntu on my PC. Under Windows, I had used RAID1 array to create a storage volume out of two extra 500GB hard drives that I have in my system. Under Linux, I’ve decided to try creating a 1TB LVM out of the drives instead. This should be visible as a single drive, and allow me to store non-essential media files and home partition backups on a separate physical drive, the better to recover from catastrophic failures with. The only problem with this plan: documentation detailing the process of creating an LVM is sparse at best.

The Drive Situation
My machine contains the following drives, which are visible in the /dev directory:

  • sdc: root drive that contains three partitions; 1, 2, and 5, which are my boot, root, and swap partitions respectively
  • sda: 500GB SATA candidate drive that I’d like to add to the LVM
  • sdb: 500GB SATA candidate drive that I’d like to add to the LVM

First Try
Coming from a Windows background, I began by searching out a graphical tool for the job. I found one in my repositories called system-config-lvm 1.1.4.

The graphical tool that I found to create LVMs

I followed the buttons in this tool and created a 1TB LVM spanning sda and sdb, then formatted it with ext3. The result of these steps was an uninitialised LVM that refused to mount at boot. In response, I wrote the following script to activate, mount, and assign permissions to the drive at boot:

sudo whoami
sudo lvchange -a y /dev/Storage/Storage
sudo mount /dev/Storage/Storage /home/jon/Storage
sudo chown jon /home/jon/Storage
sudo chmod 777 /home/jon/Storage

It worked about 50% of the time. Frustrated, I headed over to the #kubuntu IRC channel to find a better solution.

Second Try
On the #kubuntu channel, I got help from a fellow who walked me through the correct creation process from the command line. The steps are as follows:

  1. Create identical partitions on sda and sdb:
    1. sudo fdisk /dev/sda
    2. n to create a new partition on the disk
    3. p to make this the primary partition
    4. 1 to give the partition the number 1 as an identifier. It will then appear as sda1 under /dev
    5. Assign first and last cylinders – I simply used the default values for these options, as I want the partition to span the entire drive
    6. t toggle the type of partition to create
    7. 8e is the hex code for a Linux LVM
    8. w to write your changes to the disk. This will (obviously) overwrite any data on the disk
    9. Repeat steps 1 through 8 for /dev/sdb
    10. Both disks now have partition tables that span their entirety, but neither has been formatted (that step comes later).
  2. Make the partitions available to the LVM:
    1. sudo pvcreate /dev/sda1
    2. sudo pvcreate /dev/sdb1
    3. Notice that the two previous steps addressed the partitions sda1 and sdb1 that we created earlier
  3. Create the Volume Group that will contain our disks:
    1. sudo vgcreate storage /dev/sda1 /dev/sdb1 will create the volume group that spans the two partitions sda1 and sdb1
    2. sudo vgdisplay /dev/storage queries the newly created volume group. In particular, we want the VG Size property. In my case, it is 931.52 GB
  4. Create a Logical Volume from the Volume Group:
    1. sudo lvcreate -L $size(M or G) -n $name $path where $size is the value of the VG Size property from above (G for gigabytes, M for megabytes), $name is the name you’d like to give the new Logical Volume, and $path is the path to the Volume Group that we made in the previous step. My finished command looked like sudo lvcreate -L 931G -n storage dev/storage
    2. sudo lvdisplay /dev/storage queries our new Logical Volume. Taking a look at the LV Size property shows that the ‘storage’ is a 931GB volume.
  5. Put a file system on the Logical Volume ‘storage’:
    1. sudo mkfs.ext4 -L $name -j /dev/storage/storage will put an ext4 file system onto the Logical Volume ‘storage’ with the label $name. I used the label ‘storage’ for mine, just to keep things simple, but you can use whatever you like. Note that this process takes a minute or two, as it has to write all of the inode tables for the new file system. You can use mkfs.ext2 or mkfs.ext3 instead of this command if you want to use a different file system.
  6. Add an fstab entry for ‘storage’ so that it gets mounted on boot:
    1. sudo nano /etc/fstab to open the fstab file in nano with root permissions
    2. Add the line /dev/storage/storage    /home/jon/Storage       ext4    defaults        0       0 at the end of the file, where all of the spaces are tabs. This will cause the system to mount the Logical Volume ‘storage’ to the folder /home/jon/Storage on boot. Check out the wikipedia article on fstab for more information about specific mounting options.
    3. ctrl+x to exit nano
    4. y to write changes to disk
  7. Change the owner of ‘storage’ so that you have read/write access to the LVM
    1. sudo chown -R jon:jon /home/jon/Storage will give ownership to the disk mounted at /home/jon/Storage to the user ‘jon’

Time for a Beer
Whew, that was a lot of work! If all went well, we have managed to create a Logical Volume called storage that spans both sda and sdb, and is formatted with the ext4 file system. This volume will be mounted at boot to the folder Storage in my home directory, allowing me to dump non-essential media files like my music collection and system backups to a large disk that is physically separate from my system partitions.

The final step is to reboot the system, navigate to /home/jon/Storage (or wherever you set the boot point for the LVM in step 6), right-click, and hit properties. At the bottom of the properties dialog, beside ‘Device Usage,’ I can see that the folder in question has 869GB free of a total size of 916GB, which means that the system correctly mounted the LVM on boot. Congratulations to me!

Much thanks to the user ikonia on the #kubuntu IRC channel for all the help.

This piece has been mirrored at Index out of Bounds

Happy Holidays!

December 25th, 2009 2 comments

Check out that quality hat

Categories: Jon F Tags: ,

Going Linux, Once and for All

December 23rd, 2009 7 comments

With the linux experiment coming to an end, and my Vista PC requiring a reinstall, I decided to take the leap and go all linux all the time. To that end, I’ve installed Kubuntu on my desktop PC.

I would like to be able to report that the Kubuntu install experience was better than the Debian one, or even on par with a Windows install. Unfortunately, that just isn’t the case.

My machine contains three 500GB hard drives. One is used as the system drive, while an integrated hardware RAID controller binds the other two together as a RAID1 array. Under Windows, this setup worked perfectly. Under Kubuntu, it crashed the graphical installer, and threw the text-based installer into fits of rage.

With plenty of help from the #kubuntu IRC channel on freenode, I managed to complete the Kubuntu install by running it with the two RAID drives disconnected from the motherboard. After finishing the install, I shut down, reconnected the RAID drives, and booted back up. At this point, the RAID drives were visible from Dolphin, but appeared as two discrete drives.

It was explained to me via this article that the hardware RAID support that I had always enjoyed under windows was in fact a ‘fake RAID,’ and is not supported on Linux. Instead, I need to reformat the two drives, and then link them together with a software RAID. More on that process in a later post, once I figure out how to actually do it.

At this point, I have my desktop back up and running, reasonably customized, and looking good. After trying KDE’s default Amarok media player and failing to figure out how to properly import an m3u playlist, I opted to use Gnome’s Banshee player for the time being instead. It is a predictable yet stable iTunes clone that has proved more than capable of handling my library for the time being. I will probably look into Amarok and a few other media players in the future. On that note, if you’re having trouble playing your MP3 files on Linux, check out this post on the ubuntu forums for information about a few of the necessary GStreamer plugins.

For now, my main tasks include setting up my RAID array, getting my ergonomic bluetooth wireless mouse working, and working out folder and printer sharing on our local Windows network. In addition, I would like to set up a Windows XP image inside of Sun’s Virtual Box so that I can continue to use Microsoft Visual Studio, the only Windows application that I’ve yet to find a Linux replacement for.

This is just the beginning of the next chapter of my own personal Linux experiment; stay tuned for more excitement.

This post first appeared at Index out of Bounds.

Debian Device Driver Check

December 19th, 2009 No comments

Just wanted to bring this website that I found today to everybody’s attention. It’s an online tool that checks if your hardware is supported by Debian. All you need to do is boot the target system from a live CD, type lspci -n at the command line, and paste the output into the text field on the site.

The system then checks a database to see if each of your devices is supported, and gives you a handy readout that shows which drivers you should use for each device. Because Debian is so strict about free software (as in speech, not as in beer), if your hardware passes this test, you should be able to find open sourced drivers that will allow any distribution to run on it.

How is it doing that?

December 15th, 2009 13 comments

Just about everything that I’ve ever read about media playback on Linux has been negative. As I understand the situation, the general consensus of the internet is that Linux should not be relied on to play media of any kind. Further, I know that the other guys have had troubles with video playback in the past.

All of which added up to me being extremely confused when I accidentally discovered that my system takes video playback like a champ. Now from the outset, you should know that my system is extremely underpowered where high definition video playback is concerned. I’m running Debian testing on a laptop with a 1.73 GHz single-core processor, 758MB shared video RAM, and a 128MB Intel GMA 900 integrated graphics card.

Incredibly enough, it turns out that this humble setup is capable of playing almost every video file that I can find, even with compiz effects fully enabled and just a base install of vlc media player.

Most impressively, the machine can flawlessly stream a 1280x528px 1536kb/s *.mkv file over my wireless network.

As a comparison, I have a Windows Vista machine with a 2.3GHz processor, 4GB of RAM, and a 512MB video card upstairs that can’t play the same file without special codecs and the help of a program called CoreAVC. Even with these, it plays the file imperfectly.

I can’t explain how this is possible, but needless to say, I am astounded at the ability of Linux.

A Tale of Two Fonts

December 10th, 2009 3 comments
Hey, where'd my text go?

Hey, where'd my text go?

I set my system font to Dingbat, which worked perfectly in every application except for Open Office. The strange part is that the font worked just fine in all of the other programs that I have installed. Silly OpenOffice.

Coming to Grips with Reality

December 8th, 2009 No comments

The following is a cautionary tale about putting more trust in the software installed on your system than in your own knowledge.

Recently, while preparing for a big presentation that relied on me running a Java applet in Iceweasel, I discovered that I needed to install an additional package to make it work. This being nothing out of the ordinary, I opened up a terminal, and used apt-cache search to locate the package in question. Upon doing so, my system notified me that I had well over 50 ‘unnecessary’ packages installed. It recommended that I take care of the issue with the apt-get autoremove command.

Bad idea.

On restart, I found that my system was virtually destroyed. It seemed to start X11, but refused to give me either a terminal or a gdm login prompt. After booting into Debian’s rescue mode and messing about in the terminal for some time trying to fix a few circular dependencies and get my system back, I decided that it wasn’t worth my time, backed up my files with an Ubuntu live disk, and reinstalled from a netinst nightly build disk of the testing repositories. (Whew, that was a long sentence)

Unfortunately, just as soon as I rebooted from the install, I found that my system lacked a graphical display manager, and that I could only log in to my terminal, even though I had explicitly told the installer to add GNOME to my system. I headed over to #debian for some help, and found out that the testing repositories were broken, and that my system lacked gdm for some unknown reason. After following their instructions to work around the problem, I got my desktop back, and once more have a fully functioning system.

The moral of the story is a hard one for me to swallow. You see, I have come to the revelation that I don’t know what I’m doing. Over the course of the last 3 months, I have learned an awful lot about running and maintaining a Linux system, but I still lack the ability to fix even the simplest of problems without running for help. Sure, I can install and configure a Debian box like nobody’s business, having done it about 5 times since this experiment started; but I still lack the ability to diagnose a catastrophic failure and to recover from it without a good dose of help. I have also realized something that as a software developer, I know and should have been paying attention to when I used that fatal autoremove command – when something seems wrong, trust your instincts over your software, because they’re usually correct.

This entire experiment has been a huge learning experience for me. I installed an operating system that I had never used before, and eschewed the user-friendly Ubuntu for Debian, a distribution that adheres strictly to free software ideals and isn’t nearly as easy for beginners to use. That done, after a month of experience, I switched over from the stable version of Debian to the testing repositories, figuring that it would net me some newer software that occasionally worked better (especially in the case of Open Office and Gnome Network Manager), and some experience with running a somewhat less stable system. I certainly got what I wished for.

Overall, I don’t regret a thing, and I intend to keep the testing repositories installed on my laptop. I don’t usually use it for anything but note taking in class, so as long as I back it up regularly, I don’t mind if it breaks on occasion; I enjoy learning new things, and Debian keeps me on my toes. In addition, I think that I’ll install Kubuntu on my desktop machine when this whole thing is over.  I like Debian a lot, but I’ve heard good things about Ubuntu and its variants, and feel that I should give them a try now that I’ve had my taste of what a distribution that isn’t written with beginners in mind is like. I have been very impressed by Linux, and have no doubts that it will become a major part of my computing experience, if not replacing Windows entirely – but I recognize that I still have a long way to go before I’ve really accomplished my goals.

As an afterthought: If anybody is familiar with some good tutorials for somebody who has basic knowledge but needs to learn more about what’s going on below the surface of a Linux install, please recommend them to me.

Eclipse… Again

November 21st, 2009 No comments

Man I’m beginning to sound like a broken record. Last night I reinstalled my Debian system. Somewhere along the line, I made a mess with my repositories, and as Wayne suggested in the comments on one of my previous posts, a good way to avoid many of these issues is to install your Testing system directly from a netinst daily build cd image instead of installing Lenny and then upgrading.

So I did. Upon inserting the install disc and attempting to use the graphical installer, I was confronted with a terminal spewing error messages about missing drivers or something. Figuring that this was just an error related to the daily installer build, I backed out of the graphical installer and took a shot at the expert install. Now that I know my way around Linux, the expert installer isn’t so daunting, and the rest of the process went smoothly, although it took awhile.

This morning, I figured I’d be productive and write some Java on my freshly installed system. So I went over to synaptic, and searched out Eclipse… only to find that it didn’t exist in the Testing repositories. How strange. A google and a half later and I had found that eclipse is available in Lenny, as well as Sid, but is conspicuously absent from Testing. What to do?

I hit the #debian IRC channel and asked for a bit of help, which i promptly got, in the form of these instructions:

  1. Add the line deb-src sid main non-free contrib to your sources list.
  2. From a root terminal, run apt-get update
  3. From a root terminal, run apt-get install build-essential
  4. Navigate to an empty directory somewhere on your system
  5. Run apt-get build-dep eclipse. This will download almost 200MB of source code to your system. Don’t do it over a wireless connection like I did.
  6. Run apt-get -b source eclipse. Don’t worry if this step takes forever – it took almost an hour on my system.
  7. install the resultant debs. This step is painful, because while all of the dependencies will have been created for you, there is a certain order to installing them that requires a bit of trial and error to figure out.

So after a little over an hour of messing about, I have a working Eclipse install on my system, and can get some real work done. It was frustrating, but hey, thanks to the guys over at #debian, it wasn’t the end of the world.

I Cannot Has Eclipse?

November 20th, 2009 No comments
Screenshot-Add-Remove Applications

You know, that's interesting, as I'm quite certain that I've installed Eclipse on x86 hardware before...

Configuring BlueZync and Failing at Barry

November 6th, 2009 1 comment

After successfully compiling and installing the BlueZync for Thunderbird plugin last night, I decided to take a shot at actually synchronizing my Blackberry with Thunderbird. The first step was a little bit of configuration. For that, I followed this guide on the BlueZync website.

Everything was going fine until I got to the section entitled “Mozilla plugin for OpenSync.” In this section, you are instructed to execute the command ldconfig -p | grep, which checks if the file is registered as a symlink on your system. After finding out that it was not, I entered the command locate from a root terminal, and found three locations for the file in question on my system. I then used the line export LD_LIBRARY_PATH=/usr/lib/icedove:/usr/lib/iceowl:/usr/lib/xulrunner-1.9 to register the symlink. Unfortunately, even after running the export command, ldconfig failed to find the link. Although this one will probably bite me in the ass later on, I’ll skip it for now.

At this point in the install process, I could access the BlueZync settings panel from within Thunderbird, and run the command line osynctool –listplugins and see the mozilla-sync plugin listed, which is the part of the BlueZync suite that really interests me. mozilla-sync is a plugin for OpenSync that should allow me to interface my Blackberry with Thunderbird (with the help of the Barry libraries, which provide another OpenSync plugin that communicates with the phone).

To continue, it was necessary to install all of the elements of the Barry libraries in order to get their OpenSync plugin that would complete the chain. This is where I may have committed my second cardinal sin – dpkg notified me that in order to install the opensync-plugin-barry package, I had to install a version of the libopensync0 package that was between v0.22 and v0.3. As I understand it, Bluezync already installed some version of OpenSync onto my machine, and I have a feeling that reinstalling a different version may ruin all of the progress that I’ve made thus far.

Indeed, after finishing the Barry install and running osynctool –listplugins again, mozilla-sync was still listed, but opensync-plugin-barry was not. This is strange, as in my last three attempts at this process, getting Barry to show up was the easy part. Now the tables have turned, and I have what I assume to be a properly working BlueZync install, but without the Barry component that would make it all work with my phone.

Back to the proverbial drawing board with me…

(Finally) Installing Bluezync for Thunderbird

November 5th, 2009 1 comment

After some constructive comments from Henrik, the developer of the BlueZync plugin for Thunderbird, I decided to take another shot at getting Blackberry sync working on Linux. This time, instead of making up my own instructions, I actually followed his (which have been updated somewhat since my last visit).

Surprisingly, when I followed the instructions to the letter, the plugin built correctly the first time without any problems. When I launched Icedove (the Debian rebranding of Mozilla Thunderbird), the plugin even loaded correctly! If you’ve read my past posts detailing this process, you’ll feel as incredulous as I did.

The only trouble that I ran into along the way was actually with version 0.9 of the Lightning plugin for Icedove (Thunderbird). Upon installation of the plugin, I was not able to create a calendar, an event, or a task. Turns out that this Ubuntu bug applies to Debian as well, and that the problem can be easily fixed by uninstalling Lightning, downloading and installing the libstdc++5 package, and reinstalling the Lightning plugin. For whatever reason, I could not find this package in the Debian Testing repositories, and instead downloaded and installed it from the Lenny repositories.

With that issue solved, I tried running the ./ script, and was met yet again with a slew of failed tests:

21% tests passed, 15 tests failed out of 19

The following tests FAILED:
5 – thunderbird (Failed)
6 – tbird_empty (Failed)
7 – tbird_slow (Failed)
8 – tbird_slow_3 (Failed)
9 – tbird_fast (Failed)
10 – tbird_add (Failed)
11 – tbird_delete (Failed)
12 – tbird_modify (Failed)
13 – light_empty (Failed)
14 – light_slow (Failed)
15 – light_slow_3 (Failed)
16 – light_fast (Failed)
17 – light_add (Failed)
18 – light_delete (Failed)
19 – light_modify (Failed)

However, unlike in past attempts at this install, this time the Bluezync plugin is visible from within Thunderbird… Now all I have to figure out is how to use it. More on that later.

Back at Square 1

November 2nd, 2009 2 comments

This morning I reinstalled my Debian system. I began by downloading an ISO for the current Debian Stable build (called Lenny), and installing it with the graphical installer. That done, I used a couple of my old posts to get my wireless firmware installed and to upgrade my system to the Testing repositories.

Unfortunately, I have realized that a clean install of Debian Linux is a pretty plain place to be in. Even though I have the benefit of my old writings to help me get up to speed, some, like the ones dealing with how to get Compiz working properly, are somewhat lacking in detail.

Naturally, I’ve replaced all of the problems that running multiple desktop environments was causing with all of the problems that an entirely unconfigured system can cause. I’ve already mentioned that I haven’t gotten Compiz working yet (whenever I turn it on, all of my window decorations disappear), and there is some error with Postgre that causes Synaptic and Aptitude to complain whenever I make changes to my system:

E: postgresql-8.4: subprocess installed post-installation script returned error exit status 1
E: postgresql: dependency problems – leaving unconfigured
E: postgresql-contrib-8.4: dependency problems – leaving unconfigured
E: postgresql-contrib: dependency problems – leaving unconfigured

Most stressing is the fact that I cannot get into the preferences for the Nautilus file system browser. Whenever I try to open the preferences dialog from the edit menu, it (and most of GNOME) crash. Running Nautilus from the terminal yields me this output:

(nautilus:4213): Gtk-CRITICAL **: gtk_combo_box_append_text: assertion `GTK_IS_COMBO_BOX (combo_box)’ failed

(nautilus:4213): GLib-GObject-CRITICAL **: g_object_set_data_full: assertion `G_IS_OBJECT (object)’ failed

(nautilus:4213): Gtk-CRITICAL **: gtk_widget_set_sensitive: assertion `GTK_IS_WIDGET (widget)’ failed

(nautilus:4213): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(nautilus:4213): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)’ failed

(nautilus:4213): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(nautilus:4213): GLib-GObject-CRITICAL **: g_signal_handlers_block_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)’ failed

(nautilus:4213): GLib-GObject-CRITICAL **: g_object_get_data: assertion `G_IS_OBJECT (object)’ failed
Segmentation fault

Actually, the terminal prints output similar to the above, but so much of it that this post would take up most of the front page of the site were I to post it all. I have no idea what the hell any of that means, or how it got into my system, or why I cannot get into the preferences panel of Nautilus as a result.

Until I do figure it out, I’ll be spending a lot of time on the #debian channel. Along with these major problems come a number of small tasks, like adding myself to the sudo keyring, adding the Testing repository keys to my sources list so that it stops yelling that all of my software is unverifiable.

Fucking Linux.

Reinstalling Linux

November 2nd, 2009 2 comments

Generally, after using a Windows machine for close to a year, it gets bogged down and slow and benefits greatly from a reinstall. After about 2 months of using Linux, and installing three different desktop managers on top of one another, I’ve found the same with my Linux install.

I attribute most of the problems that I’ve been having to the relationship between XFCE and KDE. After installing KDE and playing with it for one evening, I hightailed it back to XFCE, and found that many of  the options that I set in KDE leeched their way back into XFCE.

For instance, all of the window decoration that I set in KDE, the default web browser and file manager all persist in XFCE. Thanks to the light weight way that XFCE handles settings (read: it doesn’t save them, and doesn’t listen to ones that you do set, so don’t expect it to), most of KDE has leeched into my XFCE install.

This, along with a few other minor problems that I’ve been having lately, as well as a curiosity about what the install process would be like now that I know what I’m doing, have lead me to attempting a fresh install. Ideally, I’ll be back up and running within an hour.

Cheers, and wish me luck.

Categories: Debian, Jon F, KDE, XFCE Tags: , , , ,

FTP Trials

October 24th, 2009 2 comments

I use FTP for a lot of things, mostly related to website administration. On Windows, my client of choice is WinSCP. It has this great feature that allows you to constantly synchronize a local directory with a remote directory, allowing you to make changes in your local editor of choice, and have them reflected on the site as soon as you save the file.

On Linux, I’ve been remoting into the server via SSH, opening the remote file in nano, and copying and pasting my local code to the server. While the combination of SSH and bash scripting can allow for some really cool code, I’d rather just find an application that mimics the WinSCP functionality that I’m looking for.

To that end, I have raided Synaptic and downloaded as many different graphical FTP clients as I could find. Read on, dear reader, as I delve into the depths of FTP on Linux, and share my findings with you.

1. BareFTP
This app is written in C# (for really cool cross-platform action), and targets the Mono framework on the GNOME desktop environment. It supports the FTP, FTPS, and SFTP protocols, and has a nice, clean looking interface:


It's pretty and functional, no?

I really like this app. It has a nice, intuitive interface, feels quick, and supports bookmarks that let you automatically connect to a remote server and set your local and remote directories with a single button click. Unfortunately, the program does not appear to support any kind of scripting or directory watching, so while it may see use as a client for occasional file transfers, it likely won’t suffice as a WinSCP replacement.

2. Filezilla
Before discoving WinSCP, I used this app for a long time on Windows. It’s an excellent utility that seems to have improved quite a bit since the last time I used it.

More features along with a more cluttered interface.

More features along with a more cluttered interface.

Of particular interest to me are the Synchronized Browsing and Directory Comparison features. The former changes the remote directory whenever you change the local directory, so that you can always keep an eye on the difference between local and remote files. To that end, the latter feature applies a colour coded scheme to both local and remote files so that you know exactly what has been synchronized to the server and what hasn’t. However, like bareFTP, there is no synchronization support.

And Others…
The unfortunate part about this little exercise is that after trying another three FTP clients, I realized that they’re roughly all the same. Sure, some are uglier, like JFTP, and some are uber streamlined like kasablanca. Unfortunately, even though they all do the same task in a slightly different way, none of them do quite what I want.

And so I ask you, the reader – is there an FTP client that allows me to synchronize a local directory with a remote one?

Learning to live with XFCE

October 24th, 2009 2 comments

There’s no doubt that when I initially switched from GNOME to XFCE, I was pretty angry. But hey, you can’t stay mad forever – In time, I’ve learned to appreciate GNOME’s minimalistic cousin for what it is, and (unlike some of the other guys) haven’t yet decided whether or not I’ll be switching back to GNOME tomorrow.

Sure, XFCE was a pain to get set up, but since then, it’s been fast and exceedingly stable. As a point of comparison, while running GNOME, I experienced daily crashes related to a known issue between Compiz and my Intel integrated video card. On XFCE, this issue has yet to manifest itself, although this may also have something to do with all of the upgrades that I made the day before changing desktop environments. With the addition of Compiz, GnomeDo+Docky, and some minor customization, I’ve created a desktop that is pleasing to look at, but remains responsive and lightweight on my aging hardware.

My only major complaint with XFCE remains the organization of the “Start Menu.” While I initially thought that the idea of separate Application, Places, and System menus in GNOME were stupid (having come from a Windows background), I find myself missing them under XFCE. I find their single menu system cluttered and hard to navigate, even with it’s sub-menus. GnomeDo improves things, but only if you know the name of the feature or setting that you’re searching for.

On the other hand, the GNOME community has just released a new version of their desktop environment, and it seems to include some neat new features. More importantly, the GNOME community has done a lot of thinking about where they want to take v3.0, due for release in either March or September of 2010. Some of the most interesting ideas that have come from this brainstorming (in my mind anyway), are a new desktop paradigm, supported mainly by a new compositing engine called Gnome Shell, and a new way of browsing your files called Gnome Zeitgeist. Check out some early demo screens here.

Hell, I might even consider taking the KDE plunge, just to see what all of the rage is about…

GUI Failure

October 14th, 2009 No comments

Now that I’m running the Testing repositories, I actually get regular updates. Today, there were 15 available for my system. However, when I started the update manager, I was confronted with this dialog:


Well what the hell does that mean, anyway? Does it mean that the safe-upgrade will not remove any existing packages or install any new ones? Or is it asking if I would like to perform a safe-upgrade as opposed to installing new packages? Should I just click the Yes button, because it is green and the No button is red? Am I even seeing the correct colours? I am colourblind, you know. Furthermore, if I don’t understand what’s happening here, where can I get more information? How come, no matter what I choose, the Apply button on the next screen is disabled until I manually clear and re-select every update in the list? Lastly, how come the entire update manager crashes when I hit the Check button? It seems unable to resolve one of the sources in my list (one that doesn’t even appear in my /etc/apt/sources.list file), and instead of timing out, sits, waiting, presumably forever, no matter how many times I hit the Cancel button. I’m a seasoned computer user with well over a month of Linux under my belt and I’m concerned – what of those other users who don’t know shit about shit? I want blood, damnit!


XFCE: A Bitch Session

October 14th, 2009 10 comments

After a full day of using XFCE as my new desktop environment, I have just a few complaints, handily summarized in the following ordered list:

  1. No Alt-Tab: I was under the impression that alt-tab window switching was a standard feature of every desktop environment since at least Windows 98. So where the hell is it in XFCE? Nowhere! That’s where! Instead, I enabled the ring switcher plugin for Compiz, which I had to run in order to use GNOME Do anyway.
  2. Default Browser Doesn’t Save: This one started out with the crappy default web browser that comes with XFCE, Web Browser 2.26.3. It is allegedly a GNOME project (which is odd to say the least, since this is XFCE, and GNOME defaults to the Epiphany Browser). In any case, even after setting the default browser to Firefox (Iceweasel in my case), the system still launches all links in this inferior app.
    Screenshot-Preferred Applications
  3. Cursor Set Doesn’t Apply Immediately: Along with changing the default web browser for my system, I changed the cursor set. The default one was ugly, so I grabbed some new ones from Synaptic, and set one in the mouse theme options dialog. The problem is that the cursor set doesn’t change until some random amount of time has elapsed after I log on. So my session begins with the old, ugly cursors, and then eventually gets around to changing over to the prettier new ones. What the hell?
  4. GNOME Do and Screenlets Don’t Always Start: This one is likely related to running Compiz on top of XFCE (which includes it’s own compositing engine), and the order of startup applications. In any case, sometimes when I log on, GNOME Do and Screenlets fail to start, and I have to bring them up manually. I have a feeling that this is because Compiz hasn’t yet started, and the applications fail, as they rely on it being there. Still, a hearty WTF to this one as well.
  5. Default File Browser Lacks Network Locations: The XFCE default File Manager is Thunar 1.0.1, which is fine, except that it does not include any way to browse network shares. In GNOME, I can hit the ‘Network’ place, and immediately view any available SMB share drives on my local network. As of yet, I haven’t figured out how to find or mount network locations through the XFCE GUI.
  6. The ‘Start’ Menu Fails: I never thought that I would say this, but I find myself longing for the Applications/Places/System menus of GNOME, instead of the mashed together start menu that is present under XFCE. Although this could just be because I’m not yet familiar with XFCE, I find it harder to locate programs in this menu system. The GNOME organization just felt more logical once you got used to it.
  7. Lack of Default Features: This speaks mostly to the organization of XFCE. Instead of including every imaginable feature in the default install, extra features are added through a series of plugins, so as not to bog down machines that don’t require them. As such, my default install did not include a battery level indicator, a wireless network strength monitor, or a slew of other ‘basic’ desktop environment features. Installing the package xfce4-goodies fixed all of these problems.

Of course, not everything about XFCE is bad. So far, I’ve found it to be stable and exceedingly fast. X11 hasn’t crashed once, although I have no doubt that it will; and once I installed the xfce4-goodies package, I found the environment to be very functional. Overall, I am pleased with my choice, even though there have been some minor setup annoyances.

Testing out Testing

October 13th, 2009 No comments

With everybody switching up their desktop environments this week, I decided that I’d take a shot at installing XFCE on my system. My initial research showed that it is somewhat like a light-weight, highly customizable GNOME. Since I’m running on older hardware, it seemed like the best choice for me. While at it, I also decided to go ahead and move my Debian install from the stable to the testing repositories. In an ideal world, this switch would open the doors to some newer software, alleviating many of the issues that I have had with older software.

Moving to Testing:

Without bothering to do any research, I added the Debian Testing repository to my sources list and told the machine to check for available updates. It immediately found 655 new packages available for installation. Luckily, Debian offered me a handy “Smart Upgrade Manager” and I didn’t have to navigate the upgrade process myself:


After hitting the Smart Upgrade button, my machine chugged away for a few moments, figuring out dependencies and the like, and finally presenting me with a 1289.4MB list of 1570 required packages. Hoping for the best, I hit Apply, and spent the next 2 hours waiting for the necessary downloads to complete. Three episodes of House and an episode of Flashpoint later, at almost 1am, the install process was finally finished. So far, everything seemed alright.

Until I restarted. With the updates applied, my machine booted just fine, and even allowed me to login. Unfortunately, it never made it as far as the desktop. I was presented with a blank grey screen and a mouse pointer (which does work), but no windows, toolbars, or panels to speak of. It seems then, that X11 is working, but that it isn’t launching a window manager of any kind on login. I hit ctrl+alt+F1 and was relieved to find that I still had a terminal, and access to all of my files. But where did my desktop go?

Once at the terminal, I launched Aptitude, to see if there were some broken packages that needed to be fixed. It listed 190 that ought to be removed, and another 6 that ought to be upgraded, including GNOME. Hoping to fix the problem, I told it to get to work, and watched as it attempted to clean up the mess that I had created. That finished, I did what I should have done in the first place, and followed these instructions in an attempt to fix my system by upgrading properly.

This time, everything worked nicely, and within minutes, I was looking at my desktop through the brand spanking new GNOME v2.28.0, just released on September 27th. A solitary hiccup with dependencies required me to completely remove and reinstall the Compiz compositing engine. Friends, I speak to you now from the bleeding edge of the Debian GNU/Linux experience. From this point onward, I will receive the very latest code, just as soon as all release-critical bugs have been addressed. Sweet.

Adding XFCE:

From my newly stable machine, I opened up Synaptic package manager and installed the xfce4 package, which pulled all of the necessary components of my new desktop in as dependencies. I also added the xfce4-artwork package, as it promised a slew of extra pretty desktop backgrounds to play with. After adding Gnome Do, Docky, and playing around with the desktop settings, I arrived at a pretty decent looking desktop:


My first impressions of the desktop are that it seems very solid, fast, and customizable. Unfortunately, it is lacking a few creature comforts, mainly alt-tab window switching (seriously, what the fuck?), and drag-and-drop from menu items to  other windows. Over the next couple of weeks, I’ll give it a solid run, and see if it will become my Desktop Environment of choice.

Edit: After a long look down the tubes, I concluded that XFCE doesn’t support alt-tab, and just enabled the Ring Switcher plugin for Compiz to do the job instead.