The ftp scheme doesn't seem to be supported anymore whilst the manpage still mentions it.

From: Pascal Pype <pascal.pype_at_skynet.be>
Date: Sat, 21 Oct 2023 17:15:11 UTC
Greetings,

I was trying to set up a custom repository built via poudriere.
The jail is: 13_2-RELEASE-amd64 with version 13.2-RELEASE-p4.
The ports collection is: local and comes from quarterly: 2023Q3.

The poudriere buid was done on a FreeBSD build server with full OS information:

FreeBSD fBsdSrvr 13.2-RELEASE FreeBSD 13.2-RELEASE releng/13.2-n254617-525ecfdad597 GENERIC amd64

A FreeBSD client is used with full OS information:

FreeBSD fBsdClnt 13.2-RELEASE FreeBSD 13.2-RELEASE releng/13.2-n254617-525ecfdad597 GENERIC amd64

On that client an additional repository configuration file was created.
/usr/local/etc/pkg/repos/fBsdSrvr.conf

The content of that repository configuration file was:

fBsdSrvr: {
  url: "ftp://fBsdSrvr/13_2-RELEASE-amd64-local",
  enabled: yes,
  mirror_type: NONE
}

FreeBSD: { 
  enabled: no 
}

The command 'pkg update' was invoked on fBsdClnt.
This resulted in the error massages:

pkg: invalid scheme ftp
pkg: Cannot parse configuration file!

The fBsdSrvr stanza was commented out in the configuration file.

The command 'pkg config VALID_URL_SCHEME' was invoked on fBsdClnt.
The response was:

pkg+http
pkg+https
https
http
file
ssh
tcp

The 'ftp' scheme doesn't appear in the list of supported schemes.

Yet the man page 'pkg.conf(5)' still states:

For a MIRROR_TYPE of NONE, any of the URL schemes supported by
libfetch(3) can be used, including: http://, https://, ftp://, or
file://.  In addition a ssh:// URL scheme is also supported.  Where
MIRROR_TYPE is SRV, you should use a pkg+http:// or pkg+https:// (etc.)
URL scheme.  Using an http:// URL implies that the hostname part is a
simple hostname according to RFC 2616, and is no longer accepted.

As you can see, the scheme ftp:// is mentioned as being supported by
the pkg program, whilst is isn't the case anymore.

The configuration file on the cient (fBsdClnt) was changed to

fBsdSrvr: {
  url: "ssh://fBsdSrvr/usr/local/poudriere/data/packages/13_2-RELEASE-amd64-local",
  enabled: yes,
  mirror_type: NONE
}

FreeBSD: { 
 enabled: no 
}

This solved the problem.

When using pkg on fBsdClnt, it asks the root password of fBsdSrvr on each invocation.

Is there a way to register the root password of fBsdSrvr that pkg asks in fBsdClnt ?

Kind regards,
Pascal Pype