Each year my wife and I make a photobook for the previous year. We started doing this around four years ago. For the first album, we used Photobox, but I have found their online tool a little clunky to use. A friend of ours introduced us to Blurb – a company which provides an offline tool to create photo books in – which then uploads the book structure and images, once the process of creating the book is complete. This is a great way to make the book as it doesn’t require a constant Internet connection. In general, we have been very happy with the quality of the books and the speed of printing and delivery.
The main problem with the Booksmart application is that, despite being a Java app, there is no download available for Linux. There are a number of guides which aid in installing and running the application – I have used the help page offered on the Ubuntu forums, but have also had to make some changes to the process, which I will detail here.
Firstly, download the latest Mac (not Windows) version of BookSmart. The version I have used most recently is BookSmart 3.4.4. You will have to log in to Blurb in order to gain access to the downloads section.
Now install dmg2img to convert the DMG file into something that Linux can mount. Then, convert the file using:
sudo mkdir /macbooksmart sudo mount -t hfsplus -o loop BookSmart_3.4.4.img /macbooksmart
I have a folder in my home directory called Applications into which I place applications such as this.
mkdir ~/Applications/booksmart/ sudo cp -r /macbooksmart/BookSmart.app/Contents/Resources/Java/lib/ ~/Applications/booksmart/ sudo cp -r /macbooksmart/BookSmart.app/Contents/Resources/Java/resources/ ~/Applications/booksmart/ sudo cp /macbooksmart/BookSmart.app/Contents/Resources/booksmart.icns ~/Applications/booksmart/
The 3.4.4 Mac version of BookSmart will only run under Oracle Java 1.6. If you do not run it under 1.6 (or even if you run it under OpenJDK 1.6), you will get an exception in the Terminal – e.g. under Java 1.7:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/sun/java/swing/SwingUtilities2
In order to get BookSmart running, it is essential to install Java 1.6, which can be downloaded from Oracle. You may have to jump through a few hoops to get the install working as Oracle are not keen on giving you an older version to Java.
Once the Java 1.6 install is complete, the executables should be in:
Create a script that can start BookSmart:
echo '#! /bin/sh cd ~/Applications/booksmart classpath="" # Build classpath with all jars in the lib directory for jar in lib/*.jar do classpath=$classpath:$jar done /opt/java/32/jdk1.6.0_45/bin/java -Xincgc -ea -Xms256m -Xmx1024m -classpath $classpath com.blurb.booksmart.application.BookSmart exit $? ' > ~/Applications/booksmart/booksmart.sh sudo chmod a+x ~/Applications/booksmart/booksmart.sh