从源代码安装

考虑Omnibus包安装

由于从源代码安装是一个大量的工作和容易出错,我们强烈建议快速和可靠的集成包安装(deb / rpm)。

Omnibus包更可靠的一个原因是它使用Runit来重新启动任何GitLab进程,以防其中一个进程崩溃。在频繁使用的GitLab实例上,Sidekiq后台工作人员的内存使用量会随着时间的推移而增长。Omnibus包通过让Sidekiq优雅地终止如果它占用太多内存。终止后,Runit将检测到Sidekiq没有运行,并启动它。因为源安装没有Runit,所以Sidekiq不能被终止,而且它的内存使用量会随着时间的推移而增加。

选择安装版本

确保你查看了本安装指南从你想要安装的GitLab的标签(版本)。在大多数情况下,这应该是编号最高的生产标签(其中不包含rc)。您可以在GitLab左上角(菜单栏下方)的版本下拉菜单中选择标签。

如果最高数字稳定分支不清楚,请检查GitLab博客按版本查看安装指南链接。

重要的笔记

本指南很长,因为它涵盖了许多情况,包括您需要的所有命令这是少数几个实际开箱即用的安装脚本之一

本安装指南是为您创建并进行测试的Debian / Ubuntu操作系统。请阅读requirements.md用于硬件和操作系统需求。如果你想在RHEL/CentOS上安装,我们建议使用综合包

这是安装生产服务器的官方安装指南。建立一个开发安装或许多其他安装选项,请参阅自述文件的安装部分

以下步骤已知是有效的。请当你偏离时要小心从本指南。确保您没有违反GitLab对其环境所做的任何假设。例如,许多人会遇到权限问题,因为他们更改了目录的位置或以错误的用户运行服务。

如果你在本指南中发现bug/错误,请提交合并请求后,贡献指南

概述

GitLab安装包括以下组件的设置:

  1. 包/依赖项
  2. 鲁比(人名)
  3. 节点
  4. 系统用户
  5. 数据库
  6. 复述,
  7. GitLab
  8. Nginx

1.包/依赖项

sudoDebian默认不安装。确保您的系统是最新的并安装它。

#以root用户运行!Apt-get update -yApt-get upgrade -y安装sudo -y

注意:在安装过程中,需要手动编辑一些文件。如果您熟悉vim,请使用下面的命令将其设置为默认编辑器。如果您不熟悉vim,请跳过这一步,继续使用默认编辑器。

#安装vim并设置为默认编辑器Sudo apt-get install -y vim设置编辑器/usr/bin/vim.basic

安装所需的包(需要编译Ruby和Ruby gems的本地扩展):

Sudo apt-get install -y build-essential zlib1g-dev libml -dev libssl-dev libgdbm-dev libre2-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server checkinstall libxml2-dev libxsl -dev libcurl4-openssl-dev libicu-dev logrotate rsync python-docutils ppg -config cmake

Ubuntu 14.04 (Trusty Tahr)没有libre2-dev套餐可用,但你可以手动安装re2

如果您想使用Kerberos进行用户身份验证,那么请安装libkrb5-dev:

安装libkrb5-dev

注意:如果您不知道Kerberos是什么,可以假定您不需要它。

确保安装了正确的Git版本

#安装GitSudo apt-get install -y git-core#确保Git是2.9.5或更高版本git -版本

系统打包的Git太旧了吗?删除它并从源代码编译。

#删除打包的GitSudo apt-get remove git-core#安装依赖项Sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential#从源代码下载和编译cd / tmpCurl——remote-name——progress https://www.kernel.org/pub/software/scm/git/git-2.16.3.tar.gzEcho 'dda229e9c73f4fbb7d4324e0d993e11311673df03f73b194c554c2e9451e17cd git-2.16.3.tar.gz' | shasum -a256 -c - && tar -xzf git-2.16.3.tar.gzcd git-2.16.3 /. / configureMake prefix=/usr/local all#安装到/usr/local/binSudo make prefix=/usr/local install#在编辑config/gitlab时。yml(步骤5),将git -> bin_path修改为/usr/local/bin/git

