Maemo, Moblin, MeeGo, and running RPMs on the #N900

The recent announcement about Nokia and Intel planning on merging Maemo and Moblin into MeeGo has generated a lot of interesting discussions online. What does this mean for the future of the N900? What does this mean for developers wishing to write for Maemo or Moblin? Perhaps the biggest discussion has been about the packaging system. On the MeeGo FAQ page, they say “MeeGo will use the .rpm format”.

Now if you think the wars between Mac and PC users can get a bit over the top, you should see the discussions that go on between developers concerning one packaging system or another. I jumped into the fray and asked if anyone had run RPM on the N900. Other than a few replies suggesting I wait until Meego is available or asking why anyone would want to do that, I’ve gotten little for responses.

So, I thought I would try to find or build RPM on the N900. My first pass was to try and find RPM for the N900, or for any ARM architecture. Initially, I had no luck, so I went with trying to build RPM for the N900. RPM relies on the NSS and NSPR libraries from Mozilla. I went and found source code for this as well and started the compilation process, but I kept hitting brick walls, so I set this aside.

I had heard that there was a port of Fedora to run on the ARM architecture, and so I went looking for that. On the Fedora Project Website I found a description of their ARM project, including a link to a prebuilt root filesystem. The compressed file system is about 100 Meg to download and decompresses to around 350 Meg.

With the file system decompressed and mounted over to my N900, I tried running a few simple commands. Simple commands ran nicely. However other commands depended on libraries that were not loaded on the N900. RPM, for example, needed librpm, librpmbuild, librpmio, as well as other libraries like libmagic, libcap, libacl, libbz2, and so on. I copied those that did not already exist on the N900 into my library path. At this point, I tried running RPM again, and got a few different errors. Libpopt complained about no version information being available. Libc complained that GLIBC_2.8 and GLIBC_2.11 were not available.

My next approach was to simply use the libraries from the Fedora install using the LD_LIBRARY_PATH variable. This produced segmentation faults for RPM as well as for several other commands.

Finally, I used the command

./ld-linux-so.3 –library-path .:./usr/lib ../bin/rpm

from the /lib directory of the Fedora root file system, and this worked.

From this, I’ve created an rpm script that uses the Fedora RPM and Fedora libraries. Next step was to try YUM, but that is not yet working. Beyond that, I look forward to exploring the Fedora ARM buildsystem which has thousands of packages built. Will I be able to get any of them to run on my N900? We’ll see.

I was also very interested to find APT-RPM, a port of Debian's APT tools to a RPM based distribution. I like APT, and if I can get APT to support RPM, even better.

People can fight out whether MeeGo should use RPM or DEB. They can argue about what central repositories should use. However, what I like about open source software is the choice that it gives me. I would love to be able to install RPM and DEB packages. I would love to be able to go to Intel’s repositories, Nokia’s repositories, and other repositories that I trust to download whatever packages interest me.

(Categories: )