升级 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 的版本,每次升级时还应该重新生成 locale 文件。可以通过调用后面的来进行:

    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#

如果在 PostgreSQL 以外的数据库上运行 Weblate,你应该考虑迁移到 PostgreSQL,因为 Weblate 与它搭配表现最佳。后面的步骤将引导你在数据库之间迁移数据。请记住迁移前要停止 web 和 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

使用 pgloader 迁移到 PostgreSQL#

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 将其导入。