Ugly Huge BSD Monster

Robert Watson rwatson at freebsd.org
Mon Sep 1 13:35:27 PDT 2003


On Mon, 1 Sep 2003, Denis Troshin wrote:

> Almost every package I install requires a few other packages. This 'idea
> of using dependent packages' turns FreeBSD (and other unix-systems) to
> an ugly monster. 
> 
> For example, I don't need Perl or Python but a few packages I install
> require them. 
> 
> Does exist a programming under unix without these dependencies? 
> 
> P.S.  Under Windows it is possible to write not bad applications which
> depend just on libraries (KERNEL32, USER32, GDI32).  And these libs
> exist on every base system!!! 
> 
> Is it possible in unix? 
> 
> Before I thought that unix programs very compact, but they are huge! 

You've already got a boatload of responses, but I figured I'd throw in
mine: it depends on the application.  If applications require a scripting
language, by virtue of what they do or how they are written, well, you get
a scripting language in the dependencies.  To get a Windows-like
environment on FreeBSD, you need to layer the X server and then a
toolkit/windowing environment on top -- my personal leaning right now is
to stick QT/KDE on top.  Once you have those pieces in place, you have a
lot of what you need to write general-purpose applications interacting
with users, the network, multimedia, etc.

If you look at some of the "key" UNIX software packages, however, you'll
see that they tend not to have a lot of dependencies -- Apache, Postgres,
MySQL, etc.  These applications avoid dependencies through less reliance
on scripting, GUI elements, etc.  One of the upsides, and downsides, of
the open source world is a strong dependence on scripting, and the
resulting diversification of scripting languages and rapid prototyping
tools.  This occurs in the Windows world also, though -- if you rely on
Java, you need the JVM.  If you have TCL applications, you need the TCL
environment as well.  Many web sites running on Windows use Perl for CGI
just as they do in UNIX, in which case you need Perl... 

One of the nice things about this package-oriented approach is that the
dependencies are generally very explicit: you want to write a gui app, so
you need the gui pieces.  Your application requires a back-end database,
so a database dependency is introduced.  In Windows, you have a larger
"base" but less ability to decompose as a result.  I'm also a bit alarmed
when I install a new application and pick up two new scripting languages
along the way -- I tend to avoid installing applications that pull in
scripting as a dependency.  However, sometimes that's unavoidable.  In
Windows, I think you'll find applications depend on more in the way of
libraries than you think, though...  Upgrades to system dlls when you
build and install applications are not infrequent -- application vendors
tend to "quietly bundle" all the dependent runtime components and quietly
install them....

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert at fledge.watson.org      Network Associates Laboratories



More information about the freebsd-questions mailing list