Hi Dan,
Am 28.09.22 um 23:01 schrieb Dan Mahoney:
On Sep 26, 2022, at 20:22, Kevin Oberman <rkober...@gmail.com
<mailto:rkober...@gmail.com>> wrote:
On Mon, Sep 26, 2022, 18:13 Dan Mahoney <free...@gushi.org
<mailto:free...@gushi.org>> wrote:
On Sep 26, 2022, at 09:27, Kevin Oberman <rkober...@gmail.com
<mailto:rkober...@gmail.com>> wrote:
On Mon, Sep 26, 2022 at 2:58 AM Dan Mahoney <free...@gushi.org
<mailto:free...@gushi.org>> wrote:
All,
A quick question:
If a pkg depends on python, but not a specific version, it
will simply pick a version to install (I guess, whatever
version was the default when the pkg was built, 3.8 right
now), correct?
If you have 3.9 installed, that will satifsfy dependencies,
and it won't install python3.8, correct? Or are the dependent
versions for interpretec languages in pkg locked to whatever
the default is?
Assuming "any python will work", If you have 3.8 installed,
and later install 3.9 -- is there any easy way to point your
package at the new version as the new dependency, without
deinstalling/reinstalling it?
-Dan
It will use the version specified as default in
/usr/ports/Mk/bsd.default-versions.mk
<http://bsd.default-versions.mk/>.
To be clear, I'm talking about pkg install, not port building.
So I understand -- that value is somehow baked in to the package
tree somewhere? Because pkg alone doesn't look at the ports tree
on the installing machine(you do not need to have ports extracted
to install packages), nor do I believe it looks at make.conf,
If so, where in pkg do I find the default version? Is it
somewhere in the repository that's fetched before I install any
packages?
-Dan
You are correct. But the packages are built using the same Makefile
and the same defaults as when built from ports for the specified
version of FreeBSD as if it was built from ports. The Mk files are
updated with ports, so all packages change when the change is
committed to the defaults file, though they will only take effect when
the quarter changes unless you're using LATEST packages.
Okay, so in either the package file, or the repo file, is there a bit
that says "whatever is the default" or that explicitly says "if there's
not a python, install 3.8"?
There is PYTHON_DEFAULT (set to 3.9 ATM) in
ports/Mk/bsd.default-versions.mk. You can override this for example by
an entry in /etc/make.conf:
DEFAULT_VERSIONS+= python=3.10 python3=3.10
I realize I'm asking weird minute questions, but I'm noticing that
across our fleet we have some blend of machines that are 3.7, 3.8, and
3.9, and trying to just remove 3.7 attempts to deinstall packages that
would work with 3.8.
To update from one Python version to another, there are descriptions in
/usr/ports/UPDATING, see entry from 20220626.
After changing Python itself (i.e. from 3.7 to 3.9), rebuilding
depending py3x-packages will do this version change for you (i.e. from
py3.7-* to py3.9-*, ...). It works via the so called flavors.
I hope I have not misunderstood your request and that these hints are
somehow useful ;)
Best wishes,
Rainer
-Dan