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


    前言

    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)"

    image-20230209101341084

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

    image-20230209102045211

    image-20230209102929371

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

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

     
    
    1. ~:~$brew -v
    2. 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. 常用命令
    1. /// 安装
    2. brew install FORMULA|CASK...
    3. /// 搜索
    4. brew search TEXT|/REGEX/
    5. /// 卸载包
    6. brew uninstall FORMULA|CASK...
    7. /// 查看安装列表
    8. brew list [FORMULA|CASK...]
    9. /// 查看包信息
    10. brew info [FORMULA|CASK...]
    11. /// 查看哪些包可以更新
    12. brew outdated
    13. /// 更新指定包(安装新包,但旧包依旧保留)
    14. brew upgrade [FORMULA|CASK...]
    15. /// 更新Homebrew
    16. brew update
    17. /// 清理旧版本和缓存
    18. brew cleanup # 清理所有包的旧版本
    19. brew cleanup [FORMULA ...] # 清理指定包的旧版本
    20. brew cleanup -n # 查看可清理的旧版本包,不执行实际操作
    21. /// 锁定不想更新的包(因为update会一次更新所有的包的,当我们想忽略的时候可以使用这个命令)
    22. brew pin [FORMULA ...] # 锁定某个包
    23. brew unpin [FORMULA ...] # 取消锁定
    24. /// 软件服务管理
    25. brew services list # 查看使用brew安装的服务列表
    26. brew services run formula|--all # 启动服务(仅启动不注册)
    27. brew services start formula|--all # 启动服务,并注册
    28. brew services stop formula|--all # 停止服务,并取消注册
    29. brew services restart formula|--all # 重启服务,并注册
    二、Ruby
    1. 安装

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

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

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

    brew install ruby

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

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

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

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

    1. # 环境变量配置
    2. export RUBY=/usr/local/Cellar/ruby/3.2.0/bin
    3. export GEMS=/usr/local/lib/ruby/gems/3.2.0/bin
    4. # 写入环境变量
    5. export PATH=$RUBY:$GEMS:$PATH

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

    再次查看ruby版本:

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

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

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

    1. ~:~$which ruby
    2. /usr/local/Cellar/ruby/3.2.0/bin/ruby

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

    2. Gem换源

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

    1. /// 添加国内源并删除官方源
    2. gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
    3. /// 查看当前源地址
    4. gem sources -l

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

    1. ~:~$gem sources -l
    2. *** CURRENT SOURCES ***
    3. https://gems.ruby-china.com/

    3. 常用包安装
    1. /// cocoapods安装
    2. gem install cocoapods
    3. /// fastlane安装
    4. gem install fastlane

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

    1. ~:~$pod --version
    2. 1.11.3
    3. ~:~$fastlane --version
    4. fastlane installation at path:
    5. /usr/local/lib/ruby/gems/3.2.0/gems/fastlane-2.211.0/bin/fastlane
    6. -----------------------------
    7. [✔] 🚀
    8. fastlane 2.211.0

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

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

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

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

    1. # 环境变量配置
    2. export PYTHON=/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/Python3/bin
    3. # 写入环境变量
    4. export PATH=$PYTHON:$PATH
    5. # 别名
    6. alias python=python3
    7. alias pip=pip3

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

    1. ~:~$python --version
    2. Python 3.8.9
    2. 使用Homebrew安装

    这里我们直接执行:

    brew install python

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

    1. # 环境变量配置
    2. export SBIN=/usr/local/bin:/usr/local/sbin
    3. # 写入环境变量
    4. export PATH=$SBIN:$PATH
    5. # 别名
    6. alias python=python3
    7. alias pip=pip3

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

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

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

    1. /// 查看当前源
    2. pip config list
    3. /// 替换为清华大学源
    4. pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    5. /// 还原为默认源
    6. pip config unset global.index-url
    • 常用的国内镜像源

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

    安装速度非常快:

     
    
    1. ~:~$pip install openpyxl
    2. Collecting openpyxl
    3. Using cached openpyxl-3.1.0-py2.py3-none-any.whl (250 kB)
    4. Requirement already satisfied: et-xmlfile in /usr/local/lib/python3.10/site-packages (from openpyxl) (1.1.0)
    5. Installing collected packages: openpyxl
    6. 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关键字。这里我们可以在终端输出一下这个变量:

     
    
    1. ~:~$echo $RUBY
    2. /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这样的报错,比如:

     
    
    1. ~:~$hi
    2. zsh: command not found: hi

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

     
    
    1. # 环境变量配置
    2. export SBIN=/usr/local/bin:/usr/local/sbin
    3. export HOMEBREW=/usr/local/Homebrew/bin
    4. export RUBY=/usr/local/Cellar/ruby/3.2.0/bin
    5. export GEMS=/usr/local/lib/ruby/gems/3.2.0/bin
    6. # 写入环境变量
    7. export PATH=$SBIN:$HOMEBREW:$RUBY:$GEMS:$PATH

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

    • 附.zshrc常见配置

       
      1. # 环境变量配置
      2. export SBIN=/usr/local/bin:/usr/local/sbin
      3. export HOMEBREW=/usr/local/Homebrew/bin
      4. export RUBY=/usr/local/Cellar/ruby/3.2.0/bin
      5. export GEMS=/usr/local/lib/ruby/gems/3.2.0/bin
      6. # 写入环境变量
      7. export PATH=$SBIN:$HOMEBREW:$RUBY:$GEMS:$PATH
      8. # 别名
      9. alias python=python3
      10. alias pip=pip3
      11. # 编码
      12. export LC_ALL=en_US.UTF-8
      13. export LANG=en_US.UTF-8
      14. # 控制PS1信息
      15. PROMPT='%U%F{51}%1~%f%u:~$'
      16. # 镜像源
      17. export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
    五、参考文档
  • 相关阅读:
    北京化工大学数据结构2022/10/27作业 题解
    手机玻璃盖板为什么需要透光率检测
    C Primer Plus(6) 中文版 第12章 存储类别、链接和内存管理 12.3 掷骰子
    基于 Vite + Vue3 的组件库打包并发布到npm
    居舍杂志居舍杂志社居舍编辑部2022年第27期目录
    基于python的毕业设计本地健康宝微信小程序
    FANUC机器人_KAREL编程入门学习(1)
    ssm+vue的个人时间管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
    看卡塔尔世界杯,diff一下足球比赛与软件开发
    某城商行两地三中心建设存储架构规划及方案验证实践
  • 原文地址:https://blog.csdn.net/m0_61164038/article/details/143321450