Mac开发环境配置- Shell/Homebrew/ruby

前言

macOS Catalina 开始,Mac 使用 zsh 作为默认登录 Shell 和交互式 Shell。当然你也可以修改默认Shell,但一般没这个必要。而实际开发中经常会遇到一些环境问题导致的报错,下面我们就讲一下一些常用库的环境配置以及原理。

一、Homebrew

作为Mac上最常用的包管理器,Homebrew可以称为神器,用它来管理Mac上的依赖环境便捷又省心。

1. 安装

这里我们直接在终端执行国人写的一键安装脚本,换源(官方源的速度你懂的)啥的都直接安排上了。

复制代码
bash 复制代码
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

这里我们选择1、中科大下载源就好了,按照提示输入并耐心等待安装完成。

最后一步重载配置文件我们执行source ~/.zshrc,重载用户目录下的.zshrc

到这里我们可以执行brew -v测试一下Homebrew的安装结果:

复制代码
bash 复制代码
~:~$brew -v 
Homebrew 3.6.21-26-gb0a74e5 Homebrew/homebrew-core (git revision 4fbf6930104; last commit 2023-02-08) Homebrew/homebrew-cask (git revision cbce859534; last commit 2023-02-09)

有版本号输出说明已经安装完成了。

2. 卸载

直接在终端执行一键脚本即可

bash 复制代码
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
3. 常用命令
bash 复制代码
/// 安装
brew install FORMULA|CASK...

/// 搜索
brew search TEXT|/REGEX/

/// 卸载包
brew uninstall FORMULA|CASK...

/// 查看安装列表
brew list [FORMULA|CASK...]

/// 查看包信息
brew info [FORMULA|CASK...]

/// 查看哪些包可以更新
brew outdated 

/// 更新指定包(安装新包,但旧包依旧保留)
brew upgrade [FORMULA|CASK...]

/// 更新Homebrew
brew update                  

/// 清理旧版本和缓存
brew cleanup       					# 清理所有包的旧版本
brew cleanup [FORMULA ...]  # 清理指定包的旧版本
brew cleanup -n             # 查看可清理的旧版本包,不执行实际操作

/// 锁定不想更新的包(因为update会一次更新所有的包的,当我们想忽略的时候可以使用这个命令)
brew pin [FORMULA ...]      # 锁定某个包
brew unpin [FORMULA ...]    # 取消锁定

/// 软件服务管理
brew services list  								# 查看使用brew安装的服务列表
brew services run formula|--all  		# 启动服务(仅启动不注册)
brew services start formula|--all  	# 启动服务,并注册
brew services stop formula|--all   	# 停止服务,并取消注册
brew services restart formula|--all # 重启服务,并注册
二、Ruby
1. 安装

其实Mac 系统默认已经有Ruby的环境了,在终端中执行ruby -v查看版本号。

bash 复制代码
~:~$ruby -v ruby 

2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]

本地ruby版本有点低了,这里我们使用Homebrew来更新,

bash 复制代码
brew install ruby

执行结束后默认会将最新版本的ruby安装到/usr/local/Cellar/目录下。

我们查看一下当前的ruby版本:

bash 复制代码
~:~$ruby -v ruby 
2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]

好像版本并未发生变化,why? 这里主要是因为Shell 环境中并没有读到最新的ruby路径,我们可以再编辑一下用户目录下的环境配置文件~/.zshrc,新增ruby的路径并写入环境变量:

bash 复制代码
# 环境变量配置
export RUBY=/usr/local/Cellar/ruby/3.2.0/bin
export GEMS=/usr/local/lib/ruby/gems/3.2.0/bin

# 写入环境变量
export PATH=$RUBY:$GEMS:$PATH

这里先添加上面的内容然后执行source ~/.zshrc,后面会讲到Shell环境配置相关的内容。

再次查看ruby版本:

bash 复制代码
~:~$ruby -v
ruby 3.2.0 (2022-12-25 revision a528908271) [x86_64-darwin20]

此时可以看到ruby已经升级到最新的3.2.0版本。

