Help us learn about your current experience with the documentation. Take the survey.

从 CE 到 EE 转换故障排除

当将 Linux 包安装从 GitLab Community Edition (CE) 转换到 GitLab Enterprise Edition (EE) 时,您可能会遇到以下问题。

RPM ‘package is already installed’ 错误

如果您使用的是 RPM,可能会遇到类似这样的错误:

package gitlab-7.5.2_omnibus.5.2.1.ci-1.el7.x86_64 (which is newer than gitlab-7.5.2_ee.omnibus.5.2.1.ci-1.el7.x86_64) is already installed

您可以使用 --oldpackage 选项来覆盖此版本检查:

sudo rpm -Uvh --oldpackage gitlab-7.5.2_ee.omnibus.5.2.1.ci-1.el7.x86_64.rpm

已安装软件包使软件包被废弃

Community Edition (CE) 和 Enterprise Edition (EE) 软件包被标记为相互废弃,这样两者就不会同时安装。

如果您使用本地 RPM 文件从 CE 切换到 EE,或者从 EE 切换到 CE,请使用 rpm 安装软件包,而不是 yum。如果您尝试使用 yum,可能会遇到如下错误:

Cannot install package gitlab-ee-11.8.3-ee.0.el6.x86_64. It is obsoleted by installed package gitlab-ce-11.8.3-ce.0.el6.x86_64

为了避免此问题,可以:

访问项目仓库设置时出现 500 错误

当 GitLab 从 Community Edition (CE) 转换到 Enterprise Edition (EE),然后再转换到 CE,最后又转换回 EE 时,会出现此错误。

在查看项目的仓库设置时,您可以在日志中看到此错误:

Processing by Projects::Settings::RepositoryController#show as HTML
  Parameters: {"namespace_id"=>"<namespace_id>", "project_id"=>"<project_id>"}
Completed 500 Internal Server Error in 62ms (ActiveRecord: 4.7ms | Elasticsearch: 0.0ms | Allocations: 14583)

NoMethodError (undefined method `commit_message_negative_regex' for #<PushRule:0x00007fbddf4229b8>
Did you mean?  commit_message_regex_change):

此错误是由于在首次迁移到 EE 时,将 EE 功能添加到了 CE 实例中。当实例迁移回 CE 然后又升级到 EE 时,数据库中已经存在 push_rules 表。因此,迁移无法添加 commit_message_regex_change 列。

这导致 EE 表的回迁迁移 无法正常工作。回迁迁移假设在运行 CE 时,数据库中的某些表不存在。

要解决此问题:

  1. 启动数据库控制台:

    sudo gitlab-rails dbconsole --database main
  2. 手动添加缺失的 commit_message_negative_regex 列:

    ALTER TABLE push_rules ADD COLUMN commit_message_negative_regex VARCHAR;
    
    # Exit psql
    \q
  3. 重启 GitLab:

    sudo gitlab-ctl restart