| Andrew Cooke | Contents | Latest | RSS | Twitter | Previous | Next

C[omp]ute

Welcome to my blog, which was once a mailing list of the same name and is still generated by mail. Please reply via the "comment" links.

Always interested in offers/projects/new ideas. Eclectic experience in fields like: numerical computing; Python web; Java enterprise; functional languages; GPGPU; SQL databases; etc. Based in Santiago, Chile; telecommute worldwide. CV; email.

Personal Projects

Lepl parser for Python.

Colorless Green.

Photography around Santiago.

SVG experiment.

Professional Portfolio

Calibration of seismometers.

Data access via web services.

Cache rewrite.

Extending OpenSSH.

C-ORM: docs, API.

Last 100 entries

configure.ac Recipe For Library Path; The Davalos Affair For Idiots; Not The Onion: Google Fireside Chat w Kissinger; Bicycle Wheels, Inertia, and Energy; Another Tax Fraud; Google's Borg; A Verion That Redirects To Local HTTP Server; Spanish Accents For Idiots; Aluminium Cans; Advice on Spray Painting; Female View of Online Chat From a Male; UX Reading List; S4 Subgroups - Geometric Interpretation; Fucking Email; The SQM Affair For Idiots; Using Kolmogorov Complexity; Oblique Strategies in bash; Curses Tools; Markov Chain Monte Carlo Without all the Bullshit; Email Para Matias Godoy Mercado; The Penta Affair For Idiots; Example Code To Create numpy Array in C; Good Article on Bias in Graphic Design (NYTimes); Do You Backup github?; Data Mining Books; SimpleDateFormat should be synchronized; British Words; Chinese Govt Intercepts External Web To DDOS github; Numbering Permutations; Teenage Engineering - Low Price Synths; GCHQ Can Do Whatever It Wants; Dublinesque; A Cryptographic SAT Solver; Security Challenges; Word Lists for Crosswords; 3D Printing and Speaker Design; Searchable Snowden Archive; XCode Backdoored; Derived Apps Have Malware (CIA); Rowhammer - Hacking Software Via Hardware (DRAM) Bugs; Immutable SQL Database (Kinda); Tor GPS Tracker; That PyCon Dongle Mess...; ASCII Fluid Dynamics; Brandalism; Table of Shifter, Cassette and Derailleur Compatability; Lenovo Demonstrates How Bad HTTPS Is; Telegraph Owned by HSBC; Smaptop - Sunrise (Music); Equation Group (NSA); UK Torture in NI; And - A Natural Extension To Regexps; This Is The Future Of Religion; The Shazam (Music Matching) Algorithm; Tributes To Lesbian Community From AIDS Survivors; Nice Rust Summary; List of Good Fiction Books; Constructing JSON From Postgres (Part 2); Constructing JSON From Postgres (Part 1); Postgres in Docker; Why Poor Places Are More Diverse; Smart Writing on Graceland; Satire in France; Free Speech in France; MTB Cornering - Where Should We Point Our Thrusters?; Secure Secure Shell; Java Generics over Primitives; 2014 (Charlie Brooker); How I am 7; Neural Nets Applied to Go; Programming, Business, Social Contracts; Distributed Systems for Fun and Profit; XML and Scheme; Internet Radio Stations (Curated List); Solid Data About Placebos; Half of Americans Think Climate Change Is a Sign of the Apocalypse; Saturday Surf Sessions With Juvenile Delinquents; Ssh, tty, stdout and stderr; Feathers falling in a vacuum; Santiago 30m Bike Route; Mapa de Ciclovias en Santiago; How Unreliable is UDP?; SE Santiago 20m Bike Route; Cameron's Rap; Configuring libxml with Eclipse; Reducing Combinatorial Complexity With Occam - AI; Sentidos Comunes (Chilean Online Magazine); Hilary Mantel: The Assassination of Margaret Thatcher - August 6th 1983; NSA Interceptng Gmail During Delivery; General IIR Filters; What's happening with Scala?; Interesting (But Largely Illegible) Typeface; Retiring Essentialism; Poorest in UK, Poorest in N Europe; I Want To Be A Redneck!; Reverse Racism; The Lost Art Of Nomography; IBM Data Center (Photo); Interesting Account Of Gamma Hack; The Most Interesting Audiophile In The World; How did the first world war actually end?; Ky - Restaurant Santiago

© 2006-2015 Andrew Cooke (site) / post authors (content).

Installing MusicBrainz Database

From: andrew cooke <andrew@...>

Date: Fri, 11 Mar 2011 08:20:58 -0300

