Tag Archives: debian

Crashplan Install Script for ARM Debian on Pogoplugs and Dockstars

I’ve pulled together information from a few sources on installing Crashplan backup software on a Cloud Engines Pogoplug, or Seagate Dockstar, and turned it into a simple bash script.

The script assumes you’ve already installed and booted Debian on your device using the instructions and scripts provided by Jeff Doozan. Be sure to check his forum for updates.

My main contribution here is in pulling things together into a bash script. I’ve built on the work of others, in particular Crashplan user Torbjörn and Paul Chilton.

Get the script here.

Update:

  • The script now references a local mirror of the jtux source tarball, and the patchfile.
  • Script references an out of date version of Crashplan. You can probably just update the URL, but I haven’t tested it. On the other hand, Crashplan autoupdates for you.
  • More recent versions of Crashplan have a new native MD5 library dependency.  They complain about it in engine_error.log, but automatically fall back to a marginally slower java version of the routine instead.
  • The version of the openjdk6 package in Debian Squeeze has bugs in the JVM JIT. In my experience, this led to the Crashplan service dying occasionally, historically, and often now that I’ve got more files. The alternatives are to edit the java command-line options in /usr/local/crashplan/bin/run.conf to make it run in interpreted mode only (-Xint) or to download a copy of the Oracle Embedded JRE SE (ejre) for ARM v5 headless and update the crashplan scripts to use it.
  • I may update the script to deal with these issues once I have something to test the changes against, but I have too many other, higher priority, projects right now.

Simplifying Ubuntu Deployment with Custom Metapackages

I think being a good sysadmin requires a special combination of conscientiousness, industriousness, and laziness.  In the past, I’ve never quite had the right mix, I’ve been trying to change that though.  Most of the Ubuntu Linux systems we’ve deployed at work have been one-offs — One of the developers or I fired up a machine or virtual machine with an Ubuntu install CD and stopped once we had the machine doing whatever we needed it to do.  I simplified the process a little by saving a copy of a freshly created VM that I could reuse, but that still takes a bit of manual labor.  

When we started deploying virtual machines for deploying production and staging versions of our apps at an outside hosting provider, I decided it was time to up my game.  The virtual machines are provided with a very basic linux installation.  I scripted as much of the basic system configuration as possible, and was careful to update my script when I made a change or addition.  That helped considerably, when I brought up a second machine, but now that I’m about to do a third, I feel the need to go even further.

I’ve decided to take the approach of creating “metapackages” to handle the installation most of the required pieces. After that, I plan to create some basic packages for a few of the things that we are compiling from source.  I’d also like to figure out how best to automate the further configuration of some of the packages.

Ubuntu Linux is built on top of Debian Linux and it uses, apt (Advanced Packaging Tool), Debian’s packaging, system to manage software installation, maintenance, and removal.  Packages can contain binaries, configuration files and scripts, source code, documentation, etc.  They also define relationships with other packages, such as whether they depend on another package, what functions they make available that might satisfy dependancies of other packages, whether they are a replacement for some other package, etc.  Apt takes advantage of this information to make sure everything that needs to be installed gets installed, and doesn’t conflict with other pieces.  It’s this dependancy management that I’m going to take advantage of first.

A vast number of volunteers in the Ubuntu and Debian communities have done the hard work of packaging thousands of pieces of open source software for easy installation.  They’ve found the source code, they’ve figured out all the dependancies, they’ve considered important use cases to come up with useful default configurations.  They’ve tested things to make sure they work as expected, created patches if they don’t, and they update the packages when new versions of the packaged software is released or bugs are patched.  I’m going to take advantage of all their hard work by creating “metapackages,” which just specify all the existing packages I need to install.

Figuring out the best way to go about creating metapackages is a job in and of itself.  If wouldn’t be Linux if there weren’t at least 4 different ways to do things, and creating debian packages is no different. With some digging though, I found this post on the Ubuntu forums, which pointed to the “equivs” package, which was helpful, because it’s not mentioned in the Ubuntu Packaging Guide.  Armed with that clue, I found a nice looking HOWTO on the Ubuntu forums for creating metapackages with equivs.  It looks like it even covers one of my next steps, which is to handle custom configuration of the installed packages.

For now though, I’m headed outside to work in the yard since we got a break in the rain.  I plan on posting a followup once I’ve had a chance to try putting what I’ve learned into practice.