注意:为了接收邮件通知,请确保安装了邮件服务器。默认情况下,Debian附带exim4有问题而Ubuntu没有附带。推荐的邮件服务器是postfix,您可以安装它:

Sudo apt-get install -y postfix

然后选择“Internet Site”并按enter确认主机名。

2.鲁比(人名)

运行GitLab需要Ruby解释器。

注意:当前支持的Ruby (MRI)版本是2.3.0 x。GitLab 9.0放弃了对Ruby 2.1.x的支持。

Ruby版本管理器的使用,例如数位视讯rbenvchruby在生产环境中使用GitLab,通常会导致难以诊断问题。例如,从OpenSSH调用GitLab Shell,拥有版本管理器可以防止推入和拉出SSH。版本管理器不受支持,我们强烈建议每个人遵循下面的说明来使用系统Ruby。

Linux发行版通常有旧版本的Ruby可用,因此这些说明旨在从官方源代码安装Ruby。

如果存在,删除旧的Ruby 1.8:

Sudo apt-get删除ruby1.8

下载Ruby并编译:

Mkdir /tmp/ruby && CD /tmp/rubyCurl——remote-name——progress https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gzEcho '540996fec64984ab6099e34d2f5820b14904f15a ruby-2.3.7.tar.gz' | shasum -c - && tar XZF ruby-2.3.7.tar.gzcd ruby-2.3.7. / configure——disable-install-rdoc使Sudo make install

然后安装Bundler Gem:

Sudo gem安装bundle -no-ri -no-rdoc

3.去

自从GitLab 8.0以来,GitLab有几个用Go编写的守护进程。要安装GitLab,我们需要一个Go编译器。下面的说明假设您使用64位Linux。您可以在网站上找到其他平台的下载去下载页面

#删除前Go安装文件夹Sudo rm -rf /usr/local/goCurl——remote-name——progress https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gzEcho '1862f4c3d3907e59b04a757cfda0ea7aa9ef39274af99a784f5be843c80c6772 go1.8.3.linux-amd64.tar.gz' | shasum -a256 -c - && \sudo tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gzSudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/rm go1.8.3.linux-amd64.tar.gz

4.节点

从GitLab 8.17开始,GitLab要求使用Node来编译javascript资产,使用Yarn来管理javascript依赖项。目前这些的最低要求是节点>= v6.0.0和纱线>= v1.2.0。在许多发行版中,官方软件包库提供的版本已经过时,因此我们需要通过以下命令进行安装:

#安装节点v8.xCurl—location https://deb.nodesource.com/setup_8.x | sudo bash -Sudo apt-get install -y nodejsCurl——silent——show-error https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -回显"deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.listSudo apt-get update须藤apt-get安装纱线

访问官方网站节点而且如果你在这些步骤上有任何困难。

5.系统用户

创建一个gitGitLab用户:

sudo adduser—disabled-login—gecos 'GitLab' git

6.数据库

我们建议使用PostgreSQL数据库。对于MySQL,请检查MySQL安装指南

请注意:因为我们需要使用扩展和并发索引删除,你至少需要PostgreSQL 9.2。

  1. 安装数据库包:

    sudoapt-get安装可能是Postgresql Postgresql -client libpq-dev Postgresql -contrib
  2. 为GitLab创建一个数据库用户:

    sudo- upostgres psql- dtemplate1- c创建用户git CREATEDB;"
  3. 创建pg_trgm扩展(GitLab 8.6+所需):

    sudo- upostgres psql- dtemplate1- c"创建扩展如果不存在pg_trgm;"
  4. 创建GitLab生产数据库,并授予数据库的所有权限:

    sudo- upostgres psql- dtemplate1- c创建数据库gitlabhq_production OWNER git;
  5. 尝试用新用户连接到新数据库:

    sudo- ugit- hpsql- dgitlabhq_production
  6. 检查是否pg_trgm扩展已启用:

    选择真正的为启用从pg_available_extensions地方的名字“pg_trgm”AND installed_version不是NULL

    如果扩展被启用,这将产生以下输出:

    启用---------t(1行)
  7. 退出数据库会话:

    gitlabhq_production >\问

