公司的前任配置管理员安装的 gitlab 使用的是 bitnami 出品的全家桶,和官方的 gitlab 安装方式完全不同,包括配置文件、启动的方式、各种命令行工具都不相同。
他离职之后,gitlab 就交给新配置管理员了,但是对方对 gitlab 了解有限,基本上有什么疑难杂症还得找我。
我们的 gitlab 使用的是版本为 8.5.1,安装在 /opt
目录。
因为我们 gitlab 接入了 ldap,并且将 ldap 中的一个用户设置成了管理员,而这次又不知道是什么原因导致它被锁定了。锁定之后无法解锁,报 This user cannot be unlocked manually from GitLab
这样的错,同时也无法删除该用户,因为使用它创建了很多的组。
谷歌了一下,解决办法是通过 gitlab-rails 命令手动修改用户的状态,但是我根本没有找到这个命令。后来不死心,仔细找了找,终于在 /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/bin/
找到了 rails 命令。
不过执行直接报错:
# /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/bin/rails
/usr/bin/env: ruby: No such file or directory
复制代码
需要 ruby 环境。虽然可以直接 yum install ruby 来安装,但是自带的版本才 1.8.7,不用装我也知道太老,于是找安装 ruby 的方法。在官网上找到了一种 RVM 安装的方式,这种方式类似于 Python 的 pyenv,可以管理多个 ruby 版本。那没什么好想的,就它了。
安装 ruby
# curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
# \curl -sSL https://get.rvm.io | bash -s stable
复制代码
安装在 /usr/local/rvm。安装完成之后提示要将使用 rvm 的用户加入到 rvm 组,不过我这里使用 root,就不管了。
接着就是安装 ruby 了,安装什么版本呢?我也不知道,但是 rvm 知道,执行下面命令即可。
cd /opt/gitlab-8.5.1-0/apps/gitlab/htdocs
/usr/local/rvm/bin/rvm list known
复制代码
紧接着你就能够看到提示:
Required ruby-2.1.8 is not installed.
To install do: 'rvm install "ruby-2.1.8"'
复制代码
当然下面还有很多内容,我们不用管,rvm 自动提示我们需要安装 2.1.8 版本的 ruby。之所以会出现这样的情况,我猜测是因为当前目录下存在 Gemfile、Gemfile.lock 等文件。
安装 ruby 2.1.8,请确保 yum 源可用:
/usr/local/rvm/bin/rvm install "ruby-2.1.8"
复制代码
安装的位置为 /usr/local/rvm/rubies/ruby-2.1.8/bin/ruby
。
安装完成之后我们修改 /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/bin/rails 文件,将第一行改为 /usr/local/rvm/rubies/ruby-2.1.8/bin/ruby
,然后执行 rails 同样会失败,报对应的组件不存在。
安装依赖
不用慌,因为它依赖的包我们还没有装,这时返回到它的上级目录,就是 htdocs,它下面存在 Gemfile。
然后执行下面命令:
/usr/local/rvm/wrappers/ruby-2.1.8/