Reposado: An alternative software update server

Windows Server 2008 with OS X Software Update

Windows Server 2008 with OS X Software Update

We reported earlier this month about Walt Disney Animation Studios releasing an open source OS X update server called Reposado. The idea behind the project is to give an open source alternative to update Mac OS X computers without going directly to Apple for each computer.

Apple already provides a way to create a Software Update server for use within your organization. The process requires you to have a server that is running the latest version of the Mac OS X Server software in order to have the server update the client machines over the network. In other words, you can’t use a server running Mac OS X Server Leopard (10.5) to update clients running Mac OS X 10.6 clients, at least not easily. The server running the Software Update software does not have to be top of the line, but it has to be able to run the latest version of the OS, so that ccould be problematic in some situations.

To eliminate the requirement to have an OS X machine, Walt Disney Animation Studios (WDAS) has produced an alternative that works quite well. The setup is not nearly as easy as an OS X Software Update server, but it is not too difficult either.

There are a few requirements before you can actually download and install Reposado. You need to have a computer that runs a web server, curl, and python. If you meet these requirements and have some hard drive space, you can run Reposado.

Once you have downloaded the package — it’s hosted on GitHub — you unzip it and then you will need to run the setup.py file. This file will give you instructions on installation, which you should actually read and understand. Once you have completed that task, you can actually configure the server using the repotuil --configure command.

This command will ask for three items:

  • The location of the catalogs
  • The location of the content
  • The name of the server

If you prefer to use IP addresses instead of a fully qualified domain name, you can do that as well. If you wanted to, you could even store the updates on a different server than the catalogs if you really wanted to set up your updates in this manner.

After you have set up the software, you can do the initial sync of the updates. The command you issue is ./repo_sync. This is the time where you go and do something else for several hours, since depending on your bandwidth, this could take upwards of 10 to 12 hours. This will sync EVERY update that Apple has released since 2005. If this is not what you were hoping to download, then creating a branch may be the best way to go.

By default Reposado will download all of the updates that have been released — as of this writing that is 29GB worth of downloads. To create a branch you can use the repoutil command. A branch is useful to allow the testing of the updates before they are deployed onto production systems. You can create as many branches as you would like, such as for developers, sales, and servers, etc.

Once you have configured your server and downloaded the updates, you now have to point your clients to the new software update server. There are instructions included with the download. I even wrote up a step-by-step on how to configure your OS X clients to point to an internal Software Update server, which is a requirement if you want to have your clients use the internal server. The same steps apply in this scenario.

For my testing I created a branch called “NoSafari” that would exclude the update for Safari 5.0.5. I did this the manual way by using TextEdit and commenting out the Safari updates. The first go-round I left the Safari 5.05 update for Leopard enabled. This is what showed:

OS X with Safari Enabled after using Reposado

The copy of Snow Leopard that I used for testing still found the update, so I disabled the Leopard copy of Safari 5.05, and this is what I got on the second go-round:

OS X Update with No Safari using Reposado

What’s Macgasmic?

The ability to run the server on any hardware you own is a great feature. I stated above that as long as you have a web server, python, curl, and hard drive space, you could run Reposado without any issues. I ran my test using a Virtual Machine running Ubuntu 11.04. If you had an old PC lying around, you could use that.

The second Macgasmic item is that you can do branching, something that Apple’s own Software Update server cannot do. With Apple you can only configure the Software Update server as a single entity. If you do not want a device to get a specific update, you have to forego the update for all devices. This is not the case with Reposado — you can manage devices based upon group or in whatever way makes sense in your organization.

The last Macgasmic thing is that Reposado is open-source and free. This means that you do not have to pay the “Apple Tax” by purchasing a copy of OS X Server just to run an Update Server.

What’s Not?

This is not the simplest setup for basic administrators. If you were looking for a GUI to manage updates, stick with Apple. If you do not mind using the Terminal and having to do some research and testing, then Reposado is the way to go.

Final Thought

Reposado emulates exactly what Apple’s own Software Update server can do, with the added benefit of allowing you to create branches and manage updates in a more controlled manner. Currently there is no GUI for Reposado, but I think this will change in the future. Either WDAS will release one or another 3rd-party will create a GUI. To me it wouldn’t matter if this was a simple PHP GUI that has to be run on a web server, much like PHPAdmin. Heck, maybe even PHPAdmin will slap something together.

I'm into everything technology related, particularly anything Apple related. I enjoy programming and tend to lean towards server-based technologies over client-based. You can contact me on twitter, via e-mail, or follow me on friendfeed.