Оновлення Weblate#
Оновлення образу Docker#
До офіційного образу Docker (див. install/docker) інтегровано усі кроки оновлення. Кроків, які слід виконати вручну, окрім отримання коду найсвіжішої версії, немає.
Дивись також
Загальні настанови щодо оновлення#
Перед оновленням, будь ласка, ознайомтеся із поточними вимогами, оскільки їх могло бути змінено. Щойно усі потрібні пакунки буде встановлено або оновлено, будь ласка, скоригуйте ваш settings.py
так, щоб він відповідав змінам у налаштуваннях (зверніться до settings_example.py
, щоб дізнатися більше про правильні значення).
Завжди ознайомлюйтеся з настановами щодо специфіки версії до оновлення. Якщо ви пропустили кілька попередніх версій, виконайте настанови для всіх версій, які ви пропускаєте під час оновлення. Іноді краще оновитися до проміжної версії, щоб забезпечити безпроблемне перенесення даних. Оновлення з пропусканням кількох випусків мають працювати, але їхня перевірка на коректність виконується набагато менш ретельно, ніж перевірка оновлень без пропуску версій.
Примітка
До оновлення рекомендуємо вам створити повну резервну копію бази даних, щоб ви могли повернутися до попереднього стану бази даних, якщо не вдасться виконати оновлення, див. Резервне копіювання і пересування Weblate.
Зупиніть процеси wsgi і Celery. Оновлення може призвести до несумісних змін у базі даних, тому завжди безпечніше, якщо під час оновлення застарілі процеси не працюватимуть.
Оновіть код 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 -r requirements.txt # Install optional dependencies directly when not using virtualenv pip install --upgrade -r requirements-optional.txt
У нового випуску Weblate можуть бути нові необов’язкові залежності. Будь ласка, перевірте, чи забезпечують вони роботу потрібних вам можливостей.
Оновіть файл налаштувань. Зверніться до файла
settings_example.py
або специфічних для випуску настанов, щоб ознайомитися із потрібними для цього діями.Оновіть структуру бази даних:
weblate migrate --noinput
Зберіть оновлені статичні файли (див. Запуск сервера і Обслуговування статичних файлів):
weblate collectstatic --noinput --clear
Стисніть файли JavaScript і CSS (необов’язково, див. Стиснення клієнтських даних):
weblate compress
Якщо ви працюєте із версією з Git, вам слід також повторно створювати файли локалей кожного разу після оновлення. Зробити це можна за допомогою такої команди:
weblate compilemessages
Перевірте, чи є працездатною ваша конфігурація (див. також Промислові налаштування):
weblate check --deploy
Перезапустіть засіб обробки Celery (див. Фонові завдання з використанням Celery).
Специфічні для версій настанови#
Змінено в версії 5.0: Специфічні настанови щодо версій тепер включено до приміток щодо випуску, див. Weblate 5.1.
Оновлення із застарілої основної версії#
Підтримки оновлення до нових основних версій не передбачено. Завжди виконуйте оновлення до найсвіжішої проміжної версії початкового основного випуску. Оновлення, у яких пропущено цей крок, вважаються непідтримуваними — вони не працюватимуть як слід.
If you are upgrading from the 2.x release, always first upgrade to 3.0.1.
If you are upgrading from the 3.x release, always first upgrade to 4.0.4.
If you are upgrading from the 4.x release, always first upgrade to 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
Перенесення даних за допомогою дампів JSON Django#
Найпростішим підходом до перенесення є використання дампів JSON Django. Такий спосіб добре працює для малих встановлень. Для більших сайтів вам варто скористатися pgloader, див. Перенесення даних до PostgreSQL за допомогою pgloader.
Додайте PostgreSQL як додаткове з’єднання із базою даних до
settings.py
:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.mysql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
# Additional database options
"OPTIONS": {
# In case of using an older MySQL server, which has MyISAM as a default storage
# 'init_command': 'SET storage_engine=INNODB',
# Uncomment for MySQL older than 5.7:
# 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
# If your server supports it, see the Unicode issues above
"charset": "utf8mb4",
# Change connection timeout in case you get MySQL gone away error:
"connect_timeout": 28800,
},
},
"postgresql": {
# Database engine
"ENGINE": "django.db.backends.postgresql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
},
}
Запустіть перенесення і відкиньте усі дані, які було вставлено до таблиць:
weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
Dump legacy database and import to PostgreSQL:
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
Скоригуйте
DATABASES
так, щоб типово використовувалася лише база даних PostgreSQL, вилучіть застаріле з’єднання.
Після цього Weblate має бути готовим для запуску з базою даних PostgreSQL.
Перенесення даних до PostgreSQL за допомогою pgloader#
pgloader — типовий інструмент для перенесення даних до PostgreSQL. Ви можете скористатися ним для перенесення бази даних Weblate.
Скоригуйте ваш
settings.py
так, щоб у ньому було використано базу даних PostgreSQL.Перенесіть схему до бази даних PostgreSQL:
weblate migrate weblate sqlflush | weblate dbshell
Запустіть 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
.