Without the pinning, after the bullseye upgrade, python3 is upgraded to python3.9. Which
breaks the venv, thus failing the netbox service.
The smallest effort is to actually pin the python3 version.
Related to T3802
Differential D6830
Pin python3.7 version so venv still works after bullseye migration ardumont on Dec 14 2021, 10:17 AM. Authored by
Details
Without the pinning, after the bullseye upgrade, python3 is upgraded to python3.9. Which The smallest effort is to actually pin the python3 version. Related to T3802 octo-diff: $ $SWH_PUPPET_ENVIRONMENT_HOME/bin/octocatalog-diff --octocatalog-diff-args --no-truncate-details --to staging bojimans ... diff origin/production/bojimans.internal.softwareheritage.org current/bojimans.internal.softwareheritage.org ******************************************* + Apt::Pin[python3] => parameters => "codename": "" "component": "" "ensure": "present" "explanation": "Pin python3.7 version so venv still works after bullseye upgrade" "label": "" "notify": "Package[python3-venv]" "order": 50 "origin": "" "originator": "" "packages": ["python3"] "priority": 1001 "release": "" "release_version": "" "version": "3.7.3-1" ******************************************* + Apt::Setting[pref-python3] => parameters => "ensure": "present" "notify_update": false "priority": 50 "content": >>> # This file is managed by Puppet. DO NOT EDIT. Explanation: Pin python3.7 version so venv still works after bullseye upgrade Package: python3 Pin: version 3.7.3-1 Pin-Priority: 1001 <<< ******************************************* + File[/etc/apt/preferences.d/python3.pref] => parameters => "ensure": "present" "group": "root" "mode": "0644" "owner": "root" "content": >>> # This file is managed by Puppet. DO NOT EDIT. Explanation: Pin python3.7 version so venv still works after bullseye upgrade Package: python3 Pin: version 3.7.3-1 Pin-Priority: 1001 <<< ******************************************* *** End octocatalog-diff on bojimans.internal.softwareheritage.org vagrant up bojimans in the intent to run the bullseye upgrade: root@bojimans:/root# puppet agent --test Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Loading facts Info: Caching catalog for bojimans.internal.softwareheritage.org Info: Applying configuration version '1639473399' Notice: /Stage[main]/Profile::Static_hostnames/Host[somerset.internal.softwareheritage.org]/ensure: created Info: Computing checksum on file /etc/hosts Notice: /Stage[main]/Profile::Static_hostnames/Host[ns0.euwest.azure.internal.softwareheritage.org]/ensure: created Notice: /Stage[main]/Profile::Netbox/Apt::Pin[python3]/Apt::Setting[pref-python3]/File[/etc/apt/preferences.d/python3.pref]/content: --- /etc/apt/preferences.d/python3.pref 2021-12-14 09:00:14.173692182 +0000 +++ /tmp/puppet-file20211214-10027-z1lwxw 2021-12-14 09:16:45.309028031 +0000 @@ -1,5 +1,5 @@ # This file is managed by Puppet. DO NOT EDIT. -Explanation: Pin python3.7 version so old venv still works after bullseye upgrade +Explanation: Pin python3.7 version so venv still works after bullseye upgrade Package: python3 Pin: version 3.7.3-1 Pin-Priority: 1001 Info: Computing checksum on file /etc/apt/preferences.d/python3.pref Info: /Stage[main]/Profile::Netbox/Apt::Pin[python3]/Apt::Setting[pref-python3]/File[/etc/apt/preferences.d/python3.pref]: Filebucketed /etc/apt/preferences.d/python3.pref to puppet with sum 2a904a5bf26a71652466591111670fc8 Notice: /Stage[main]/Profile::Netbox/Apt::Pin[python3]/Apt::Setting[pref-python3]/File[/etc/apt/preferences.d/python3.pref]/content: content changed '{md5}2a904a5bf26a71652466591111670fc8' to '{md5}9f2eb64399150dd2ad135e687c64c4d2' Info: Apt::Pin[python3]: Scheduling refresh of Package[python3-venv] Notice: /Stage[main]/Ntp::Service/Service[ntp]/ensure: ensure changed 'stopped' to 'running' Info: /Stage[main]/Ntp::Service/Service[ntp]: Unscheduling refresh on Service[ntp] Notice: /Stage[main]/Profile::Systemd_journal::Journalbeat/Service[journalbeat]/ensure: ensure changed 'stopped' to 'running' Info: /Stage[main]/Profile::Systemd_journal::Journalbeat/Service[journalbeat]: Unscheduling refresh on Service[journalbeat] Notice: /Stage[main]/Profile::Netbox/Package[python3-venv]: Triggered 'refresh' from 1 event Notice: Applied catalog in 3.57 seconds Following the dist-upgrade to bullseye, the following is seen: root@bojimans: /root # $CMD upgrade ... The following packages have been kept back: facter gir1.2-glib-2.0 guile-2.2-libs libgirepository-1.0-1 libglib2.0-0 libpython2-stdlib libpython2.7 libpython2.7-minimal libpython2.7-stdlib libpython3-stdlib mailutils mailutils-common ntp python2 python2-minimal python2.7 python2.7-minimal python3-minimal python3-pykwalify python3-ruamel.yaml python3-six ruby ruby-augeas ruby-filesystem ruby-json ruby-selinux ruby-shadow rubygems-integration unattended-upgrades root@bojimans:/root # dpkg -l python3-minimal Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===============-============-============-=============================================================== ii python3-minimal 3.7.3-1 amd64 minimal subset of the Python language (default python3 version) root@bojimans: /root# $CMD dist-upgrade ... The following packages have been kept back: libpython3-stdlib ntp python3-minimal python3-pykwalify python3-ruamel.yaml # after the dist-upgrade \m/ root@bojimans:/etc# python3 --version Python 3.7.3 root@bojimans:/etc# systemctl restart netbox root@bojimans:/etc# systemctl status netbox ● netbox.service - NetBox WSGI Service Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-12-14 09:31:25 UTC; 2s ago Docs: https://netbox.readthedocs.io/en/stable/ Main PID: 21516 (gunicorn) Tasks: 6 (limit: 1146) Memory: 389.5M CGroup: /system.slice/netbox.service ├─21516 /opt/netbox-3.0.2/venv/bin/python3 /opt/netbox-3.0.2/venv/bin/gunicorn --pid /var/tmp/netbox.pid > ├─21520 /opt/netbox-3.0.2/venv/bin/python3 /opt/netbox-3.0.2/venv/bin/gunicorn --pid /var/tmp/netbox.pid > ├─21521 /opt/netbox-3.0.2/venv/bin/python3 /opt/netbox-3.0.2/venv/bin/gunicorn --pid /var/tmp/netbox.pid > ├─21522 /opt/netbox-3.0.2/venv/bin/python3 /opt/netbox-3.0.2/venv/bin/gunicorn --pid /var/tmp/netbox.pid > ├─21523 /opt/netbox-3.0.2/venv/bin/python3 /opt/netbox-3.0.2/venv/bin/gunicorn --pid /var/tmp/netbox.pid > └─21524 /opt/netbox-3.0.2/venv/bin/python3 /opt/netbox-3.0.2/venv/bin/gunicorn --pid /var/tmp/netbox.pid > Dec 14 09:31:25 bojimans systemd[1]: Started NetBox WSGI Service. Dec 14 09:31:26 bojimans gunicorn[21516]: [2021-12-14 09:31:26 +0000] [21516] [INFO] Starting gunicorn 20.1.0 Dec 14 09:31:26 bojimans gunicorn[21516]: [2021-12-14 09:31:26 +0000] [21516] [INFO] Listening at: http://127.0.0.1:80> Dec 14 09:31:26 bojimans gunicorn[21516]: [2021-12-14 09:31:26 +0000] [21516] [INFO] Using worker: gthread Dec 14 09:31:26 bojimans gunicorn[21520]: [2021-12-14 09:31:26 +0000] [21520] [INFO] Booting worker with pid: 21520 Dec 14 09:31:26 bojimans gunicorn[21521]: [2021-12-14 09:31:26 +0000] [21521] [INFO] Booting worker with pid: 21521 Dec 14 09:31:26 bojimans gunicorn[21522]: [2021-12-14 09:31:26 +0000] [21522] [INFO] Booting worker with pid: 21522 Dec 14 09:31:26 bojimans gunicorn[21523]: [2021-12-14 09:31:26 +0000] [21523] [INFO] Booting worker with pid: 21523 Dec 14 09:31:26 bojimans gunicorn[21524]: [2021-12-14 09:31:26 +0000] [21524] [INFO] Booting worker with pid: 21524 So, the pinning works as expected, it allows the venv to still run ok after the upgrade.
Diff Detail
Event Timeline
Comment Actions It turns out that this is too much a pinning. Another path would be to:
[1] 10:46 <+olasd> I didn't say "force python3.9 to not be installed", I said "keep python3.7 around" 10:47 <+olasd> it's just a matter of marking python3.7 as manually installed before running the upgrade 10:48 <+olasd> and it's only for the 10 minutes between upgrading and recreating the virtualenv with python3.9 10:49 <+ardumont> mmm, ok, i did not realize that would prevent the 3.9 from popping up 10:49 <+ardumont> how do you mark python3.7 as manually installed? 10:49 <+olasd> "apt install python3.7" 10:50 <+ardumont> ahhhh ok, it's only installed as a deps in the current state |