[mirrorbrain] MirrorBrain RPM package splitup - notes for packagers

From: <poeml_at_cmdline.net>
Date: Fri, 26 Jun 2009 22:14:43 +0200
Hi,

I recently split the mirrorbrain package into several subpackages, to
cut down on dependencies and so that one could install only the
components needed on a system. For instance, you'd need the Apache
modules only on some server, while you might want the commandline tools
to maintain the database on your workstation.

Here's how I split the package up. (You can look at the rpm packages at
http://download.opensuse.org/repositories/Apache:/MirrorBrain/ but since
not everybody is on an RPM-based system and might have the tools and
knowledge how to do it, I'll give the details here.)

It's a shame that the openSUSE buildservice doesn't allow linking to the 
sources (yet) - it's needed to create oneself an account to access
them... I put the RPM spec files here for reference; packagers of other
system may find them useful: http://www.poeml.de/~poeml/specs/


This is the main package. It contains docs and config templates.

 % rpm -qlvp http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/mirrorbrain-2.8.1+r7642-2.1.x86_64.rpm 

drwxr-xr-x    2 root    root                0 Jun 26 16:58 /usr/share/doc/packages/mirrorbrain
-rw-r--r--    1 root    root               85 Mar  3 23:14 /usr/share/doc/packages/mirrorbrain/ABOUT
-rw-r--r--    1 root    root             4472 Jun 26 02:01 /usr/share/doc/packages/mirrorbrain/BUGS
-rw-r--r--    1 root    root            29795 Mar  3 23:36 /usr/share/doc/packages/mirrorbrain/COPYING
-rw-r--r--    1 root    root             3320 Feb 21  2008 /usr/share/doc/packages/mirrorbrain/FAQ
-rw-r--r--    1 root    root            12746 Jun 26 02:05 /usr/share/doc/packages/mirrorbrain/INSTALL
-rw-r--r--    1 root    root             9433 Jun  5 14:17 /usr/share/doc/packages/mirrorbrain/NEWS
-rw-r--r--    1 root    root              256 May  2  2008 /usr/share/doc/packages/mirrorbrain/NOTICE
-rw-r--r--    1 root    root              365 Feb 19 02:21 /usr/share/doc/packages/mirrorbrain/THANKS
-rw-r--r--    1 root    root             2407 Jun 24 17:24 /usr/share/doc/packages/mirrorbrain/TODO
-rw-r--r--    1 root    root              557 Aug  8  2008 /usr/share/doc/packages/mirrorbrain/mod_dbd.conf
-rw-r--r--    1 root    root              101 Jun 11  2008 /usr/share/doc/packages/mirrorbrain/mod_memcache.conf
-rw-r--r--    1 root    root             7505 Mar  9 12:36 /usr/share/doc/packages/mirrorbrain/mod_mirrorbrain.conf
drwxr-xr-x    2 root    root                0 Jun 26 14:42 /usr/share/doc/packages/mirrorbrain/sql
-rw-r--r--    1 root    root             6206 Feb 11 23:24 /usr/share/doc/packages/mirrorbrain/sql/initialdata-mysql.sql
-rw-r--r--    1 root    root             6208 Feb 11 23:24 /usr/share/doc/packages/mirrorbrain/sql/initialdata-postgresql.sql
drwxr-xr-x    2 root    root                0 Jun 26 14:42 /usr/share/doc/packages/mirrorbrain/sql/migrations
-rw-r--r--    1 root    root             4477 Mar  2 12:44 /usr/share/doc/packages/mirrorbrain/sql/migrations/schema-postgresql-upgrade-2.6-2.7.sql
-rw-r--r--    1 root    root             2959 Feb 21 16:03 /usr/share/doc/packages/mirrorbrain/sql/schema-mysql.sql
-rw-r--r--    1 root    root             6649 Mar  2 00:47 /usr/share/doc/packages/mirrorbrain/sql/schema-postgresql.sql


The apache2-mod_mirrorbrain package contains the Apache module(s):

 % rpm -qlvp http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/apache2-mod_mirrorbrain-2.8.1+r7642-2.1.x86_64.rpm
-rwxr-xr-x    1 root    root            34352 Jun 26 16:58 /usr/lib64/apache2/mod_autoindex_mb.so
-rwxr-xr-x    1 root    root            36880 Jun 26 16:58 /usr/lib64/apache2/mod_mirrorbrain.so

Its requirements are (shortened to show only the relevant ones):
 % rpm -qpR http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/apache2-mod_mirrorbrain-2.8.1+r7642-2.1.x86_64.rpm
apache2 >= 2.2.6
libapr-util1 >= 1.3.0
GeoIP  
apache2-mod_geoip  
apache2-webthings-collection  


apache2-webthings-collection is just a bundle of a few Apache modules
from Nick Kew (webthing.com), of which mod_form is needed to run, and
mod_form.h is needed for compilation of mod_mirrobrain:

 % rpm -qlvp http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/apache2-webthings-collection-1.0-58.8.x86_64.rpm
