# Signs that you're turning into a "Mad Porter"



## ShelLuser (May 31, 2013)

You see this nice port (net/subnetcalc in my case) and you decide to install it. So while thinking "Let's see if this works" you type `# make fetch extract patch configure` without thinking and anxiously await the result 
	

	
	
		
		

		
			





.

Yeah, maybe I'd better stick to `# make install clean` next time, I actually had to grin about my behaviour here.


----------



## chatwizrd (May 31, 2013)

Oh, I thought you were going to do `# make buildworld`.


----------



## jozze (Jun 4, 2013)

Ufff, tell me about it. In my honest opinion, ports are "the greatest thing since sliced bread". I am always impressed how that large collection of Makefiles actually work without conflicting with one another.

So far EVERY single thing I installed compiled perfectly (with exception of my human nature). Now, every time an update comes out, I just use the -r flag with portupgrade to rebuild all ports that depend on it, just so I can watch ports again in their full glory.

I also use Slackware Linux, and I wrote some of my own .SlackBuild scripts for 3rd party packages, where the idea is similar to the ports. However, ports are just breathtaking.


----------



## ShelLuser (Jun 7, 2013)

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:


```
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:


```
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:


```
[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 ;-)


----------

