Re: [HEADSUP] Deprecation of the ftp support in pkg

From: Baptiste Daroussin <>
Date: Mon, 24 Jan 2022 13:00:21 UTC
On Mon, Jan 24, 2022 at 12:10:11PM +0000, Vincent Hoffman-Kazlauskas wrote:
> On 24/01/2022 08:59, Baptiste Daroussin wrote:
> > On Mon, Jan 24, 2022 at 12:12:20AM -0800, Chris wrote:
> > > On 2022-01-23 10:19, Patrick M. Hausen wrote:
> > > > Hi all,
> > > > 
> <snip>
> > > 
> > 
> > based on the discussion I am adding right now, a new protocol: tcp:// which uses
> > the protocol we made on top of ssh way simple than ftp and capsicumized on the
> > server side), but without the requirement for a ssh connection.
> > 
> > This will enable people with performance concern but still willing to have data
> > encrypted to use spiped or socat for example as a transport.
> > 
> > And for other a simple inetd will work.
> > 
> > on inetd.conf
> > 
> > pkg stream tcp nowait nobody /usr/local/sbin/pkg -- -o SSH_RESTRICT_DIR=/mypackages ssh
> > 
> > 
> > and define in /etc/services "pkg" to the port you want pkg to be serving its
> > files to.
> > 
> > for the repo on the pkg side:
> > 
> > tcp://url:port/mypackages
> > 
> > What do you think?
> > 
> Not having a preference re: ftp I think this tcp:// option looks very
> useful. As an aside has anyone written up how to setup a repo over ssh? I've
> had a quick google with no luck. I'm sure its not too tricky and an hour or
> so I could work it out but if anyone has already done it that would be
> great.
> Thanks,
> Vince

on the client side one need a to be allow to ssh to the server, for the given
user (it exists technics to allow anonssh, like it is done for git on the
freebsd infrastructure if needed).
on the server side one need pkg to be installed (reminder pkg works on linux and
osx if needed so the server does not need to be a freebsd server)

in the pkg.conf of the server side I do recommand setting SSH_RESTRICT_DIR to a
path "upper" from the path of the packages.

Let say the packages are in /usr/local/freebsd/packages/<ABI>

one can set SSH_RESTRICT_DIR to /usr/local/packages

on the client side:

myrepo: {
	url: ssh://user@host/${ABI}

that is all.

the doc part of the url represent the path under this SSH_RESTRICT_DIR (relative

Note that pkg will open that directory if on freebsd can use capcisum to get
restricted to it.

Under linux and osx, it will make sure via path comparison to never escape it.

Now with the new tcp:// which I just committed it is exactly the same except
that one does not need to setup ssh.

Best regards,