【Homebrew】MacBook的第二个AppStore

英文官网:Homebrew — The Missing Package Manager for macOS (or Linux)
中文官网:macOS(或 Linux)缺失的软件包的管理器 — Homebrew

1 简介

Homebrew 由开发者 Max Howell 开发,并基于 BSD 开源,是一个非常方便的包管理器工具。在早期, Homebrew 仅有 macOS 的版本,后续随着用户的增多,Homebrew 还提供了 Linux 的版本,帮助开发者在 Linux 同样使用 Homebrew 来配置环境。

Homebrew是MacOS(或 Linux)的软件包管理器。通过它,可以方便的对Mac上的各种应用软件进行管理,例如:安装、更新、查看、搜索、卸载等。

Homebrew 官方解释:Homebrew complements macOS. ( Homebrew 使 macOS 更完整。)

Homebrew 的 Slogan :“The missing package manager for macOS (or Linux)”

1.1 Homebrew 的几个核心概念

词汇含义
formula(e)安装包的描述文件,formulae 为复数
cellar安装好后所在的目录
keg具体某个包所在的目录,keg 是 cellar 的子目录
bottle预先编译好的包,不需要现场下载编译源码,速度会快很多;官方库中的包大多都是通过 bottle 方式安装
tap下载源,可以类比于 Linux 下的包管理器 repository
cask安装 macOS native 应用的扩展,你也可以理解为有图形化界面的应用
bundle描述 Homebrew 依赖的扩展

其中,最关键的是 tap 、cask

2 安装

Homebrew 3.0.0版开始,正式支持Apple M1芯片

2.1 有VPN

在终端命令行窗口输入安装命令,从官网安装

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

因为这是国外网站,由于GFW(中国长城防火墙)的存在,如果没有vpn,是无法访问的:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

安装完成后找不到路径zsh: command not found: brew

解决方法: 在终端输入

echo "export PATH=$PATH:/opt/homebrew/bin" >> ~/.zprofile

2.2 无VPN

在终端命令行窗口输入安装命令,从国内镜像网站安装

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

验证是否安装成功

安装脚本执行完成后,重启终端(重启后才生效),通过在终端输入"brew -v",可以查看homebrew版本。如果正确输出版本信息,表示成功安装。

在M1芯片上,homebrew的安装路径为:“/opt/Homebrew/”

3 卸载

在终端命令行窗口输入卸载命令

# 官网
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"  
# 非官网
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

4 使用

4.1 安装软件

在终端命令行窗口输入安装命令

 # brew install [软件名]
 brew install wget

4.2 搜索软件

很多时候,我们不知道自己想要的软件是否有,或者说具体的名字是什么,这个时候你有两种方式来完成搜索

4.2.1 使用命令搜索

在命令行中,你可以直接使用关键词来进行搜索

# brew search [关键词]
brew search mark

在搜索时应当遵循宁可少字,不能错字的原则来搜索。

4.2.2 使用网页搜索

除了使用命令行搜索以外,你可以使用网页端的搜索工具来辅助你进行搜索。在 Homebrew 的官网,你可以找到 formulae 的链接,或者直接访问 https://formulae.brew.sh/ 来进行搜索。你只需要在界面的输入框中输入你要搜索的命令,然后就会出现对应的候选命令

选择其中你要使用的那个,点击就会进入到软件的介绍页面

你就可以看到 Homebrew 中的软件具体信息。

4.2.3 查看已经安装的包

如果你想要查看你都安装了哪些包,你可以执行 brew list 命令,来查看所有你已经安装的软件。

4.2.4 更新一个已经安装的包

我们安装的软件并不会自动更新,因此,我们可以根据自己的需求,批量更新软件,或者更新单个软件。

你可以先使用 brew outdated 来查看所有有更新版本的软件。

然后使用 brew upgrade 来更新所有的软件,或者是使用 brew upgrade [软件名]来更新单个软件。

4.2.5 卸载某个已经安装的包

如果你想要卸载某个包,你可以执行 brew uninstall [软件名] 来卸载一个特定的软件,比如卸载 wget 是这样的。

brew uninstall wget

4.2.6 查看包的信息

如果你想要查看某个特定软件的信息,你可以执行命令 brew info [软件名] 来查看该软件的详情。

4.2.7 清理软件的旧版