-rw-r--r--    1 root    root             1150 Feb 11  2007 /usr/include/apache2/mod_form.h
-rwxr-xr-x    1 root    root            11560 Jun 20 05:19 /usr/lib64/apache2/mod_form.so
-rwxr-xr-x    1 root    root            13424 Jun 20 05:19 /usr/lib64/apache2/mod_line_edit.so




Then, the mirrorbrain-tools package contains the database maintenance
tools, in particular the "mb" tool, which is in fact a symlink to the
mirrordoctor.py script. There is also the python module which as the
same name, some random tools, and a set of icons:

 % rpm -qlvp http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/mirrorbrain-tools-2.8.1+r7642-2.1.x86_64.rpm
-rwxr-xr-x    1 root    root             2661 Jun 26 16:58 /usr/bin/create_timestamp
-rwxr-xr-x    1 root    root              790 Jun 26 16:58 /usr/bin/geoip-lite-update
-rwxr-xr-x    1 root    root             7168 Jun 26 16:58 /usr/bin/geoiplookup_city
-rwxr-xr-x    1 root    root             5816 Jun 26 16:58 /usr/bin/geoiplookup_continent
lrwxrwxrwx    1 root    root               15 Jun 26 16:58 /usr/bin/mb -> mirrordoctor.py
-rwxr-xr-x    1 root    root             8942 Jun 26 16:58 /usr/bin/metalink-hasher
lrwxrwxrwx    1 root    root               15 Jun 26 16:58 /usr/bin/mirrordoctor -> mirrordoctor.py
-rwxr-xr-x    1 root    root            39768 Jun 26 16:58 /usr/bin/mirrordoctor.py
-rwxr-xr-x    1 root    root            11776 Jun 26 16:58 /usr/bin/mirrorprobe
-rwxr-xr-x    1 root    root             4442 Jun 26 16:58 /usr/bin/rsyncinfo
-rwxr-xr-x    1 root    root             3818 Jun 26 16:58 /usr/bin/rsyncusers
drwxr-xr-x    2 root    root                0 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb
-rw-r--r--    1 root    root                0 Jun 11  2008 /usr/lib64/python2.4/site-packages/mb/__init__.py
-rw-r--r--    1 root    root              129 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/__init__.pyc
-rw-r--r--    1 root    root             1214 Feb 22 14:16 /usr/lib64/python2.4/site-packages/mb/asn.py
-rw-r--r--    1 root    root             1495 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/asn.pyc
-rw-r--r--    1 root    root             2163 Aug 22  2008 /usr/lib64/python2.4/site-packages/mb/conf.py
-rw-r--r--    1 root    root             1784 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/conf.pyc
-rw-r--r--    1 root    root             5731 Mar  2 01:29 /usr/lib64/python2.4/site-packages/mb/conn.py
-rw-r--r--    1 root    root             5944 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/conn.pyc
-rw-r--r--    1 root    root              654 Mar  3 21:17 /usr/lib64/python2.4/site-packages/mb/core.py
-rw-r--r--    1 root    root             1178 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/core.pyc
-rw-r--r--    1 root    root             4292 Dec 29 23:27 /usr/lib64/python2.4/site-packages/mb/countries.py
-rw-r--r--    1 root    root             4323 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/countries.pyc
-rw-r--r--    1 root    root             1988 Aug 21  2008 /usr/lib64/python2.4/site-packages/mb/crawl.py
-rw-r--r--    1 root    root             1805 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/crawl.pyc
-rw-r--r--    1 root    root             2235 Feb 11 16:16 /usr/lib64/python2.4/site-packages/mb/exports.py
-rw-r--r--    1 root    root             2422 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/exports.pyc
-rw-r--r--    1 root    root              461 Jun 11  2008 /usr/lib64/python2.4/site-packages/mb/filelist.py
-rw-r--r--    1 root    root              641 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/filelist.pyc
-rw-r--r--    1 root    root             4257 Mar 30 02:11 /usr/lib64/python2.4/site-packages/mb/files.py
-rw-r--r--    1 root    root             4694 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/files.pyc
-rw-r--r--    1 root    root              506 Jun 11  2008 /usr/lib64/python2.4/site-packages/mb/geoip.py
-rw-r--r--    1 root    root              937 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/geoip.pyc
-rw-r--r--    1 root    root             1554 Mar  3 21:17 /usr/lib64/python2.4/site-packages/mb/mberr.py
-rw-r--r--    1 root    root             2337 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/mberr.pyc
-rw-r--r--    1 root    root             8982 Mar  3 09:38 /usr/lib64/python2.4/site-packages/mb/mirrorlists.py
-rw-r--r--    1 root    root             7730 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/mirrorlists.pyc
-rw-r--r--    1 root    root             7635 Jun 26 14:42 /usr/lib64/python2.4/site-packages/mb/testmirror.py
-rw-r--r--    1 root    root             6214 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/testmirror.pyc
-rw-r--r--    1 root    root             4555 Jun 24 17:05 /usr/lib64/python2.4/site-packages/mb/util.py
-rw-r--r--    1 root    root             5413 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/util.pyc
-rw-r--r--    1 root    root              616 Mar 30 01:43 /usr/lib64/python2.4/site-packages/mb/vacuum.py
-rw-r--r--    1 root    root              940 Jun 26 16:58 /usr/lib64/python2.4/site-packages/mb/vacuum.pyc
drwxr-xr-x    2 root    root                0 Jun 26 16:58 /usr/share/mirrorbrain
drwxr-xr-x    2 root    root                0 Jun 26 14:42 /usr/share/mirrorbrain/famfamfam_flag_icons
drwxr-xr-x    2 root    root                0 Jun 26 14:42 /usr/share/mirrorbrain/famfamfam_flag_icons/gif
-rw-r--r--    1 root    root              371 Nov 30  2008 /usr/share/mirrorbrain/famfamfam_flag_icons/gif/ad.gif
-rw-r--r--    1 root    root              361 Nov 30  2008 /usr/share/mirrorbrain/famfamfam_flag_icons/gif/ae.gif
-rw-r--r--    1 root    root              361 Nov 30  2008 /usr/share/mirrorbrain/famfamfam_flag_icons/gif/ag.gif
[... lots of icons]
-rw-r--r--    1 root    root              500 Nov 30  2008 /usr/share/mirrorbrain/famfamfam_flag_icons/png/zm.png
-rw-r--r--    1 root    root              574 Nov 30  2008 /usr/share/mirrorbrain/famfamfam_flag_icons/png/zw.png
-rw-r--r--    1 root    root              510 Nov 30  2008 /usr/share/mirrorbrain/famfamfam_flag_icons/readme.txt

