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

news/2024/10/30 9:20:30/
前言

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的安装结果:

 
~:~$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 openpyxlUsing 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 国内换源的几个办法

http://www.ppmy.cn/news/1543061.html

相关文章

【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!

前言 🌟🌟本期讲解关于TCP协议的重要的机制“连接的建立和断开”~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 &#x1…

JavaEE-多线程初阶(1)

目录 1. 线程的概念 1.1 线程是是什么 1.2 为什么要有线程 1.3 线程和进程的区别 1.4 Java的线程和操作系统线程的关系 2. 第一个多线程程序 2.1 Hello Thread 2.2 使用jconsole观察线程 3. 创建线程 3.1 继承Thread类 3.2 实现Runnable接口 1. 线程的概念 1.1 线程…

深度生成模型 - 深度信念网络(DBN)篇

序言 深度信念网络( Deep Belief Networks,DBN \text{Deep Belief Networks,DBN} Deep Belief Networks,DBN)作为深度学习领域的一个重要里程碑,自 2006 2006 2006年由 Geoffrey Hinton \text{Geoffrey Hi…

Java 实现协同过滤算法推荐算法

1. 什么是协同过滤 协同过滤主要分为两种类型: 基于用户的协同过滤:根据用户之间的相似性推荐物品。例如,如果用户A和用户B的评分相似,那么用户A喜欢的物品也可能会被推荐给用户B。 基于物品的协同过滤:根据物品之间…

基于uniapp微信小程序的校园二手书交易系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Flume的安装配置

一、上传解压 tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /usr/local/soft/#***在环境变量中增加如下命令,可以使用 soft 快速切换到 /usr/local/soft***alias softcd /usr/local/soft/ 二、配置环境变量 soft #重命名 mv apache-flume-1.9.0-bin/ flume-1.9.0…

用Python在Excel工作表中添加、修改及删除超链接

在创建Excel工作簿时,内部文档的互链、报告自动化生成或是创建外部资源快速访问路径是比较常见的需求。通过超链接,我们可以将工作表与外部资源、文件或网页无缝连接,提升数据的交互性和可读性。无论是为了快速导航、动态更新内容&#xff0c…

更强的可操作性!Midjourney两大重要功能更新!

​ 2024年10月24日,Midjourney在其官方渠道发布了令人振奋的更新,推出了三项全新功能,全面提升了用户的创作体验。这一升级无疑再次巩固了Midjourney在AI生成图像领域的领先地位。尤其是其中两个主要功能——外部图像编辑功能和图像重新纹理模…