办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 136|回复: 16

Linux Homebrew 的正确用法

[复制链接]

2

主题

6

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2023-1-12 07:42:01 | 显示全部楼层 |阅读模式
很多人都在使用 Linux Homebrew ,有三个技巧可以帮助你更好的使用它:
避免环境污染
首先要避免将 Homebrew 的 bin 目录添加到 $PATH,而仅仅将你需要使用的几个可执行做软连接放到 ~/bin 下面(这个目录在 $PATH 中),以避免环境污染。
当你编译或者安装新软件时,你显然希望它依赖的是 /usr 目录下面的系统文件,而如果把 Homebrew 的 bin 目录长期置于 $PATH 中,那么编译时将会调用到 Homebrew 里面的 gcc / clang (这两个经常在 brew 中被自动安装,用于编译和安装 homebrew 中源码形式的包),即便你的 brew 中没有 gcc / clang,也会在分析依赖时调用到 pkg-config / python 等 brew 下的软件,从而返回基于 homebrew 的依赖,这显然不是你想要的。
所以把你需要的工具做个软连接放到 ~/bin 下面就可以既使用 homebrew 又避免环境污染,只是在调用 brew 安装新包时需要临时添加 homebrew 的 bin 目录到 $PATH 中,用完了又取消,我们用两个函数做这个事情:
function brew_disable() {
        export PATH=${PATH##*"/.linuxbrew/bin:"}
        export PATH=${PATH##*"/.linuxbrew/sbin:"}
        export MANPATH=${MANPATH##*"/.linuxbrew/share/man:"}
        export INFOPATH=${INFOPATH##*"/.linuxbrew/share/info:"}
}

function brew_enable() {
        BREW='/home/linuxbrew/.linuxbrew'
        brew_disable
        export PATH="$BREW/bin:$BREW/sbin:$PATH"
        export MANPATH="$BREW/share/man:$MANPATH"
        export INFOPATH="$BREW/share/info:$INFOPATH"
        export HOMEBREW_NO_AUTO_UPDATE=1
}上面两个函数放到你的 bashrc 中,平时不需要启用 homebrew,需要安装时调用一下 brew_enable,安装完包了再用 brew_disable。
还有另外一个做法,直接写一个名叫 brew 的函数:
function brew() {
    PATH="/home/linuxbrew/.linuxbrew/bin:$PATH" /home/linuxbrew/.linuxbrew/bin/brew "$@"
}这样再敲入 brew 命令的时候,会临时设置路径并调用真正的 brew 可执行:
brew install fzf有了上面的函数,你就不需要设置任何 brew 路径而直接安装软件了,如果你不想覆盖 brew 这个名字,可以把上面的函数改名为 brew2 之类的。
禁用自动更新
第二项优化,是禁用每次 brew 自动更新:
export HOMEBREW_NO_AUTO_UPDATE=1这样可以避免每次 install 软件急着用时它给你 update 一半天,是十分影响心情的事情,有了这个宏以后完全可以定期手动 brew update。
使用临时代理
继续在 bashrc 中加一行:
alias socks5="http_proxy=socks5://127.0.0.1:1080 https_proxy=socks5://127.0.0.1:1080 all_proxy=socks5://127.0.0.1:1080 "注意,最后引号结束前有一个空格,那么当你希望让 brew 走代理时就可以:
socks5 brew install micro这样不破坏环境变量,临时给 brew 设置了一个 localhost:1080 的 socks5 代理,用来安装新软件。
回复

使用道具 举报

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-12 07:42:25 | 显示全部楼层
有apt了要brew干啥
回复

使用道具 举报

0

主题

6

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-1-12 07:43:16 | 显示全部楼层
用最新版本的软件包
回复

使用道具 举报

1

主题

5

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-1-12 07:44:05 | 显示全部楼层
Arch 用户表示 pacman -Syu,或者 debian Testing。。
回复

使用道具 举报

1

主题

7

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-1-12 07:44:36 | 显示全部楼层
homebrew 可以让你保持个人开发环境同生产环境一致的同时使用最新的包。
回复

使用道具 举报

1

主题

5

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-1-12 07:44:56 | 显示全部楼层
谢谢指教,明白啦
回复

使用道具 举报

0

主题

6

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-1-12 07:45:49 | 显示全部楼层
我把 linuxbrew 写成 env-modules 的 module 了,也可以在需要的时候 load下,和 enable 的一个作用,不用的时候就 rm/unload 下。
但 linuxbrew 的 glibc 很坑啊,现在已经把自己所有环境里的 linuxbrew 卸载了,换成了 spack,虽然不如 brew 新,但是稍微稳一点点,也不会干扰环境,一个命令可以自动生成 module file。
话说,使用 linuxbrew 的不多吧?
回复

使用道具 举报

2

主题

8

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2023-1-12 07:46:46 | 显示全部楼层
我在的几个群里用的挺多的
回复

使用道具 举报

1

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-1-12 07:47:05 | 显示全部楼层
实用,才想到每次install都要update半天!
回复

使用道具 举报

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-1-12 07:47:36 | 显示全部楼层
homebrew 还是更适合 Mac
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-3-15 18:16 , Processed in 0.091070 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表