It's requirements are:

 % rpm -qpR http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/mirrorbrain-tools-2.8.1+r7642-2.1.x86_64.rpm    python-psycopg2  
python-sqlobject  
python-cmdln  
GeoIP  
/usr/bin/env  
/usr/bin/python  



Then there's the scanner. It's packaged separately only for reasons of
dependencies - because it is a Perl script and this package pulls in the
needed modules:

 % rpm -qlvp http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/mirrorbrain-scanner-2.8.1+r7642-2.1.x86_64.rpm
-rwxr-xr-x    1 root    root            42373 Jun 26 16:58 /usr/bin/scanner

Its requirements are (shortened):

 % rpm -qpR http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/mirrorbrain-scanner-2.8.1+r7642-2.1.x86_64.rpm
perl-Config-IniFiles  
perl-libwww-perl  
perl-Digest-MD4  
perl-DBD-Pg  
/usr/bin/perl 



Finally, there's mod_asn, packaged like this:

 % rpm -qlvp http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/apache2-mod_asn-1.0-76.1.x86_64.rpm
-rwxr-xr-x    1 root    root             5940 Jun 23 00:45 /usr/bin/asn_get_routeviews
-rwxr-xr-x    1 root    root             2349 Jun 23 00:45 /usr/bin/asn_import
-rwxr-xr-x    1 root    root            11560 Jun 23 00:45 /usr/lib64/apache2/mod_asn.so
drwxr-xr-x    2 root    root                0 Jun 23 00:45 /usr/share/doc/packages/apache2-mod_asn
-rw-r--r--    1 root    root             5825 Jun 23 00:41 /usr/share/doc/packages/apache2-mod_asn/INSTALL
-rw-r--r--    1 root    root             3760 Mar 17 16:23 /usr/share/doc/packages/apache2-mod_asn/README
-rw-r--r--    1 root    root              271 Feb 12 21:03 /usr/share/doc/packages/apache2-mod_asn/asn.sql
-rw-r--r--    1 root    root              904 Feb 12 21:04 /usr/share/doc/packages/apache2-mod_asn/mod_asn.conf

The requirements are:

 % rpm -qpR http://download.opensuse.org/repositories/Apache:/MirrorBrain/Apache_SLE_10/x86_64/apache2-mod_asn-1.0-76.1.x86_64.rpm
apache2 >= 2.2.6
libapr-util1 >= 1.3.0

Note that postgresql isn't listed among the requirements, although it
probably should be - since the module can only work with postgresql.
Anyhow, a database adapter for Apache needs to be installed, which is
called libapr-util1-dbd-pgsql in the openSUSE world.

I hope this helps!

Peter
-- 
"WARNING: This bug is visible to non-employees. Please be respectful!"
 
SUSE LINUX Products GmbH
Research & Development



_______________________________________________
mirrorbrain mailing list
Archive: http://mirrorbrain.org/archive/mirrorbrain/

Note: To remove yourself from this mailing list, send a mail with the content
 	unsubscribe
to the address mirrorbrain-request_at_mirrorbrain.org
Received on Fri Jun 26 2009 - 20:15:32 GMT

This archive was generated by hypermail 2.3.0 : Thu Mar 25 2010 - 19:30:55 GMT