install: Support Debian 12.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-05-10 14:20:46 -07:00 committed by Tim Abbott
parent 16dedb08fd
commit 12310189ed
12 changed files with 75 additions and 6 deletions

View File

@ -144,6 +144,11 @@ jobs:
os: bullseye
extra-args: --test-custom-db
- docker_image: zulip/ci:bookworm
name: Debian 12 production install
os: bookworm
extra-args: ""
name: ${{ matrix.name }}
container:
image: ${{ matrix.docker_image }}

View File

@ -48,6 +48,12 @@ jobs:
os: jammy
include_documentation_tests: false
include_frontend_tests: false
# Debian 12 ships with Python 3.11.2.
- docker_image: zulip/ci:bookworm
name: Debian 12 (Python 3.11, backend)
os: bookworm
include_documentation_tests: false
include_frontend_tests: false
runs-on: ubuntu-latest
name: ${{ matrix.name }}

View File

@ -20,7 +20,7 @@ host by following these instructions. Currently supported platforms
are:
- Ubuntu 20.04, 22.04
- Debian 11
- Debian 11, 12
- CentOS 7 (beta)
- Fedora 33 and 34 (beta)
- RHEL 7 (beta)

View File

@ -51,7 +51,7 @@ a proxy to access the internet.)
[GitHub account](#step-0-set-up-git--github).
- **macOS**: macOS (10.11 El Capitan or newer recommended)
- **Ubuntu LTS**: 20.04 or 22.04
- **Debian**: 11
- **Debian**: 11 or 12
- **Fedora**: tested for 36
- **Windows**: Windows 64-bit (Win 10 recommended), hardware
virtualization enabled (VT-x or AMD-V), administrator access.

View File

@ -7,6 +7,7 @@ To run a Zulip server, you will need:
- Ubuntu 20.04
- Ubuntu 22.04
- Debian 11
- Debian 12
- A supported CPU architecture:
- x86-64
- aarch64
@ -36,7 +37,7 @@ on issues you'll encounter](install-existing-server.md).
#### Operating system
Ubuntu 20.04, Ubuntu 22.04, and Debian 11
Ubuntu 20.04, Ubuntu 22.04, Debian 11, and Debian 12
are supported for running Zulip in production. You can also
run Zulip on other platforms that support Docker using
[docker-zulip][docker-zulip-homepage].

View File

@ -484,6 +484,52 @@ instructions for other supported platforms.
18.04](#upgrading-from-ubuntu-1604-xenial-to-1804-bionic), so
that you are running a supported operating system.
### Upgrading from Debian 11 to 12
1. Upgrade your server to the latest `7.x` release.
2. As the Zulip user, stop the Zulip server and run the following
to back up the system:
```bash
/home/zulip/deployments/current/scripts/stop-server
/home/zulip/deployments/current/manage.py backup --output=/home/zulip/release-upgrade.backup.tar.gz
```
3. Follow [Debian's instructions to upgrade the OS][bookworm-upgrade].
[bookworm-upgrade]: https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.html
When prompted for you how to upgrade configuration
files for services that Zulip manages like Redis, PostgreSQL,
nginx, and memcached, the best choice is `N` to keep the
currently installed version. But it's not important; the next
step will re-install Zulip's configuration in any case.
4. As root, run the following steps to regenerate configurations
for services used by Zulip:
```bash
apt remove upstart -y
/home/zulip/deployments/current/scripts/zulip-puppet-apply -f
```
5. Reinstall the current version of Zulip, which among other things
will recompile Zulip's Python module dependencies for your new
version of Python:
```bash
rm -rf /srv/zulip-venv-cache/*
/home/zulip/deployments/current/scripts/lib/upgrade-zulip-stage-2 \
/home/zulip/deployments/current/ --ignore-static-assets --audit-fts-indexes
```
This will finish by restarting your Zulip server; you should now
be able to navigate to its URL and confirm everything is working
correctly.
6. As an additional step, you can also [upgrade the PostgreSQL version](#upgrading-postgresql).
### Upgrading from Debian 10 to 11
1. Upgrade your server to the latest `5.x` release. You can only

View File

@ -219,7 +219,7 @@ if [ -f /etc/os-release ]; then
fi
case "$os_id $os_version_id" in
'debian 11' | 'ubuntu 20.04' | 'ubuntu 22.04') ;;
'debian 11' | 'debian 12' | 'ubuntu 20.04' | 'ubuntu 22.04') ;;
*)
set +x
cat <<EOF
@ -228,6 +228,7 @@ Unsupported OS release: $os_id $os_version_id
Zulip in production is supported only on:
- Debian 11
- Debian 12
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS

View File

@ -210,6 +210,7 @@ if os.path.exists("/etc/init.d/postgresql"):
if not postgresql_version:
default_postgresql_version = {
("debian", "11"): "13",
("debian", "12"): "15",
("ubuntu", "20.04"): "12",
("ubuntu", "22.04"): "14",
("centos", "7"): "11",

View File

@ -0,0 +1,2 @@
deb http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main
deb-src http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main

View File

@ -26,6 +26,10 @@ if [[ ! -e /usr/share/doc/groonga-apt-source/copyright ]]; then
read -r distribution
read -r release
} <<<"$os_info"
if [ "$distribution" = debian ] && [ "$release" = bookworm ]; then
# PGroonga binaries are not yet provided for Debian 12.
exit
fi
groonga_apt_source_deb="groonga-apt-source-latest-$release.deb"
groonga_apt_source_deb_sign="$groonga_apt_source_deb.asc.$pgroonga_apt_sign_key_fingerprint"
curl -fLO --retry 3 "https://packages.groonga.org/$distribution/$groonga_apt_source_deb"

View File

@ -4,3 +4,4 @@ cd "$(dirname "${BASH_SOURCE[0]}")"
docker build . --build-arg=BASE_IMAGE=ubuntu:20.04 --pull --tag=zulip/ci:focal
docker build . --build-arg=BASE_IMAGE=ubuntu:22.04 --pull --tag=zulip/ci:jammy
docker build . --build-arg=BASE_IMAGE=debian:11 --pull --tag=zulip/ci:bullseye
docker build . --build-arg=BASE_IMAGE=debian:bookworm --pull --tag=zulip/ci:bookworm

View File

@ -78,6 +78,8 @@ vendor = distro_info["ID"]
os_version = distro_info["VERSION_ID"]
if vendor == "debian" and os_version == "11": # bullseye
POSTGRESQL_VERSION = "13"
elif vendor == "debian" and os_version == "12": # bookworm
POSTGRESQL_VERSION = "15"
elif vendor == "ubuntu" and os_version == "20.04": # focal
POSTGRESQL_VERSION = "12"
elif vendor == "ubuntu" and os_version == "21.10": # impish
@ -159,7 +161,7 @@ COMMON_YUM_DEPENDENCIES = [
]
BUILD_PGROONGA_FROM_SOURCE = False
if vendor == "debian" and os_version in [] or vendor == "ubuntu" and os_version in []:
if vendor == "debian" and os_version in ["12"] or vendor == "ubuntu" and os_version in []:
# For platforms without a PGroonga release, we need to build it
# from source.
BUILD_PGROONGA_FROM_SOURCE = True
@ -180,7 +182,7 @@ elif "debian" in os_families():
# additional dependency for postgresql-13-pgdg-pgroonga.
#
# See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037
if vendor == "debian" and os_version == "11":
if vendor == "debian":
DEBIAN_DEPENDENCIES.remove("libappindicator1")
DEBIAN_DEPENDENCIES.append("libgroonga0")