7.复述,

GitLab至少需要Redis 2.8。

如果你使用的是Debian 8或Ubuntu 14.04及以上版本,那么你可以简单地安装Redis 2.8:

sudoapt-get安装redis-server

如果您使用的是Debian 7或Ubuntu 12.04,请遵循上的特殊文档一个备用的Redis安装.完成后,按照指南的其余部分进行操作。

#配置redis使用socketSudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig#通过设置'port'为0禁用Redis对TCP的监听Sed 's/^port .*/port 0/' /etc/redis/redis.conf. s/^port .*/port 0/'输入| sudo tee /etc/redis/redis.conf#启用Debian / Ubuntu默认路径下的Redis socketEcho 'unixsocket /var/run/redis/redis。Sock ' | sudo tee -a /etc/redis/redis.conf#为redis组的所有成员授予套接字权限Echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf创建包含套接字的目录mkdir /var/run/redisChown redis:redis /var/run/redisChmod 755 /var/run/redis如果适用,保存包含套接字的目录如果[-d /etc/tmpfiles.d];然后回显'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf . afi#激活redis.conf的更改Sudo服务redis-server重启#添加git到redis组sudo usermod -aG redis git

8.GitLab

#我们将安装GitLab到用户“git”的主目录cd /home/git

克隆源代码

#克隆GitLab存储库sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 10-8-stable gitlab

注意:你可以改变10-8-stable如果你想要出血边缘版本,但永远不要在生产服务器上安装master !

配置它

#进入GitLab安装文件夹cd /home/git/gitlab复制GitLab配置示例sudo -u git -H cp config/gitlab.yml。示例配置/ gitlab.yml#更新GitLab配置文件,按照文件顶部的说明sudo -u git -H editor config/gitlab.yml#复制示例secrets文件sudo -u git -H cp config/secrets.yml。示例配置/ secrets.ymlsudo -u git -H chmod 0600 config/secrets.yml#确保GitLab可以写入log/和tmp/目录sudo chown -R git log/sudo chown -R git tmp/sudo chmod -R u+rwX,go-w log/sudo chmod -R u+rwX tmp/#确保GitLab可以写入tmp/pid /和tmp/sockets/目录sudo chmod -R u+rwX tmp/pid /sudo chmod -R u+rwX tmp/sockets/创建public/uploads/目录sudo -u git -H mkdir public/uploads/#确保只有GitLab用户可以访问public/uploads/目录#现在公共/上传的文件是由gitlab-workhorse提供的Sudo chmod 0700 public/uploads#修改CI作业跟踪记录所在目录的权限sudo chmod -R u+rwX构建/#修改CI构件存放目录的权限sudo chmod -R u+rwX shared/artifacts/#修改GitLab页面所在目录的权限sudo chmod -R ug+rwX shared/pages/#复制Unicorn配置的示例sudo -u git -H cp config/unicorn.rb。示例配置/ unicorn.rb#查找核数nproc如果你希望有一个高负载的实例,启用集群模式#设置worker的数量至少为内核的数量对于2GB内存的服务器,更改工人数量为3个sudo -u git -H editor config/unicorn.rb复制示例机架攻击配置sudo -u git -H cp config/initializers/rack_attack.rb。配置初始化/ rack_attack.rb示例#为Git用户配置Git全局设置web编辑器需要# ' selflf 'sudo -u git -H git config——global core。autocrlf输入#禁用'git gc——auto',因为GitLab已经在需要时运行'git gc'sudo -u git -H git config——全局gc。汽车0#启用packfile位图sudo -u git -H git config——全局重新打包。writeBitmaps真实#启用推送选项sudo -u git -H git config——全局接收。advertisePushOptions真实#配置Redis连接设置sudo -u git -H cp config/resque.yml。示例配置/ resque.yml#如果您没有使用默认的Debian / Ubuntu配置,请更改Redis套接字路径sudo -u git -H editor config/resque.yml

