You know what I really came to admire about the ports management system?
That it doesn't try to apply some twisted standard or hierarchy on the software, but instead provides plenty of room for the maintainer to utilize the FreeBSD hierarchy as it is now.
With that I mean so much as: We all know that
/usr/local is the place where manually installed stuff goes. We all know that this is the de-facto place for the ports to get installed.
So, if we take a look at something cool yet simple such as
irc/irssi you'll see it gets "split" into several parts, but still parts which make fully sense:
Code:
smtp2:/home/peter $ pkg_info -L irssi* | cut -d '/' -f '1-5' | sort -u
/usr/local/bin/irssi
/usr/local/etc/irssi.conf
/usr/local/etc/irssi.conf.sample
/usr/local/include/irssi
/usr/local/lib/perl5
/usr/local/man/man1
/usr/local/share/doc
/usr/local/share/irssi
Files:
Information for irssi-0.8.15_5:
As you can see, several "parts":
bin,
etc and even
lib. So what would happen if you had to deal with certain software which provides a "hierarchy" of its own? Here's looking at
mail/mailman or
lang/openjdk6?
On FreeBSD with its port system this:
Code:
smtp2:/usr/local $ ls -l mailman | grep -E 'bin|log|lib'
drwxrwsr-x 2 root mailman 42 Jun 5 18:14 bin
drwxrwsr-x 2 root mailman 13 Jun 5 16:50 cgi-bin
drwxrwsr-x 2 root mailman 9 Jun 5 18:03 logs
drwxrwsr-x 2 root mailman 2 Jun 5 16:50 pythonlib
All is well here, I
expect something to appear in
/usr/local so when I see a whole "root" directory I know that this is special.
On Linux this works a "little" different:
Code:
[peter@smtp ~]$ ls -l /etc/mailman/
total 16
lrwxrwxrwx 1 root mailman 34 Dec 13 2011 mm_cfg.py -> /usr/lib/mailman/Mailman/mm_cfg.py
-rw-r--r-- 1 root mailman 14114 Mar 30 2011 sitelist.cfg
The problem should be obvious enough by now. Us Linux folks are sometimes "drilled" that all configuration files are under
/etc. As you can see here; even if they aren't then the "powers that be" will make sure that they will.
One problem though.. Like FreeBSD
mail/mailman works with "overloading". Or in normal wording: it has configuration files which denote it's default behaviour and if you want to change that behaviour all you need to do is to make a new configuration file and then reconfigure those options you need changed.
mm_cfg.py basically "overloads" the main set up:
Defaults.py.
So how do I find this on FreeBSD? Elementary: after having learned (using the
official documentation) that both sit in the same directory, namely
$prefix/Mailman I already know all there is. After all: I already learned about
/usr/local/mailman so the only logical assumption is that this is the prefix the manual talks about.
Linux?
Well, it's not in
/etc/mailman, you already noticed above. So where the heck is it?
Apparently this is all library-like contents because...
/usr/lib/mailman/Mailman/Defaults.py.
In all honesty; since this is also the home directory of the
mailman user it's relatively easy to find.
Yet under the Linux "doctrine" this should be under
/etc, so what gives?
Not trying to bad mouth anything here (though this is a small rant) but I know for a
fact that this has confused many Mailman newbies. Simply because they got torn between the way their Linux distribution (supposed) to work and the way Mailman didn't "fit in".
FreeBSD? One size fits all ;-)