Thursday, February 23, 2006
Don't talk to me about package managers—they're all bad!
So today I get to play around with FreeBSD's ports system, aka a “package manager.”
PORTS(7) FreeBSD Miscellaneous Information Manual PORTS(7)
- NAME
ports—contributed applications
- DESCRIPTION
The FreeBSD Ports Collection offers a simple way for users and administrators to install applications. Each port contains any patches necessary to make the original application source code compile and run on BSD. Compiling an application is as simple as typing
make build
in the port directory! TheMakefile
automatically fetches the application source code, either from a local disk or via FTP, unpacks it on your system, applies the patches, and compiles it. If all goes well, simply typemake install
to install the application.
Okay. Seems simple enough. Do a search (not much better than a simple
grep
but it's something) and find the package I need to
install.
SNMP# cd /usr/ports/databases/mysql41-client/ SNMP# make build ===> Vulnerability check disabled, database not found => mysql-4.1.13.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch from ftp://ftp.easynet.be/mysql/Downloads/MySQL-4.1/. fetch: ftp://ftp.easynet.be/mysql/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-4.1/. fetch: ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://mysql.mirrors.cybercity.dk/Downloads/MySQL-4.1/. fetch: http://mysql.mirrors.cybercity.dk/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: Not Found => Attempting to fetch from ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/Downloads/MySQL-4.1/. fetch: ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-4.1/. fetch: ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://netmirror.org/mirror/mysql.com/Downloads/MySQL-4.1/. fetch: http://netmirror.org/mirror/mysql.com/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: Not Found => Attempting to fetch from ftp://netmirror.org/mysql.com/Downloads/MySQL-4.1/. fetch: ftp://netmirror.org/mysql.com/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://mirrors.ntua.gr/MySQL/Downloads/MySQL-4.1/. fetch: http://mirrors.ntua.gr/MySQL/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: Not Found => Attempting to fetch from ftp://ftp.ntua.gr/pub/databases/mysql/Downloads/MySQL-4.1/. fetch: ftp://ftp.ntua.gr/pub/databases/mysql/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://mysql.sote.hu/Downloads/MySQL-4.1/. fetch: http://mysql.sote.hu/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: Not Found => Attempting to fetch from ftp://ftp.rhnet.is/pub/mysql/Downloads/MySQL-4.1/. fetch: ftp://ftp.rhnet.is/pub/mysql/Downloads/MySQL-4.1/mysql-4.1.13.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from ftp://mirror.widexs.nl/pub/mysql/Downloads/MySQL-4.1/. ^Cfetch: transfer interrupted SNMP# cd /usr/ports/databases/mysql50-client/ SNMP# make build ===> Vulnerability check disabled, database not found => mysql-5.0.9-beta.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch from ftp://ftp.easynet.be/mysql/Downloads/MySQL-5.0/. fetch: ftp://ftp.easynet.be/mysql/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-5.0/. fetch: ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://mysql.mirrors.cybercity.dk/Downloads/MySQL-5.0/. fetch: http://mysql.mirrors.cybercity.dk/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: Not Found => Attempting to fetch from ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/Downloads/MySQL-5.0/. fetch: ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.0/. fetch: ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://netmirror.org/mirror/mysql.com/Downloads/MySQL-5.0/. fetch: http://netmirror.org/mirror/mysql.com/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: Not Found => Attempting to fetch from ftp://netmirror.org/mysql.com/Downloads/MySQL-5.0/. fetch: ftp://netmirror.org/mysql.com/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://mirrors.ntua.gr/MySQL/Downloads/MySQL-5.0/. fetch: http://mirrors.ntua.gr/MySQL/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: Not Found => Attempting to fetch from ftp://ftp.ntua.gr/pub/databases/mysql/Downloads/MySQL-5.0/. fetch: ftp://ftp.ntua.gr/pub/databases/mysql/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: File unavailable (e.g., file not found, no access) => Attempting to fetch from http://mysql.sote.hu/Downloads/MySQL-5.0/. fetch: http://mysql.sote.hu/Downloads/MySQL-5.0/mysql-5.0.9-beta.tar.gz: Not Found => Attempting to fetch from ftp://ftp.rhnet.is/pub/mysql/Downloads/MySQL-5.0/. ^Cfetch: transfer interrupted SNMP#
Okay, so how exactly is this better than getting the tarballs?