Homebrew 用久了,会有一些历史版本的软件遗留在系统里,这个时候,你可以使用 brew cleanup 命令来清理系统中所有软件的历史版本,或者可以使用 brew cleanup [软件名]来清理特定软件的旧版。

4.2.8 管理后台软件

诸如 Nginx、MySQL 等软件,都是有一些服务端软件在后台运行,如果你希望对这些软件进行管理,可以使用 brew services 命令来进行管理

  • brew services list: 查看所有服务
  • brew services run [服务名]: 单次运行某个服务
  • brew services start [服务名]: 运行某个服务,并设置开机自动运行。
  • brew services stop [服务名]:停止某个服务
  • brew services restart:重启某个服务。

4.2.9 检查 Hombrew 环境

如果你的 Hombrew 没有办法正常的工作,你可以执行 brew doctor 来开启 Homebrew 自带的检查,从而确认有哪些问题,并进行修复。

4.2.10 更新 Homebrew

Homebrew 经常会在执行命令的时候触发更新,不过如果你想要主动检查更新,可以执行 brew update 来唤起 Homebrew 的更新。

4.2.11 添加一个新的 tap

homebrew 官方在安装的时候会有一些 tap 但是在使用时,依然会需要安装一些特殊的 tap ,这个时候,我们就要用到 tap 的命令来添加新的 tap.

在添加 tap 时,输入命令 brew tap [user/repo] ,就可以完成添加 tap 了

4.2.12 常用 tap

在使用 homebrew 时,我们一般会添加几个常用的 tap,来确保我们有足够的软件来安装。

1. Caskroom

Caskroom 是 Homebrew 下一个非常出名的 tap ,有了 caskroom,我们就可以安装一些有图形化界面的软件了,比如 VSCode、Typora 等软件。

使用起来也非常简单,最新版 Homebrew 中,你可以直接使用 brew cask install [软件名] 来安装特定的软件,homebrew 会自动安装 Caskroom。

2. homebrew-cask-fonts

程序员难免要安装一些代码字体,这样才能更好的写代码,Homebrew 也提供了方便我们安装字体的 tap。

在使用时,你需要先添加对应的 tap ,然后执行安装即可了,比如我们要安装 source code pro ,只需要执行如下命令。

brew tap homebrew/cask-fonts
brew cask install font-source-code-pro

4.2.13 切换国内的镜像源

Homebrew 默认使用的是国外的源,在下载时速度可能会比较慢。好在国内的清华大学和中科大提供了 Homebrew 的镜像源,我们可以很轻松的切换源,从而提升我们的下载速度。

1. 使用中科大的镜像

执行如下命令,即可切换为中科大的镜像

cd "$(brew --repo)"
git remote set-url origin git://mirrors.ustc.edu.cn/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-core.git

2. 使用清华大学的镜像

执行如下命令,即可切换为清华大学的镜像

git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

4.2.14环境迁移

设备永久了,我们的电脑中会有大量的软件,如果你需要迁移环境,重新安装会是一个大麻烦,好在 Homebrew 本身为我们提供了一个非常好用的环境迁移的工具 —— Homebrew Bundle

你首先需要在之前的电脑中执行 brew bundle dump 来完成当前环境的导出,导出完成后,你会得到一个 Brewfile

然后将 Brewfile 复制到新的电脑中,并执行 brew bundle 来开始安装的过程。

4.2.15 使用网页搜索 Caskroom 的软件

Brew Caskroom 并没有提供搜索的命令,不过我们可以借助一些网站来进行搜索,一个是 Homebrew 官方的 Caskrrom 页面:homebrew-cask — Homebrew Formulae

在这个页面,你可以看到所有被收录的页面,在命令行中输入对应的软件就可以安装了。

你也可以访问Mac App Store - Get over 5000 free apps for Mac OS,在网站中输入你要安装的软件,点击搜索,在弹出的页面中,查看安装指南即可。

4.2.16 辅助软件

除了命令行,还有两款软件可以帮助我们更好的使用 Homebrew ,他们分别是 Cakebrew 和 launchrocket。

Cakebrew

Cakebrew 是 Homebrew 的 GUI 管理器,在 Cakebrew 中,你可以看到当前所有已经安装的软件,并可以在 Caskbrew 中对其他软件执行升级等操作。

你只需要执行 brew cask install cakebrew 就可以完成 Cakebrew 的安装。

安装完成后,在 LaunchPad 中打开即可。