当然我们还可以执行which ruby查看当前的ruby的具体路径:

bash 复制代码
~:~$which ruby
/usr/local/Cellar/ruby/3.2.0/bin/ruby

从结果可以看出当前使用的ruby正是我们在.zshrc中配置的路径。

2. Gem换源

Gemruby的包管理器,一些ruby库我们需要使用Gem来安装,但Gem官方源速度拉胯,这里我们需要替换为国内源。

bash 复制代码
/// 添加国内源并删除官方源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

/// 查看当前源地址
gem sources -l

查看当前源,确认已替换为国内源即可。

bash 复制代码
~:~$gem sources -l
*** CURRENT SOURCES ***

https://gems.ruby-china.com/
3. 常用包安装
bash 复制代码
/// cocoapods安装
gem install cocoapods

/// fastlane安装
gem install fastlane

耐心等待安装完成后我们可以测试一下:

bash 复制代码
~:~$pod --version
1.11.3

~:~$fastlane --version
fastlane installation at path:
/usr/local/lib/ruby/gems/3.2.0/gems/fastlane-2.211.0/bin/fastlane
-----------------------------
[✔] 🚀
fastlane 2.211.0

从结果可以看出cocoapodsfastlane都安装完成了。

三、Python
1. 使用Xcode自带Python库(推荐)

其实Xcode 命令行工具自带了python库,项目中需要执行python脚本的优先使用这个会更合适,因为Xcode 编译项目时会优先使用这个python库,Mac 中仅使用这一个版本可以避免一些多python版本环境问题导致的报错。

根据当前Xcode 命令行工具中的python版本,这里我们需要在~/.zshrc中添加相关配置并执行source ~/.zshrc重载配置:

bash 复制代码
# 环境变量配置
export PYTHON=/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/Python3/bin

# 写入环境变量
export PATH=$PYTHON:$PATH

# 别名
alias python=python3
alias pip=pip3

这里使用别名以便于执行python命令时使用的是python3, 查看一下版本,结果也符合预期。

bash 复制代码
~:~$python --version
Python 3.8.9
2. 使用Homebrew安装

这里我们直接执行:

bash 复制代码
brew install python

耐心等待安装完成,其实Homebrew 会将Python安装到/usr/local/Cellar/目录下,并在/usr/local/bin目录创建了链接文件。这里我们需要在~/.zshrc中添加相关配置并执行source ~/.zshrc重载配置:

bash 复制代码
# 环境变量配置
export SBIN=/usr/local/bin:/usr/local/sbin

# 写入环境变量
export PATH=$SBIN:$PATH

# 别名
alias python=python3
alias pip=pip3

查看一下版本,已经升级到最新版:

bash 复制代码
~:~$python --version
Python 3.10.10
3. pip换源

pippython的包管理器,我们可以使用它来安装一些python库。我们可以更换一个国内源来提升下载速度:

bash 复制代码
/// 查看当前源
pip config list

/// 替换为清华大学源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

/// 还原为默认源
pip config unset global.index-url
  • 常用的国内镜像源

    复制代码
    bash 复制代码
    阿里云 http://mirrors.aliyun.com/pypi/simple
    豆瓣http://pypi.douban.com/simple
    清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
    中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple
    华中科技大学 http://pypi.hustunique.com
    中科大 https://pypi.mirrors.ustc.edu.cn/simple
4. 常用包安装
复制代码
bash 复制代码
/// openpyxl安装
pip install openpyxl

安装速度非常快:

复制代码
bash 复制代码
~:~$pip install openpyxl
Collecting openpyxl
  Using cached openpyxl-3.1.0-py2.py3-none-any.whl (250 kB)
Requirement already satisfied: et-xmlfile in /usr/local/lib/python3.10/site-packages (from openpyxl) (1.1.0)
Installing collected packages: openpyxl
Successfully installed openpyxl-3.1.0
四、Shell环境配置
1. zsh的配置文件.zshrc

