Mac关于Ruby安装权限问题汇总

在iOS开发过程中,在使用Pod或者Fastlane 自动化插件配置的时候都要安装ruby环境,由于Mac自带一套ruby环境,所以理论上可以直接拿来进行使用。但是在使用过程中,总会报权限的问题,比如:

Error loading plugin 'fastlane-plugin-fir_cli': 
You don't have write permissions for the /usr/bin directory.

# You don't have write permissions for the /Library/Ruby/Gems/2.3.0 
directory. (mac user)

......

类似的这样的权限问题,弄得一头雾水,所以这里特意理了一下相关的逻辑内容。因为ruby环境系统自带,所以Mac系统为了保证自身环境的问题,对权限进行了限制,最终导致一般用户无法对系统的ruby环境相关的文件读写内容。所以解决点也就在这了。

原理:再次安装一套ruby环境供普通用户使用,系统继续用自己的ruby环境,用户使用自己的一套ruby环境,这样互不干扰

所以大体也就分成三步了:

  1. 安装针对于用户所使用的ruby环境
  2. 导入新的ruby环境的环境变量
  3. 查看是否ruby环境是否安装成功

在进行安装之前,我们通过以下命令进行排查,查看当前的ruby环境是否是用的系统自带的环境

which ruby

如果ruby使用的路径如下,那么此时就是用的系统自带的ruby环境了

/usr/bin

安装ruby环境

推荐使用homebrew安装ruby环境,如果没有安装homebrew`,可以通过以下命令安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

假定已经安装了homebrew环境了,使用以下命令进行ruby的安装

brew install ruby

当ruby安装完成之后,会提醒你将ruby的路径导入到环境变量中,如下提示:

==> Reinstalling ruby
==> Downloading https://homebrew.bintray.com/bottles/ruby-2.7.1_2.catalina.bottle.tar.gz
Already downloaded: /Users/lichenchen/Library/Caches/Homebrew/downloads/1a9255e83b1fb1738532e9156b16bc750b493bbef40486552db5f7fa5b8ff08d--ruby-2.7.1_2.catalina.bottle.tar.gz
==> Pouring ruby-2.7.1_2.catalina.bottle.tar.gz
==> Caveats
By default, binaries installed by gem will be placed into:
  /usr/local/lib/ruby/gems/2.7.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

For compilers to find ruby you may need to set:
  export LDFLAGS="-L/usr/local/opt/ruby/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby/include"

这里,我们按照提示,直接导入到环境变量就好了,执行以下命令:

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"

source ~/.zshrc

最后我们再使用which命令看一下当前的ruby使用的是哪个路径下的ruby

which ruby
#变成如下的路径就替换了我们自己所安装的ruby了
/usr/local/opt/ruby/bin/ruby

至此,系统中就有了两套ruby环境,我们使用的时候用我们自己安装的一套就好了,也就从根本上解决了权限的问题。

你可能感兴趣的:(Mac关于Ruby安装权限问题汇总)