I am a proud owner of a NinjaBlocks device that I use to control my home (blinds, hot water, heater, presence detection,…), welcome to the Internet of Things! But that’s a story for next posts, the important thing is that the device is actually a BeagleBone board running Ubuntu connected to an Arduino board.
I thought, what would better than managing the NinjaBlock ubuntu with Puppet? there are a number of files and services I added there and it’d be nice to have puppet installed. But the official Ubuntu packages only offer puppet 2.7.11, so I installed the PuppetLabs repository package and tried to install Puppet 3, failing miserably because there is no Facter build for armhf platform, the same one used in Raspbian.
wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb sudo dpkg -i puppetlabs-release-precise.deb sudo apt-get update sudo apt-get install puppet
and got this
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:The following packages have unmet dependencies:
puppet : Depends: puppet-common (= 3.4.2-1puppetlabs1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
When I tried to install all the required packages
sudo apt-get install puppet puppet-common facter
then I found the actual error
The following packages have unmet dependencies:
facter : Depends: dmidecode but it is not installable
E: Unable to correct problems, you have held broken packages.
Investigating a bit I found that facter has a dependency on dmidecode that should be optional, as dmidecode is not available for arm platform and is not really needed for facter.
The solution? Rebuild the facter package removing that dependency, easily done with this script. When vi opens just delete the dmidecode dependency and you will get the fixed facter_1.6.18-1puppetlabs1_all.modified.deb
curl -O http://apt.puppetlabs.com/pool/precise/main/f/facter/facter_1.6.18-1puppetlabs1_all.deb curl -O https://gist.githubusercontent.com/carlossg/8578202/raw/70689b1b74517cc4b0743e54d84dae8375503159/videbcontrol.sh bash videbcontrol.sh facter_1.6.18-1puppetlabs1_all.deb # remove dependency to dmidecode in the editor that opens sudo dpkg -i facter_1.6.18-1puppetlabs1_all.modified.deb # If you want to use ruby 1.9 instead of 1.8 sudo apt-get install libaugeas-ruby1.9.1 ruby1.9.1 # puppet may not install if all the dependencies are not listed sudo apt-get install puppet puppet-common # mark dependencies as automatically installed so they are removed when removing puppet sudo apt-mark auto facter libaugeas-ruby1.9.1 puppet-common