前语

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

一、Homebrew

作为Mac上最常用的包办理器,Homebrew能够称为神器,用它来办理Mac上的依靠环境便捷又省心。

1. 装置

这儿咱们直接在终端履行国人写的一键装置脚本,换源(官方源的速度你懂的)啥的都直接组织上了。

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

Mac开发环境配置看这一篇就够了

这儿咱们选择1、中科大下载源就好了,按照提示输入并耐性等候装置完成。

Mac开发环境配置看这一篇就够了

Mac开发环境配置看这一篇就够了

最终一步重载装备文件咱们履行source ~/.zshrc,重载用户目录下的.zshrc

到这儿咱们能够履行brew -v测验一下Homebrew的装置结果:

~:~$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. 卸载

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

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"
3. 常用指令
/// 装置
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检查版别号。

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

本地ruby版别有点低了,这儿咱们运用Homebrew来更新,

brew install ruby

履行结束后默许会将最新版别的ruby装置到/usr/local/Cellar/目录下。

咱们检查一下当时的ruby版别:

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

如同版别并未发生变化,why? 这儿首要是由于Shell环境中并没有读到最新的ruby途径,咱们能够再修改一下用户目录下的环境装备文件~/.zshrc,新增ruby的途径并写入环境变量:

# 环境变量装备
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版别:

~:~$ruby -v
ruby 3.2.0 (2022-12-25 revision a528908271) [x86_64-darwin20]

此时能够看到ruby现已升级到最新的3.2.0版别。

当然咱们还能够履行which ruby检查当时的ruby的详细途径:

~:~$which ruby
/usr/local/Cellar/ruby/3.2.0/bin/ruby

从结果能够看出当时运用的ruby正是咱们在.zshrc中装备的途径。

2. Gem换源

Gemruby的包办理器,一些ruby库咱们需求运用Gem来装置,但Gem官方源速度拉胯,这儿咱们需求替换为国内源。

/// 增加国内源并删去官方源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
/// 检查当时源地址
gem sources -l

检查当时源,确认已替换为国内源即可。

~:~$gem sources -l
*** CURRENT SOURCES ***
https://gems.ruby-china.com/
3. 常用包装置
/// cocoapods装置
gem install cocoapods
/// fastlane装置
gem install fastlane

耐性等候装置完成后咱们能够测验一下:

~:~$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重载装备:

# 环境变量装备
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, 检查一下版别,结果也符合预期。

~:~$python --version
Python 3.8.9
2. 运用Homebrew装置

这儿咱们直接履行:

brew install python

耐性等候装置完成,其实Homebrew会将Python装置到/usr/local/Cellar/目录下,并在/usr/local/bin目录创建了链接文件。这儿咱们需求在~/.zshrc中增加相关装备并履行source ~/.zshrc重载装备:

# 环境变量装备
export SBIN=/usr/local/bin:/usr/local/sbin

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

# 别号
alias python=python3
alias pip=pip3

检查一下版别,现已升级到最新版:

~:~$python --version
Python 3.10.10
3. pip换源

pippython的包办理器,咱们能够运用它来装置一些python库。咱们能够替换一个国内源来提高下载速度:

/// 检查当时源
pip config list
/// 替换为清华大学源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
/// 还原为默许源
pip config unset global.index-url
  • 常用的国内镜像

    阿里云 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. 常用包装置
/// openpyxl装置
pip install openpyxl

装置速度非常快:

~:~$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. 界说环境变量(大局变量)
export RUBY=/usr/local/Cellar/ruby/3.2.0/bin

其实咱们之前在讲Ruby的装置时现已在~/.zshrc文件中界说过大局变量,语法就是在一个变量名前面加上export关键字。这儿咱们能够在终端输出一下这个变量:

~:~$echo $RUBY
/usr/local/Cellar/ruby/3.2.0/bin

变量的值能够正常输出,这也意味着这样的变量在当时shell程序中大局可读。

3. 写入环境变量

常见的环境变量:

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

这儿重点关注一下PATH变量,当咱们在shell指令行界面中输入一个外部指令时,shell必须查找体系来找到对应的程序。PATH环境变量界说了用于进行指令和程序查找的目录:

echo $PATH

某些时分咱们履行指令会遇到command not found这样的报错,比方:

~:~$hi
zsh: command not found: hi

这是由于PATH中的目录并没有包含hi指令,所以咱们履行hi就报错。同理,当咱们在装备环境时,某些库的目录需求被写入到PATH中,比方:

# 环境变量装备
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常见装备

    # 环境变量装备
    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
    

五、参考文档

  • Homebrew 常用指令
  • Python pip 国内换源的几个办法