I would like to provide a (preferably single) repo of (architecture independent package) net/cloud-init-devel releases to my test VMs, so they can install a fresh version of net/cloud-init-devel that I can then do testing on.
This is the kind of thing that Ubuntu PPAs and other Linux package managers do.
However, that is, broadly speaking, not possible pkg.
If I provide a repo with only net/cloud-init-devel, the package will not be installable from that repo:
root@freebsd:~ # pkg install -r cloud-init net/cloud-init-devel
Updating cloud-init repository catalogue...
cloud-init repository is up to date.
All repositories are up to date.
pkg: py39-cloud-init-devel has a missing dependency: py39-requests
pkg: Package database is busy while closing!
If I force installation with pkg install --ignore-missing the dependencies will be missing, and there's no way to install them short of enumerating them all. On Debian, if I install a package as file with dpkg that ends up having missing dependencies, I can pull those in with apt install -f. No such thing is possible with pkg:
root@freebsd:~ # pkg install --ignore-missing -r cloud-init net/cloud-init-devel
Updating cloud-init repository catalogue...
cloud-init repository is up to date.
All repositories are up to date.
pkg: py39-cloud-init-devel has a missing dependency: py39-requests
pkg: py39-cloud-init-devel has a missing dependency: sudo
pkg: py39-cloud-init-devel has a missing dependency: py39-oauthlib
pkg: py39-cloud-init-devel has a missing dependency: py39-netifaces
pkg: py39-cloud-init-devel has a missing dependency: py39-jsonschema
pkg: py39-cloud-init-devel has a missing dependency: py39-jsonpointer
pkg: py39-cloud-init-devel has a missing dependency: py39-jsonpatch
pkg: py39-cloud-init-devel has a missing dependency: py39-configobj
pkg: py39-cloud-init-devel has a missing dependency: py39-boto
pkg: py39-cloud-init-devel has a missing dependency: py39-Jinja2
pkg: py39-cloud-init-devel has a missing dependency: py39-pyserial
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
py39-cloud-init-devel: 23.4.289 [cloud-init]
Number of packages to be installed: 1
The process will require 4 MiB more space.
1 MiB to be downloaded.
Proceed with this action? [y/N]:
[1/1] Fetching py39-cloud-init-devel-23.4.289.pkg: 100% 1 MiB 1.1MB/s 00:01
Checking integrity... done (0 conflicting)
[1/1] Installing py39-cloud-init-devel-23.4.289...
[1/1] Extracting py39-cloud-init-devel-23.4.289: 100%
=====
Message from py39-cloud-init-devel-23.4.289:
--
To enable cloud-init, add the following line to rc.conf:
cloudinit_enable="YES"
This will make sure cloud-init is started at boot.
root@freebsd:~ # cloud-init --version
Traceback (most recent call last):
File "/usr/local/bin/cloud-init", line 33, in <module>
sys.exit(load_entry_point('cloud-init==23.4', 'console_scripts', 'cloud-init')())
File
etc…
There is no apt install -f equivalent in pkg and pkg upgrade is entirely unfazed:
root@freebsd:~ # pkg upgrade
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
Updating cloud-init repository catalogue...
cloud-init repository is up to date.
All repositories are up to date.
Checking for upgrades (1 candidates): 100%
Processing candidates (1 candidates): 100%
Checking integrity... done (0 conflicting)
Your packages are up to date.
root@freebsd:~ #
Mina, what do you even want??
I want to be able to provide single-package repos, like PPAs, which provide a higher version of packages.
I want to be able to configure that package repo, and when running pkg install have pkg automatically pick packages from there because their version or priority is higher;
And because I lack the resources, I also want to be able to provide architecture independent repositories (think FreeBSD:14:any, or, heck perhaps even FreeBSD:all), which I think is the main hindrance here, since by default, poudriere builds (or downloads) all dependencies of a package to provide in the repo it creates.
I would like to provide a (preferably single) repo of (architecture independent package)
net/cloud-init-devel
releases to my test VMs, so they can install a fresh version ofnet/cloud-init-devel
that I can then do testing on. This is the kind of thing that Ubuntu PPAs and other Linux package managers do.However, that is, broadly speaking, not possible pkg.
If I provide a repo with only
net/cloud-init-devel
, the package will not be installable from that repo:If I force installation with
pkg install --ignore-missing
the dependencies will be missing, and there's no way to install them short of enumerating them all. On Debian, if I install a package as file withdpkg
that ends up having missing dependencies, I can pull those in withapt install -f
. No such thing is possible withpkg
:There is no
apt install -f
equivalent inpkg
andpkg upgrade
is entirely unfazed:Mina, what do you even want??
I want to be able to provide single-package repos, like PPAs, which provide a higher version of packages. I want to be able to configure that package repo, and when running
pkg install
havepkg
automatically pick packages from there because their version orpriority
is higher;And because I lack the resources, I also want to be able to provide architecture independent repositories (think
FreeBSD:14:any
, or, heck perhaps evenFreeBSD:all
), which I think is the main hindrance here, since by default,poudriere
builds (or downloads) all dependencies of a package to provide in the repo it creates.