Оновлення Weblate

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

До офіційного образу Docker (див. install/docker) інтегровано усі кроки оновлення. Кроків, які слід виконати вручну, окрім отримання коду найсвіжішої версії, немає.

Загальні настанови щодо оновлення

Перед оновленням, будь ласка, ознайомтеся із поточними вимогами, оскільки їх могло бути змінено. Щойно усі потрібні пакунки буде встановлено або оновлено, будь ласка, скоригуйте ваш 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.

Оновлення із застарілої основної версії

Підтримки оновлення до нових основних версій не передбачено. Завжди виконуйте оновлення до найсвіжішої проміжної версії початкового основного випуску. Оновлення, у яких пропущено цей крок, вважаються непідтримуваними — вони не працюватимуть як слід.

  • Якщо ви оновлюєте систему з версії 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.