macOS Catalina 开始,Mac 使用 zsh 作为默认shell,而它的配置文件是用户目录下的.zshrc文件,所以我们之前在定义环境变量时都会编辑这个文件。每次打开终端时都会读取这个配置文件,如果需要在当前的shell窗口读取最新的环境配置则需要执行source ~/.zshrc,这也是之前我们编辑该文件后重载配置的原因(为了让最新的配置生效😁)。

2. 定义环境变量(全局变量)
复制代码
bash 复制代码
export RUBY=/usr/local/Cellar/ruby/3.2.0/bin

其实我们之前在讲Ruby的安装时已经在~/.zshrc文件中定义过全局变量,语法就是在一个变量名前面加上export关键字。这里我们可以在终端输出一下这个变量:

复制代码
bash 复制代码
~:~$echo $RUBY
/usr/local/Cellar/ruby/3.2.0/bin

变量的值可以正常输出,这也意味着这样的变量在当前shell程序中全局可读。

3. 写入环境变量

常见的环境变量:

  • CDPATH:冒号分隔的目录列表,作为cd命令的搜索路径
  • HOME:当前用户的主目录
  • PATHshell查找命令的目录列表,由冒号分隔
  • BASH:当前shell实例的全路径名
  • PWD:当前工作目录

这里重点关注一下PATH变量,当我们在shell命令行界面中输入一个外部命令时,shell必须搜索系统来找到对应的程序。PATH环境变量定义了用于进行命令和程序查找的目录:

复制代码
bash 复制代码
echo $PATH

某些时候我们执行命令会遇到command not found这样的报错,比如:

复制代码
bash 复制代码
~:~$hi
zsh: command not found: hi

这是因为PATH中的目录并没有包含hi命令,所以我们执行hi就报错。同理,当我们在配置环境时,某些库的目录需要被写入到PATH中,比如:

复制代码
bash 复制代码
# 环境变量配置
export SBIN=/usr/local/bin:/usr/local/sbin
export HOMEBREW=/usr/local/Homebrew/bin
export RUBY=/usr/local/Cellar/ruby/3.2.0/bin
export GEMS=/usr/local/lib/ruby/gems/3.2.0/bin

# 写入环境变量
export PATH=$SBIN:$HOMEBREW:$RUBY:$GEMS:$PATH

这样当我们执行具体的命令时,shell才能够正确的访问。

  • 附.zshrc常见配置

    复制代码
    bash 复制代码
    # 环境变量配置
    export SBIN=/usr/local/bin:/usr/local/sbin
    export HOMEBREW=/usr/local/Homebrew/bin
    export RUBY=/usr/local/Cellar/ruby/3.2.0/bin
    export GEMS=/usr/local/lib/ruby/gems/3.2.0/bin
    
    # 写入环境变量
    export PATH=$SBIN:$HOMEBREW:$RUBY:$GEMS:$PATH
    
    # 别名
    alias python=python3
    alias pip=pip3
    
    # 编码
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    
    # 控制PS1信息
    PROMPT='%U%F{51}%1~%f%u:~$'
    
    # 镜像源
    export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
五、参考文档
相关推荐
梦魇梦狸º7 小时前
mac 配置 python 环境变量
chrome·python·macos
DanceDonkey10 小时前
@RabbitListener处理重试机制完成后的异常捕获
开发语言·后端·ruby
丁总学Java12 小时前
macOS如何进入 Application Support 目录(cd: string not in pwd: Application)
macos
qdprobot12 小时前
Mixly米思齐1.0 2.0 3.0 软件windows版本MAC苹果电脑系统安装使用常见问题与解决
windows·macos
麦克Mapp12 小时前
不用安装双系统,如何在mac上玩windows游戏呢?
macos
符小易13 小时前
Mac苹果电脑 怎么用word文档和Excel表格?
macos·word·excel
梦魇梦狸º16 小时前
node安装与管理
macos·node.js
缘友一世1 天前
macOS查看当前项目的 tree 结构
macos
梦魇梦狸º1 天前
mac 安装 python2
python·macos
m0_748236111 天前
CentOS 7 下安装RabbitMQ教程_centos启动rabbitmq
centos·rabbitmq·ruby