Aktualisieren von Weblate

Aktualisieren des Docker-Images

Das offizielle Docker-Image (siehe Installation über Docker) hat alle Aktualisierungsschritte für Weblate integriert. Außer dem Abrufen der neuesten Version sind normalerweise keine manuellen Schritte erforderlich.

Allgemeine Upgrade-Anweisungen

Bevor Sie ein Upgrade durchführen, überprüfen Sie bitte die aktuellen Softwareanforderungen, da sich diese geändert haben könnten. Sobald alle Anforderungen installiert oder aktualisiert sind, passen Sie bitte Ihre settings.py an die Änderungen in der Konfiguration an (siehe settings_example.py für korrekte Werte).

Prüfen Sie vor dem Upgrade immer die versionsspezifischen Anweisungen. Bitte folgen Sie den Anweisungen für alle Versionen, die sie eventuell beim Upgrade überspringen. Manchmal ist es besser, ein Upgrade auf eine Zwischenversion durchzuführen, um eine reibungslose Migration zu gewährleisten. Upgrades über mehrere Versionen hinweg sollten funktionieren, sind aber nicht so gut getestet wie Upgrades einzelner Versionen.

Bemerkung

Es wird empfohlen, vor dem Upgrade eine vollständige Datenbanksicherung durchzuführen, damit Sie bei einem fehlgeschlagenen Upgrade die Datenbank zurücksetzen können, siehe Sichern und Verschieben von Weblate.

  1. Die Prozesse wsgi und Celery beenden. Das Upgrade kann inkompatible Änderungen an der Datenbank vornehmen, daher ist es immer sicherer, alte Prozesse während des Upgrades nicht laufen zu lassen.

  2. Den Weblate-Code aktualisieren.

    Bei Pip-Installationen kann dies erreicht werden durch:

    pip install -U "Weblate[all]==version"
    

    Oder wenn Sie einfach nur die neueste Version erhalten möchten:

    pip install -U "Weblate[all]"
    

    Wenn Sie nicht alle optionalen Abhängigkeiten installieren möchten, tun Sie dies:

    pip install -U Weblate
    

    Beim Git-Checkout müssen Sie den neuen Quellcode abrufen und Ihre Installation aktualisieren:

    cd weblate-src
    git pull
    # Update Weblate inside your virtualenv
    . ~/weblate-env/bin/pip install -e '.[all]'
    # Install dependencies directly when not using virtualenv
    pip install --upgrade -e .
    # Install optional dependencies directly when not using virtualenv
    pip install --upgrade -e '.[all]'
    
  3. Neue Weblate-Versionen haben möglicherweise neue Python-Abhängigkeiten, bitte prüfen, ob die gewünschten Funktionen abgedeckt werden.

  4. Konfigurationsdatei aktualisieren, siehe settings_example.py oder Versionsspezifische Anweisungen für die notwendigen Schritte.

  5. Datenbankstruktur aktualisieren:

    weblate migrate --noinput
    
  6. Aktualisierte statische Dateien sammeln (siehe Laufender Server und Bereitstellung statischer Dateien):

    weblate collectstatic --noinput --clear
    
  7. JavaScript- und CSS-Dateien komprimieren (optional, siehe Client-Assets komprimieren):

    weblate compress
    
  8. Wenn eine Version von Git verwendet wird, sollten bei jedem durchgeführten Upgrade auch die Gebietsschemadateien jedes Mal neu generiert werden. Dies kann durch folgenden Aufruf erfolgen:

    weblate compilemessages
    
  9. Überprüfen, ob Ihre Einrichtung in Ordnung ist (siehe auch Produktionseinrichtung):

    weblate check --deploy
    
  10. Celery-Worker neu starten (siehe Hintergrundaufgaben mit Celery).

Versionsspezifische Anweisungen

Geändert in Version 5.0: Versionsspezifische Anweisungen sind jetzt in den Versionshinweisen enthalten, siehe Weblate 5.6.1.

Upgrade von einer älteren Hauptversion

Upgrades zwischen Hauptversionen werden nicht unterstützt. Aktualisieren Sie immer auf den neuesten Patch-Level für die erste Hauptversion. Upgrades, die diesen Schritt überspringen, werden nicht unterstützt und führen zu Fehlern.

  • Wenn Sie ein Upgrade von der Version 2.x durchführen, sollten Sie immer zuerst auf 3.0.1 aktualisieren.

  • Wenn Sie ein Upgrade von der Version 3.x durchführen, sollten Sie immer zuerst auf 4.0.4 aktualisieren.

  • Wenn Sie ein Upgrade von der Version 4.x durchführen, sollten Sie immer zuerst auf 5.0.2 aktualisieren.

Migration von anderen Datenbanken zu PostgreSQL

Wenn Sie Weblate auf einer anderen Datenbank als PostgreSQL betreiben, sollten Sie eine Migration zu PostgreSQL in Betracht ziehen, da Weblate damit am besten funktioniert. Die folgenden Schritte werden Sie bei der Migration Ihrer Daten zwischen den Datenbanken anleiten. Bitte denken Sie daran, sowohl den Web- als auch den Celery-Server vor der Migration zu stoppen, da es sonst zu inkonsistenten Daten kommen kann.

Erstellen einer Datenbank in PostgreSQL

Normalerweise ist es eine gute Idee, Weblate in einer separaten Datenbank und unter einem separaten Benutzerkonto laufen zu lassen:

# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"

# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate

# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate

Migration zu PostgreSQL mit pgloader

Der pgloader ist ein allgemeines Migrationswerkzeug für die Migration von Daten nach PostgreSQL. Sie können es verwenden, um Weblate-Datenbanken zu migrieren.

  1. settings.py anpassen, um PostgreSQL als Datenbank zu verwenden.

  2. Das Schema in der PostgreSQL-Datenbank migrieren:

    weblate migrate
    weblate sqlflush | weblate dbshell
    
  3. Den pgloader ausführen, um die Daten zu übertragen. Das folgende Skript kann verwendet werden, um die Datenbank zu migrieren, aber vielleicht möchten Sie mehr über pgloader erfahren, um zu verstehen, was es tut und um es an Ihre Einrichtung anzupassen:

    LOAD DATABASE
         FROM      mysql://weblate:password@localhost/weblate
         INTO postgresql://weblate:password@localhost/weblate
    
    WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only
    
    ALTER SCHEMA 'weblate' RENAME TO 'public'
    ;
    

Migration von Pootle

Da Weblate ursprünglich als Ersatz für Pootle geschrieben wurde, ist es möglich, Benutzerkonten aus Pootle zu migrieren. Sie können die Benutzer aus Pootle auslagern und sie mit importusers importieren.