重要提示:确保两者都要编辑gitlab.yml而且unicorn.rb以匹配您的设置。

注意:如果要使用HTTPS,请参见使用HTTPS对于其他步骤。

配置GitLab数据库设置

仅限PostgreSQL:Sudo -u git cp config/database.yml。postgresql配置/形式仅限MySQL:Sudo -u git cp config/database.yml。mysql配置/形式# MySQL和远程PostgreSQL:#更新config/database.yml中的用户名/密码。#您只需要调整生产设置(第一部分)。如果你遵循了数据库指南,请按以下步骤操作:#用你给$password的值更改“安全密码”您可以在密码周围保留双引号sudo -u git -H editor config/database.yml# PostgreSQL和MySQL:#创建config/databaseYml只对git可读sudo -u git -H chmod o-rwx config/database.yml

安装的宝石

注意:从捆绑器1.5.2开始,您可以调用bundle install -jN(N你的处理器内核的数量),并享受并行宝石安装与可测量的差异完成时间(~60%快)。检查核数nproc.要了解更多信息,请查看这个帖子.首先确保您有绑定器>= 1.5.2(运行bundle - v),因为它解决了一些问题问题这是固定1.5.2。

#对于PostgreSQL(注意,该选项表示“without…”mysql”)sudo -u git -H bundle安装——部署——没有开发测试mysql aws kerberos#或者如果你使用MySQL(注意,选项说“without…”postgres”)sudo -u git -H bundle安装——部署——没有开发测试postgres aws kerberos

注意:如果希望使用Kerberos进行用户身份验证,请省略kerberos——不上面的选项。

安装GitLab Shell

GitLab Shell是专为GitLab开发的SSH访问和存储库管理软件。

#运行gitlab-shell的安装任务(如果需要替换' REDIS_URL '):sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis. sudo: u git -H bundle exec rake袜子RAILS_ENV=生产SKIP_STORAGE_VALIDATION=true默认情况下,GitLab -shell配置是由你的GitLab主配置生成的。#你可以检查(和修改)gitlab-shell配置如下:sudo -u git -H编辑器/home/git/gitlab-shell/config.yml

注意:如果要使用HTTPS,请参见使用HTTPS对于其他步骤。

注意:确保您的主机名可以通过正确的DNS记录或/etc/hosts中的额外行("127.0.0.1 hostname")在机器本身上进行解析。这可能是必要的,例如,如果您在反向代理后面设置GitLab。如果主机名无法解析,最终安装检查将失败,提示“check GitLab API access: FAILED”。代码:401”和推送提交将被拒绝“[remote rejected] master -> master (hook declined)”。

注意:通过禁用RubyGems可以大大减少GitLab Shell应用程序的启动时间。这可以通过几种方式来实现:

安装gitlab-workhorse

GitLab-Workhorse使用GNU使.下面的命令行将安装GitLab-Workhorse/home/git/gitlab-workhorse这是推荐的位置。

sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production

你可以通过提供一个额外的参数来指定不同的Git存储库:

sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse,https://example.com/gitlab-workhorse.git]" RAILS_ENV=production

初始化数据库并激活高级功能

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production#键入'yes'以创建数据库表。#当完成时,你会看到“管理员帐户已创建:”

注意:您可以通过在环境变量中提供它们来设置管理员/root密码和电子邮件,GITLAB_ROOT_PASSWORD而且GITLAB_ROOT_EMAIL分别,如下所示。如果您没有设置密码(它被设置为默认密码),请等待将GitLab暴露给公共互联网,直到安装完成并第一次登录到服务器。在第一次登录时,您将被迫更改默认密码。

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=你的密码GITLAB_ROOT_EMAIL=你的邮箱

