« I live…again… | Main | guitar day »
Dependencies of Dependencies in FreeBSD
By Jesse Morgan | May 3, 2006
Something that is really aggrivating the hell out of me is FreeBSD’s package management system. I’ve heard people go on and on about how it’s the best out there, but frankly I’m unimpressed.
The main reason for this is there is no way to determine ALL of the dependencies that are going to be installed when I install a package.
Lets do a comparison of a freeciv install on my workstations vs the freebsd server:
genbox ~ # emerge -tp freeciv These are the packages that I would merge, in reverse order: Calculating dependencies ...done! [ebuild N ] games-strategy/freeciv-2.0.8 [ebuild N ] media-libs/sdl-mixer-1.2.6-r1 [ebuild N ] media-libs/smpeg-0.4.4-r7
As you can see, freeciv is dependent on sdl-mixer- not only that, sdl-mixer is dependent on smpeg, meaning for freeciv to be installed, BOTH sdl-mixer and smpeg need to be installed beforehand. you see not only the dependencies, but the dependencies of the dependencies. Fortuately for this example, there were only 2 layers of dependencies and they were fairly small.
Now, lets look at freebsd- to see the dependencies, you can’t actually do it from the command line- you have to visit their website: http://www.freebsd.org/cgi/ports.cgi?query=freeciv&stype=all&sektion=all
We can see there are a couple of matching packages, but we’re only interested in
freeciv-2.0.8 A civilisation clone for X11; multiplayer Long description : Sources : Changes : Download Maintained by: infofarmer@gmail.com Requires: Xaw3d-1.5E_1, expat-2.0.0_1, fontconfig-2.3.2_4,1, freetype2-2.1.10_3, gettext-0.14.5_2, jpeg-6b_4, libdrm-2.0.1_1, libiconv-1.9.2_2, pkgconfig-0.20_2, png-1.2.8_3, python-2.4.3, tiff-3.8.2, xorg-libraries-6.9.0
This shows all dependencies, not just the ones that need to be installed- but only one layer. What packages will freetype require installed? how about xorg-libraries? The best answer I’ve been able to find as of yet is “look them up for each dependency” and then for their dependencies, and then theirs. All of this manually, all of this through their website. plus, you have to make sure that each package you look up isn’t already installed. How many packages will it take?
I have yet to find a way to show dependencies of dependencies in freebsd, and several very competent BSD admins I know haven’t been able to answer this question.
My question is, WHY!?!? This is entry level base functionality that debian, gentoo, mandriva, suse and even freaking RHEL can do- why can’t BSD, the people behind the ports system, do this?
I’m afraid I know the answer to this question- they’re comfortable with what they have. I truly hope I am wrong. If anyone knows of the proper FreeBSD way to find dependencies of dependencies on the command line, please, let me know.
Topics: FreeBSD, IRC, Linux, Open Source, Rant |
May 4th, 2006 at 9:32 am
this allows pretty-print-run-depends-list and pretty-print-build-depends-list to be used.
This gives a two level deep dependency, but still not what I was looking for. drnoz from #freebsd on freenode is attempting to make a recursive depends list. I’ll find out more next week.
June 18th, 2008 at 4:05 pm
Not part of FreeBSD or its ports system directly, the portupgrade package may be a third party workaround capable of what you want (sysutils/portupgrade). portinstall and portupgrade commands support the -n flag which can be used to show what would be done without doing any of it.