launchrocket

launchrocket 可以用于管理 Homebrew 安装的服务,在使用时,你需要先添加对应的tap,然后再安装软件。

brew tap jimbojsb/launchrocket
brew cask install launchrocket

安装完成后,在 LaunchPad 中打开即可。

程序员 Homebrew 使用指北 - 少数派 (sspai.com)

5 常用指令

指令作用
brew update自动升级homebrew(从github下载最新版本)
brew outdated检测已经过时的软件
brew upgrade升级所有已过时的软件,即列出的以过时软件
brew upgrade [formula]升级指定的软件
brew pin [formula]禁止指定软件升级
brew unpin [formula]解锁禁止升级
brew upgrade --all升级所有的软件包,包括未清理干净的旧版本的包
brew cleanup -n列出需要清理的内容
brew cleanup [formula]清理指定的软件过时包
brew cleanup清理所有的过时软件
brew uninstall [formula]卸载指定软件
brew uninstall [fromula] --force彻底卸载指定软件,包括旧版本
brew list显示所有的已安装的软件
brew search text搜索本地远程仓库的软件,已安装会显示绿色的勾
brew search /text/使用正则表达式搜软件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/10129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java虚拟机内存区域

Java虚拟机所管理的内存将会包括以下几个运行时数据区域 程序计数器 是一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要通过更改这个计数器的值来改变下一条需要执行的字节码。 由于各个线…

如虎添翼,强大插件让ChatGPT更加游刃有余

ChatGPT模型是当前人工智能领域中备受瞩目的存在。作为一款强大的自然语言处理模型,它具备跨时代的意义,将深刻影响我们的未来。而强大的插件不仅可以丰富ChatGPT的功能,提高其应对复杂问题的能力。还也可以解决一些常见的错误,如…

rust的并发以及kv server网络处理和网络安全部分

理解并发和并行 Golang 的创始人之一,对此有很精辟很直观的解释:并发是一种同时处理很多事情的能力,并行是一种同时执行很多事情的手段。 我们把要做的事情放在多个线程中,或者多个异步任务中处理,这是并发的能力。在多…

Moviepy模块之视频添加图片水印

文章目录前言视频添加图片水印1.引入库2.加载视频文件3.加载水印图片4.缩放水印图片大小5.设置水印的位置5.1 相对于视频的左上角5.2 相对于视频的左下角5.3 相对于视频的右上角5.4 相对于视频的右下角5.5 相对于视频的左中位置5.6 相对于视频的正中位置5.7 相对于视频的右中位…

Redis源码之SDS简单动态字符串

Redis 是内存数据库,高效使用内存对 Redis 的实现来说非常重要。 看一下,Redis 中针对字符串结构针对内存使用效率做的设计优化。 一、SDS的结构 c语言没有string类型,本质是char[]数组;而且c语言数组创建时必须初始化大小&#…

uniapp 之 小球根据当前时间 显示位置

目录 效果图 前言 总代码 1. template 代码 2. script 代码 3. js文件 4.样式 注解 1.小球运动代码 2. picker 时间选择器 补充 效果图 前言 最里面的是一张图片&#xff0c;并不是手写的样式&#xff0c; 总代码 1. template 代码 <uni-popup ref"appointm…

反序列化漏洞及PHP魔法函数

目录 1、漏洞原理 2、序列化&#xff08;以PHP语言为例&#xff09; 3、反序列化 4、PHP魔法函数 &#xff08;1&#xff09;__wakeup() &#xff08;2&#xff09;__destruct() &#xff08;3&#xff09;__construct() &#xff08;4&#xff09;__toString() &…

Pytorch基础 - 3. torch.utils.tensorboard

目录 1. 简介 2. 基本步骤 3. 示例1 - 可视化单条曲线 4. 示例2 - 可视化多条曲线 5. 示例3 - 可视化网络结构 1. 简介 Tensorboard是Tensorflow的可视化工具&#xff0c;常用来可视化网络的损失函数&#xff0c;网络结构&#xff0c;图像等。后来将Tensorboard集成到了P…

【Linux】认识协议

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…

QT程序退出还占进程

问题情况 程序运行时的样子&#xff1a; 程序退出时的样子&#xff1a; 其跑到了后台进程里面&#xff1a; 程序退出了&#xff0c;但在任务管理器里查看&#xff0c;其从进程里面转移到后台进程了。 这种问题&#xff0c;怎么办&#xff0c;代码里&#xff0c;应该释放的也都…

