standards/176222: Package & Ports Is _Much_ Too Complicated. I Consider It Broken.
torsten.eichstaedt at web.de
Mon Feb 18 02:00:01 UTC 2013
>Synopsis: Package & Ports Is _Much_ Too Complicated. I Consider It Broken.
>Arrival-Date: Mon Feb 18 02:00:00 UTC 2013
>Originator: Torsten Eichstädt
FreeBSD paul-lifebook 9.1-RELEASE FreeBSD 9.1-RELEASE #2: Tue Nov 27 03:45:16 UTC 2012 root at darkstar:/usr/obj/pcbsd-build90/fbsd-source/9.1/sys/GENERIC amd64
The implementations of Packages & Ports are 80ies spirited and UNIXish. In this case, this means: bad. Bad wrt robustness (they can easily render your system inconsistent) and user friendliness.
It's documentation is incomplete.
The tools do not have reasonable default settings, e.g. to install dependencies (often: "-R") should be default; it isn't. To begin installing the 1st dep only after all other packages/ports are downloaded, should be default behaviour; it isn't. To automagically use the "nearest" mirror(s) should be default; it isn't. To try other mirrors when a package/port could not be found should be default; it isn't. De-installing a package that was installed as a dependency and is not needed anymore should be default; it isn't. Etc. pp. Who wants to remember all those commandline switches, plus they are different from tool to tool? The options should be there for non-default usage.
The tools give error messages w/o telling how to fix the error occured.
A novice user will run into trouble, even when s/he reads a plethora of books on BSD.
Even an experienced user can (and many will) shoot herself in the foot now and then.
You can exchange "portinstall" w/ other tools below; they all have the these bugs.
On a fresh, default (just select KDE desktop and _change nothing_ (important, else the installation fails :)) PC-BSD system with ports tree initialized w/ System Manager GUI, try to install the FreeBSD docs:
[1st bug: I must not forget to RTFM 1st, although simply installing a package is much easier on e.g. Linux, Solaris, Windows or Mac, and it shold be easy on BSD, too]
[2nd bug: It takes hours to find out how to get a list of packages & ports and their description]
# portinstall -v -PP -R freebsd-doc-en
** No such package or port: freebsd-doc-en
[but ommiting the category was ok for other pkgs...]
# portinstall -v -PP misc/freebsd-doc-en
---> ** Install tasks 1: 0 done, 0 ignored, 0 skipped and 1 failed
---> Listing the results (+:done / -:ignored / *:skipped / !:failed)
! misc/freebsd-doc-en (package not found)
[4th bug: portinstall tried the master site several times, not the mirrors. I have "fastest_sites" installed (and conf'd as suggested). What is it good for? And I can find the pkgs on the web interface and additionally, read the docs online. So I think, ok, maybe there's a newer version not packaged yet, so I try:]
# portinstall -v -P misc/freebsd-doc-en
===> Cleaning for zh-arphicttf-2.11_2
You may use the following options:
WITH_GS - if you want Ghostscript support
WITHOUT_X11 - if you DON'T want X Window support
[bug #5: Yes, I'd like to. But HOW??? Is it too much to write it there??? Or better: write to a list that is shown at the end, after the whole installation.]
I tried to use KPorts (the KDE3 version, because they write the new version is not as good yet). No way. It starts with:
"Failed to update or read the FTPINDEX. You will not be able to use Packages."
uma -v 85335 fetch ftpindex
RETURN VALUE: 16
fetch: ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-release/INDEX: File unavailable (e.g., file not found, no access)
ERROR(16): Fetching remote INDEX failed."
It does not remember my change of the ftp site in it's config GUI to use the german or swedish mirror. Many many other bugs, too, so I better use command line tools.
Mark all that stuff for throwing in the pre-1990-trashbin. Port the new Solaris packaging system, or better: adopt ideas from it. There are always things to do better, but I've never had such problems on Linux, OpenSolaris or Indiana. E.g. updates to precompiled packages could contain binary diffs plus some logic to update conf files and dependencies (In the simplest case a wrapper to the app that shows some description what to do manually), saving bandwidth and making it more or less easy to rollback on a system w/o fs snapshots and do not rely on snapshots (blindly rollback the fs can be desastrous 'cause you rollback data, too). In many cases it would be possible to deliver binary diffs that relate to compile-time options for packages. The flat structuring is insufficient. Many packages belong to more than one category (it looks like the so-called "structure" at the top of the GNU-info docs ;). E.g. category "lang": The usual meaning of "language" is "natural human language"
. BTW, a reasonable handling for intl'n is non-existent, I have the option to install all languages or nothing.
More information about the freebsd-standards