Обновление Weblate

Обновления образа Docker’а

В официальный образ Docker’а (смотрите раздел Установка с помощью Docker’а) уже интегрированы все шаги для обновления Weblate. Обычно вручную делать ничего не надо, за исключением извлечения последней версии.

Общие инструкции по обновлению

Перед обновлением, пожалуйста, проверьте текущие зависимости программного обеспечения, поскольку они могли измениться. После того, как все зависимости будут установлены или обновлены, пожалуйста, приведите свой файл настроек settings.py в соответствие с изменениями в конфигурации (правильные значения смотрите в settings_example.py).

Перед обновлением всегда проверяйте инструкции для конкретных версий. Если вы пропустили какие-то версии, пожалуйста, при обновлении проследуйте инструкциям для всех версий, которые вы пропустили. Иногда, чтобы обеспечить плавный переход, лучше сперва обновиться до какой-нибудь промежуточной версии. Обновление через несколько версий должно работать, но оно протестировано не так хорошо, как обновление на одну версию.

Примечание

Перед обновлением рекомендуется выполнить полное резервное копирование базы данных, чтобы её можно было откатить в случае неудачи обновления, смотрите раздел Резервное копирование и перенос Weblate.

  1. Остановите процессы wsgi и Celery. Обновление может выполнять несовместимые изменения в базе данных, поэтому во время обновления всегда безопаснее избегать выполнения старых процессов.

  2. Обновите код Weblate.

    При установке через pip это можно сделать следующим образом:

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

    Или, если вы просто хотите получить последнюю выпущенную версию:

    pip install -U "Weblate[all]"
    

    Если вы не хотите устанавливать все необязательные зависимости, сделайте это:

    pip install -U Weblate
    

    При использовании кода из Git’а вам нужно будет извлечь новый исходный код и обновить вашу установку:

    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. В новом выпуске Weblate могут появиться новые Зависимости Python, пожалуйста, проверьте, покрывают ли они нужные вам возможности.

  4. Обновите файл настроек, пример смотрите в settings_example.py или обратитесь к разделу Инструкции для конкретных версий для получения информации о необходимых шагах.

  5. Обновите структуру базы данных:

    weblate migrate --noinput
    
  6. Соберите обновленные статические файлы (смотрите разделы Запуск сервера и Обслуживание статических файлов):

    weblate collectstatic --noinput --clear
    
  7. Сожмите файлы JavaScript и CSS (необязательно, смотрите раздел Сжатие клиентских ресурсов):

    weblate compress
    
  8. Если вы используете версию из Git’а, вам также при каждом обновлении следует заново сгенерировать файлы локалей. Вы можете сделать это, выполнив следующую команду:

    weblate compilemessages
    
  9. Убедитесь, что ваша установка в порядке (также смотрите раздел Рабочая среда):

    weblate check --deploy
    
  10. Перезапустите рабочий процесс celery (смотрите раздел Фоновые задачи с использованием Celery).

Инструкции для конкретных версий

Изменено в версии 5.0: Инструкции для конкретной версии теперь включены в примечания к выпуску, см. Weblate 5.5.

Обновление со старой основной версии

Обновления основных версий не поддерживаются. Всегда обновляйте версию исправления до последней версии для первоначального основного выпуска. Обновления, пропускающие этот шаг, не поддерживаются и не будут работать.

  • Если вы переходите с версии 2.x, всегда сначала переходите на версию 3.0.1.

  • Если вы переходите с версии 3.x, всегда сначала переходите на версию 4.0.4.

  • Если вы переходите с версии 4.x, всегда сначала переходите на версию 5.0.2.

Переход с других баз данных на PostgreSQL

Если вы используете Weblate не на PostgreSQL, а на другой базе данных, вам следует рассмотреть возможность перехода на PostgreSQL, поскольку Weblate работает лучше всего именно с ней. Следующие шаги помогут вам перенести данные между базами данных. Пожалуйста, не забудьте остановить веб-сервер и сервер Celery перед миграцией, иначе вы можете получить несовместимые данные.

Создание базы данных в PostgreSQL

Обычно рекомендуется запускать Weblate в отдельной базе данных и под отдельной учётной записью:

# 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

Переход на PostgreSQL с помощью pgloader

pgloader — это универсальный инструмент миграции для переноса данных на PostgreSQL. Вы можете использовать его для переноса базы данных Weblate.

  1. Подправьте свой файл settings.py, задав в нём использование базы данных PostgreSQL.

  2. Перенесите схему в базу данных PostgreSQL:

    weblate migrate
    weblate sqlflush | weblate dbshell
    
  3. Запустите pgloader для переноса данных. Для переноса базы данных можно использовать следующий скрипт, но вы, возможно, захотите побольше узнать о pgloader’е, чтобы понять, что он делает, и подстроить его для соответствия вашим настройкам:

    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'
    ;
    

Переход с Pootle

Поскольку Weblate изначально был написан как замена Pootle, поддерживается миграция учётных записей пользователей из Pootle. Вы можете сбросить пользователей из Pootle и импортировать их с помощью importusers.