Noah Watkins

github
twitter
linkedin

Build Ceph on aarch64 Ubuntu 14.10

In this post we’ll create an arm64 build of Ceph. The main issue faced is an unmet dependency on Ubuntu 14.10 (arch=arm64) for building the Ceph Debian packages.

[email protected]:~$ git clone --recursive https://github.com/ceph/ceph.git
Cloning into 'ceph'...
remote: Counting objects: 276504, done.
...
[email protected]:~$ cd ceph
[email protected]:~/ceph$ ./install-deps.sh 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
dpkg-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  liblzo2-2 libpkcs11-helper1
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libpython2.7-stdlib' instead of 'python-argparse'
E: Unable to locate package libgoogle-perftools-dev

This package is available for arm64 in sid/jessie, but it hasn’t made it up to Ubuntu repositories yet. Let’s try to download and install it manually.

[email protected]:~$ wget http://http.us.debian.org/debian/pool/main/g/google-perftools/libgoogle-perftools4_2.2.1-0.2_arm64.deb
[email protected]:~$ wget http://http.us.debian.org/debian/pool/main/g/google-perftools/libtcmalloc-minimal4_2.2.1-0.2_arm64.deb
[email protected]:~$ wget http://http.us.debian.org/debian/pool/main/g/google-perftools/libgoogle-perftools-dev_2.2.1-0.2_arm64.deb
[email protected]:~$ sudo dpkg -i *.deb
(Reading database ... 80633 files and directories currently installed.)
Preparing to unpack libgoogle-perftools4_2.2.1-0.2_arm64.deb ...
Unpacking libgoogle-perftools4 (2.2.1-0.2) over (2.2.1-0.2) ...
Preparing to unpack libgoogle-perftools-dev_2.2.1-0.2_arm64.deb ...
Unpacking libgoogle-perftools-dev (2.2.1-0.2) over (2.2.1-0.2) ...
Preparing to unpack libtcmalloc-minimal4_2.2.1-0.2_arm64.deb ...
Unpacking libtcmalloc-minimal4 (2.2.1-0.2) over (2.2.1-0.2) ...
Setting up libtcmalloc-minimal4 (2.2.1-0.2) ...
Setting up libgoogle-perftools4 (2.2.1-0.2) ...
Setting up libgoogle-perftools-dev (2.2.1-0.2) ...
Processing triggers for libc-bin (2.19-10ubuntu2.1) ...

So far so good. Now let’s try to install those dependencies again:

[email protected]:~/ceph$ ./install-deps.sh 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
dpkg-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  liblzo2-2 libpkcs11-helper1
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libpython2.7-stdlib' instead of 'python-argparse'
autotools-dev is already the newest version.
autotools-dev set to manually installed.
build-essential is already the newest version.
build-essential set to manually installed.
git is already the newest version.
libboost-dev is already the newest version.
libpython2.7-stdlib is already the newest version.
libtool is already the newest version.
lsb-release is already the newest version.
python is already the newest version.
uuid-runtime is already the newest version.
libgoogle-perftools-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  liblzo2-2 libpkcs11-helper1
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  at-spi2-core ca-certificates-java colord colord-data dbus-x11 dconf-gsettings-backend dconf-service dctrl-tools default-jre default-jre-headless desktop-file-utils devscripts dh-apparmor diffstat
  distro-info-data dput eject fontconfig fonts-dejavu-extra gconf-service gconf-service-backend gconf2 gconf2-common gettext gvfs gvfs-common gvfs-daemons gvfs-libs hardening-includes hicolor-icon-theme
  intltool-debian java-common libaio1 libapt-pkg-perl libarchive-zip-perl libasprintf-dev libasyncns0 libatasmart4 libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data
  libatspi2.0-0 libauthen-sasl-perl libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1 libbabeltrace-ctf1 libbabeltrace1 libbonobo2-0 libbonobo2-common libboost-atomic1.55-dev
  libboost-atomic1.55.0 libboost-chrono1.55-dev libboost-chrono1.55.0 libboost-date-time1.55-dev libboost-date-time1.55.0 libboost-filesystem1.55.0 libboost-program-options1.55-dev
  libboost-program-options1.55.0 libboost-serialization1.55-dev libboost-serialization1.55.0
  ...
7a4c95584779a0f63e5cb9180b39ca5eabcf133b