Re: [Nolug] email questions

From: Scott Harney <scotth_at_scottharney.com>
Date: Wed, 06 Aug 2003 08:15:16 -0500
Message-ID: <87wudrc4gr.fsf@zenarcade.local.lan>

Craig Jackson <craig.jackson@wild.net> writes:

> I am sorry but your last email to me was accidentally deleted.
>
> You had asked why I was installing Courier-imap from source.
>
> I like to install major applications and their primary dependencies from
> source because I think it is better if we all operate from a single knowledge
> base. It's OK to install the base system from a distribution such as Debian
> (which is the one I like). Also It is easier to use options when configuring
> the source.

This gets down to the nitty gritty of why I started using
Gentoo. Gentoo's portage easily supports conditional compilation. I
have to deal with building/patching etc from source every day with a
multitude of Solaris boxes and I'd kill for the kind of flexibility
portage gives me.

An example. I want to build courier-imap on my system and in my
system-wide USE flags (the mechanism that handles conditionals) I have
elected not to build mysql into most packages. But now I decide I
want to use a mysql backend with courier. Lots of dependencies to
deal with there. So before I build courier IMAP I check out the
situation:

# emerge -vp courier-imap
[ebuild N ] net-mail/courier-imap-1.7.3-r1 +ipv6 +gdbm -ldap +berkdb -mysql +pam +nls -postgres

This shows me the USE flags courier-imap supports. The ones with the plus signs
are the ones I have enabled. I want mysql support so:

# USE="mysql" emerge -vp courier-imap
[ebuild N ] dev-libs/openssl-0.9.6j
[ebuild N ] sys-apps/tcp-wrappers-7.6-r4
[ebuild N ] dev-db/mysql-4.0.13-r3 -static +readline +innodb +berkdb +tcpd +ssl +perl -debug
[ebuild N ] net-mail/courier-imap-1.7.3-r1 +ipv6 +gdbm -ldap +berkdb -mysql +pam +nls -postgres
[ebuild N ] dev-perl/Net-Daemon-0.37
[ebuild N ] dev-perl/File-Spec-0.84-r1
[ebuild N ] dev-perl/Test-Harness-2.28-r1
[ebuild N ] dev-perl/Test-Simple-0.47-r1
[ebuild N ] dev-perl/Storable-2.07-r1
[ebuild N ] dev-perl/PlRPC-0.2016-r1
[ebuild N ] dev-perl/DBI-1.37
[ebuild N ] dev-perl/DBD-mysql-2.1027

I can further tweak my USE statement to eliminate, say ssl and perl
support and eliminate some of those dependencies. Everything I want,
and nothing I don't. And I don't have to start dealing with build
dependencies inside other build dependencies. Something I'm tired of and
don't have the time to do.

There's more. Got a special patch you need that default portage
ebuild doesn't reference? Gentoo has a portdir-overlay. You can
put customized ebuilds in /usr/local/portage very easily creating your
own builds or overriding Gentoo supplied versions. I have done this
with my laptop nvidia drivers since they require a special patch to
handle suspend/resume. Don't want Gentoo to upgrade a package, put
the package name in /etc/portage/package.mask and stick to your
2.2 kernel if you like ;)

I should note that conditional compilation is there for BSD ports as
well, it's just not quite as elegant in my view. And of course, one
can do a Debian distro from source and manage local packages
relatively easily. But I have come to really appreciate the way
Gentoo's portage marries BSD ports and Debian apt-get approaches.

That and the fact that it's much more current. I like having lots of
candy on my laptop so when KDE releases a new rev, it's available in
portage the same day that the KDE team releases it. I just do
'USE="~x86" emerge -u kde' and it gets the latest kde and all
dependencies. The "~x86" says I want to use x86 architecture ebuilds
that are considered "unstable".
  
Food for thought.

-- 
Scott Harney<scotth@scottharney.com>
"...and one script to rule them all."
gpg key fingerprint=7125 0BD3 8EC4 08D7 321D CEE9 F024 7DA6 0BC7 94E5

___________________
Nolug mailing list
nolug@nolug.org

Received on 08/06/03

This archive was generated by hypermail 2.2.0 : 12/19/08 EST