安全secrets.yml

secrets.yml文件存储会话的加密密钥和安全变量。备份secrets.yml安全的地方,但不要将其存储在与数据库备份相同的地方。否则,如果您的备份之一被泄露,您的秘密就会暴露。

安装初始化脚本

下载初始化脚本(将/etc/init.d/gitlab):

Sudo cp lib/support/init。d / gitlab /etc/init.d/gitlab

如果你使用非默认文件夹或用户安装,复制并编辑默认文件:

Sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab . exe

如果您将GitLab安装在其他目录下,或者以非默认用户的身份安装,则应该更改这些设置/etc/default/gitlab.不要编辑/etc/init.d/gitlab因为它将在升级时更改。

让GitLab在boot时启动:

sudo update-rc。D gitlab默认值为21

安装吉塔

#用Git获取Gitaly源代码,然后用Go编译sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly]" RAILS_ENV=production

你可以通过提供一个额外的参数来指定不同的Git存储库:

sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,https://example.com/gitaly.git]" RAILS_ENV=production

接下来,确保配置gitaly:

#限制Gitaly socket访问Sudo chmod 0700 /home/git/gitlab/tmp/sockets/privateSudo chown git /home/git/gitlab/tmp/sockets/private如果你使用非默认设置,你需要更新config.tomlcd /home/git/gitalysudo -u git -H编辑config.toml

有关配置Gitaly的更多信息,请参见doc /政府/吉塔

设置Logrotate

Sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab . xml

查看申请状态

检查GitLab及其环境是否配置正确:

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

编译GetText PO文件

sudo -u git -H bundle exec rake gettext:compile RAILS_ENV=production

编制资产

sudo -u git -H yarn install——production——pure-lockfilesudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production

启动你的GitLab实例

Sudo服务gitlab启动#或sudo /etc/init.d / gitlab重启

9.Nginx

注意:Nginx是GitLab官方支持的web服务器。如果你不能或不想使用Nginx作为你的web服务器,看看GitLab食谱

安装

Sudo apt-get install -y nginx

网站配置

复制示例站点配置:

Sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab . shSudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

请确保编辑配置文件以匹配您的设置。另外,确保你的路径与GitLab匹配,特别是为'git'用户以外的用户安装时:

#将YOUR_SERVER_FQDN更改为完全限定# GitLab主机的域名。#记住匹配你的路径到GitLab,特别是#如果是为'git'以外的用户安装。#如果使用Ubuntu默认的nginx安装:#从监听行中删除default_server否则sudo rm -f /etc/nginx/sites-enabled/defaultSudo编辑器/etc/nginx/sites-available/gitlab

如果你打算启用GitLab页面,你需要使用一个单独的Nginx配置。阅读所需配置的所有信息GitLab Pages管理指南

注意:如果要使用HTTPS,请替换gitlabNginx配置gitlab-ssl.看到使用HTTPS查看HTTPS配置的详细信息。

测试配置

验证您的gitlabgitlab-ssl在Nginx配置文件中输入以下命令:

Sudo nginx -t

你应该收到语法没问题而且测试成功消息。如果收到错误,请检查您的gitlabgitlab-sslNginx配置文件的输入错误等,如给出的错误信息所示。

重新启动

Sudo服务nginx重启

完成了!

再次检查申请状态

为了确保你没有漏掉任何东西,用以下方法进行更彻底的检查:

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

如果所有项目都是绿色的,那么恭喜你成功安装了GitLab!

注意:供应SANITIZE = true环境变量为gitlab:检查要从check命令的输出中省略项目名称。

初始登录

第一次登录GitLab时,请在web浏览器中访问YOUR_SERVER。

如果你没有在安装过程中提供根密码,您将被重定向到密码重置屏幕,以提供初始管理员帐户的密码。输入所需的密码,您将被重定向回登录屏幕。