【我的创作纪念日】恒川的创作一周年

机缘 大家好&#xff0c;我是热爱跑步的恒川&#xff0c;今天是个特殊的日子&#xff08;我的创作纪念日&#xff09;&#xff0c;在去年的今天&#xff0c;我发了第一篇博文。去年的时候&#xff0c;刚接触到CSDN&#xff0c;只想把他当作一个学习的工具&#xff0c;后来&…

浅析时间复杂度与空间复杂度

时间复杂度 何为时间复杂度 算法的时间复杂度&#xff0c;是一个用于度量一个算法的运算时间的一个描述&#xff0c;本质是一个函数&#xff0c;根据这个函数能在不用具体的测试数据来测试的情况下&#xff0c;粗略地估计算法的执行效率&#xff0c;换句话讲时间复杂度表示的…

UNIX高级编程--管道

管道 管道是 UNIX 系统 IPC 的最高老形式&#xff0c;所有的 UNIX 系统都提供此种通信机制。管道有以下两种局限性。 历史上&#xff0c;它们是半双工&#xff08;既数据只能在一个方向上流动&#xff09;。现在&#xff0c;某些系统提供全双工管道&#xff0c;但是为了最佳的…

代码随想录算法训练营第五十七天 | 647. 回文子串、516. 最长回文子序列、动态规划总结

647. 回文子串 动规五部曲 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 在判断字符串S是否为回文时&#xff0c;如果知道 s[1]&#xff0c;s[2]&#xff0c;s[3] 这个子串是回文的&#xff0c;那么只需要比较 s[0]和s[4]这两个元素是否相同&#xff0c;如果…

Motion Planning学习笔记一:配置空间、图、图搜索、图遍历

学习高飞博士的路径规划课程所总结的学习笔记。 目录 1、配置空间&#xff08;Configuration Space, C-space&#xff09; 2、图&#xff08;Graphs&#xff09; 3、图搜索&#xff08;Graph Search Basis&#xff09; 3.1、总体框架 3.2、两种基本的图遍历算法 3.3、启…

【Python】【进阶篇】十七、Python爬虫实现实时翻译

目录十七、Python爬虫实现实时翻译17.1 JS代码slat与sign17.2 Python代码表示参数17.3 完整程序实现十七、Python爬虫实现实时翻译 YD翻译是以异步方式实现数据加载的&#xff0c;要实现数据抓取&#xff0c;其过程极其繁琐。 上一节《Python爬虫的浏览器实现抓包》&#xff…

【hello Linux】Linux开发工具

目录 1. vim&#xff1a;文本编辑器 1.1 各种模式的切换 补充&#xff1a;ctrl r命令 1.2 命令模式的操作 1.3 插入模式的操作 1.4 底行模式的操作 1.5 配置vim环境 1.6 配置亲属关系 2. gcc/g&#xff1a;编译器 2.1 预处理&#xff1a; 2.2 编译&#xff1a; 2.3 汇编&#x…

如何利用ChatGPT辅助优化刷题性能

根据土著刷题共建群里的一个小伙伴反馈&#xff0c;刷题会出现切题卡顿的情况&#xff0c;有时会出现滑不动的情况。 定位问题 为了定位切题卡顿问题的具体原因&#xff0c;测试了高低端手机&#x1f4f1;、切换2G、3G、4G低网络状态等各种影响切题的现实情况&#xff0c;经过借…

STM32F4_定时器精讲(TIM)

目录 1. 什么是定时器&#xff1f; 2. STM32定时器简介 2.1 高级控制定时器 TIM1和TIM8 2.1.1 TIM1和TIM8简介 2.1.2 时基单元 2.1.3 计数器模式 2.1.4 重复计数器 2.1.5 时钟选择 2.1.6 捕获/比较通道 2.1.7 输入捕获模式 2.1.8 其他功能 2.2 通用定时器 TIM2到TI…

Mysql 你还在一个字段一个索引吗

今天看到某系统的mysql在某时段存在thread_running线程数飙高触发告警&#xff0c;挤时间分析了该异常时间段的慢日志记录&#xff0c;并进行了sql优化 慢日志记录主要归为3个慢sql (编号1&#xff0c;2&#xff0c;3) 一、 1号sql原文 select * from feeds where topics_id &…