I just installed the MusicBrainz database.  It was a little more complex than
I expected, so here are my notes on what to do.


First, it requires an unusual combination of collation and encoding (actually,
not so strange, but different from the default install on OpenSuse).  Since I
already use Postgres, and these are set per *installation* (not per database),
I needed a parallel install of Postgres.

That meant creating a new data directory (data2) in /var/lib/pgsql and then
configuring new configuration and init scripts:

 * Copy /etc/sysconfig/postgresql to /etc/sysconfig/postgresql2 and change the
   contents to have:

   POSTGRES_DATADIR="~postgres/data2"
   POSTGRES_OPTIONS="-p 5433"
   POSTGRES_LANG="C"

 * Change /etc/init.d/postgresql to remove only /tmp/.s.PGSQL.5432 and not
   /tmp/.s.PGSQL.* (IMPORTANT!)

 * Copy /etc/init.d/postgresql to /etc/init.d/postgresql2 and
   change to match the diff below
> diff /etc/init.d/postgresql /etc/init.d/postgresql2
8c8
< # /etc/init.d/postgresql
---
> # /etc/init.d/postgresql2
10c10
< # /(usr/)sbin/rcpostgresql
---
> # /(usr/)sbin/rcpostgresql2
31c31
< # Provides:       postgresql
---
> # Provides:       postgresql2
40c40
< PG_SYSCONFIG=/etc/sysconfig/postgresql
---
> PG_SYSCONFIG=/etc/sysconfig/postgresql2
53c53
< eval DATADIR=${POSTGRES_DATADIR:-~postgres/data}
---
> eval DATADIR=${POSTGRES_DATADIR:-~postgres/data2}
57c57
< PIDFILE=$DATADIR/postmaster.pid
---
> PIDFILE=$DATADIR/postmaster2.pid
115c115
<           "$INITDB --locale=$LANG --auth=\"ident\" $DATADIR &> initlog" ||
---
>           "$INITDB --locale=$LANG --encoding=UNICODE --auth=\"ident\"
   $DATADIR &> initlog" ||
126c126
<               rm -f /tmp/.s.PGSQL.5432 $PIDFILE
---
>               rm -f /tmp/.s.PGSQL.5433 $PIDFILE

 * Link the new init file from /usr/sbin/rcpostgresql2 (see the link there for
   the original)

With those changes (and chkconfig -a) the new postgres instance will run,
listening on port 5433.  Note that when you use this database, you always need
to add "-p 5433" to commands.  So, for example, to list databases:

  psql -l -p 5433


Next, configure that database and install the data.  This largely follows the
MusicBrainz site instructions, once you figure them out.

Since I only wanted the database, but wanted it complete, I decided to use the
server install scripts (the site has an alternative install process that
doesn't use the install scripts, but which looked a little unreliable -
mentioned things like not setting foreign keys...).

To do this, download both the latest data and the code from
http://svn.musicbrainz.org/mb_server/branches/RELEASE_20090524-BRANCH

Next, look at the INSTALL file you downloaded and make sure all requirements
are installed.  I don't like CPAN, but the Strings::ShellQuote module is not
listed in Yast, so I needed to use CPAN to install that.

I decided that the Postgres databases would be mbrainz and mbrainz_raw, and
that I would configure the initial database creation as postgres, then use the
database as myself (andrew).  So I configured pg_hba.conf with:

 local   mbrainz     mbrainz                           ident map=mb_map
 local   mbrainz_raw mbrainz                           ident map=mb_map

(note that these lines must be before "local all all") and pg_ident.conf with:

 mb_map        andrew             mbrainz

and then start postgres (or restart if it was running before these changes).

Finally, configure cgi-bin/DBDefs.pm.  I had entries:

        READWRITE => {
            database    => "mbrainz",
            username    => "mbrainz",
            password    => "",
            host        => "",
            port        => "5433",
        },

        SYSTEM  => {
            database    => "template1",
            username    => "postgres",
            password    => "",
            host        => "",
            port        => "5433",
        },

       RAWDATA => {
            database    => "mbrainz_raw",
            username    => "mbrainz",
            password    => "",
            host        => "",
            port        => "5433",
       },

In particular, note the 5433 port numbers.


With all the configuration done, install worked smoothly.

As postgres:

 ./admin/InitDb.pl --createdb --empty-database

As myself:

 ./admin/InitDb.pl --import ../20110309-000002/mbdump*.tar.bz2


It's worth mentioning that you do need all the data.  I tried to load
everything but one file, which I thought I would not need, and got an error
(one that googling associated with an incorrect source code version, which was
misleading).

Andrew

Comment on this post