"pkg_add -r ..." from a url other than the default (using PACKAGESITE, PACKAGEROOT or smth. else)

Stephen Hilton nospam at hiltonbsd.com
Sun Jun 1 12:21:38 PDT 2003

On Tue, 27 May 2003 09:01:16 +0400
Vladik Kozin <epbox at yandex.ru> wrote:

>  	What if I'd like the "pkg_add -r" to work exactly the same way as it does by 
> default but using an alternative url? Now, let say, there is a url: 
> "ftp://fbsd.local/" with the following directory structure 
> "pub/unix/FreeBSD/ports/i386/packages-4.8-release/". I'd like to tell 
> "pkg_add -r foopackage" and have it installed with all its dependencies from 
> the url mentioned above. As far as I understand the PACKAGESITE var specifies 
> the exact path to the package, thus if the "/sysutils/foopackage.tgz" depends 
> on "/lang/foodep.tgz" then the latter won't be retrieved and the pkg_adding 
> process will fail. Probably I need to use the PACKAGEROOT var? But in this 
> case the site I intend to use is supposed to have some specific "default 
> FreeBSD" structure, isn't it? In my case 
> "/FreeBSD/ports/i386/packages-4.8-release/" is a commonly used structure, but 
> it is prefixed by "/pub/unix/". 
> 	Any ideas about how to solve the problem?

If the packages are on a box you control and you are using the 
portupgrade tool, then here is what I did for a FreeBSD 4-STABLE setup:

Set up anonymous ftp on the "package building" box with a directory 
structure like this:

Set the home for the anonymous ftp user with vipw:
ftp:*:14:14:ftp:0:0:Mr. Anonymous FTP:/var/ftproot:/nonexistent

Create a sym link so when the packages are built they are available 
in /var/ftproot/pub/FreeBSD/ports/i386/packages-4-stable.

ln -s /var/ftproot/pub/FreeBSD/ports/i386/packages-4-stable /usr/ports/packages

Build the packages for the rest of the local machines.

On the machine seeking the packages I add this to the 
/usr/local/etc/pkgtools.conf file:

    ENV['PKG_PATH'] = '/All'
    ENV['PACKAGEROOT'] = 'ftp://mypackagemachine.mynet.net'

So now on my local machine that I want to install "foo-package" 
I can:

portupgrade -NviPPr www/foo-package

And it will install a package from "mypackagemachine.mynet.net" 
If the package is not there it errors out with a descriptive message.


Stephen Hilton
nospam at hiltonbsd.com

More information about the freebsd-questions mailing list