默认帐号为.提供您之前创建的密码并登录。登录后,如果您愿意,您可以更改用户名。

享受吧!

你可以使用Sudo服务gitlab启动而且Sudo服务gitlab停止启动和停止GitLab。

高级设置技巧

相对URL支持

看到相关URL文档有关如何使用相对URL配置GitLab的更多信息。

使用HTTPS

通过HTTPS使用GitLab:

  1. gitlab.yml
    1. 设置港口第1节中的选项443
    2. 设置https第1节中的选项真正的
  2. config.ymlgitlab-shell:
    1. gitlab_url选项到GitLab的HTTPS端点(例如。https://git.example.com).
    2. 方法设置证书ca_fileca_path选择。
  3. 使用gitlab-sslNginx示例配置而不是gitlab配置。
    1. 更新YOUR_SERVER_FQDN
    2. 更新ssl_certificate而且ssl_certificate_key
    3. 检查配置文件并考虑应用其他安全和性能增强特性。

不鼓励使用自签名证书,但如果你必须按照正常的说明使用它,那么:

  1. 生成自签名SSL证书:

    Mkdir -p /etc/nginx/ssl/cd /etc/nginx/ssl/Sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out gitlab。CRT -keyout gitlab.keySudo chmod o-r gitlab.key
  2. config.ymlgitlab-shell集合self_signed_cert真正的

启用邮件回复

看到“通过电子邮件回复”文档有关如何设置的更多信息。

LDAP身份验证

中配置LDAP认证配置/ gitlab.yml.编辑此文件后请重新启动GitLab。

使用自定义Omniauth提供者

看到Omniauth集成文档

构建您的项目

GitLab可以为您构建项目。要启用该特性,您需要GitLab runner为您完成该工作。检出的GitLab Runner部分安装它

添加受信任代理

如果在单独的计算机上使用反向代理,则可能希望将代理添加到可信代理列表。否则用户将显示从代理的IP地址登录。

您可以在中添加可信代理配置/ gitlab.yml通过定制trusted_proxies第1节中的选项。保存文件并重新配置GitLab以便更改生效。

自定义Redis连接

如果你想在非标准端口或不同的主机上连接到Redis服务器,你可以通过配置/ resque.yml文件。

#例子生产:url:复述:/ / redis.example.tld: 6379

如果你想通过套接字连接Redis服务器,那么使用"unix:" URL方案和Redis套接字文件的路径配置/ resque.yml文件。

#例子生产:url: unix: /道路/ /复述/套接字

中的环境变量也可以使用配置/ resque.yml文件:

#例子生产:url: <%= ENV.fetch('GITLAB_REDIS_URL') %>

自定义SSH连接

如果在非标准端口上运行SSH,则必须更改GitLab用户的SSH配置。

#添加到/home/git/.ssh/config给你的设置一个名字(这里:override localhost)#你的远程git用户port 2222 #您的端口号主机127.0.0.1;#您的服务器名称或IP

您还需要更改相应的选项(例如。ssh_userssh_hostadmin_uri)在配置\ gitlab.yml文件。

其他标记样式

除了一直支持的markdown样式外,GitLab还可以显示其他富文本文件。但是您可能必须安装一个依赖项才能这样做。请参阅Github-markup gem readme获取更多信息。

故障排除

“您似乎克隆了一个空存储库。”

如果你在试图克隆一个由GitLab托管的存储库时看到这条消息,这可能是由于过时的Nginx或Apache配置,或者缺少或错误配置的GitLab主力实例。仔细检查一下去安装安装gitlab-workhorse,正确配置Nginx

google-protobuf "LoadError: /lib/x86_64-linux-gnu/libc.so。6:版本' GLIBC_2.14'未找到"

对于google-protobuf gem的某些版本,这可能发生在某些平台上。变通办法是安装此gem的源代码版本

Baidu
map