专栏首页未闻Code一日一技:如何防止 Homebrew 自动升级和自动清理过期程序

一日一技:如何防止 Homebrew 自动升级和自动清理过期程序

新版本的 Homebrew,在你使用brew install xxx或者brew upgrade xxx的时候,会自动检查你是否有过期的程序,以及最近30天你是否执行过brew cleanup。如果有过期的程序,那么它就会自动帮你升级。如果最近30天没有执行过brew cleanup,那么它就会帮你自动执行这一行代码。

神经病,脑子被狗吃了才能想出这种馊主意。

就是这个智障提的建议:`brew cleanup` should be run automatically · Issue #4760 · Homebrew/brew · GitHub[1] 大家去喷他。

这个机制,破坏了我电脑上Python 所有的虚拟环境。

我电脑上的 Python 是使用 Homebrew 安装的。假设一开始我安装的版本是3.7。它会被Homebrew 安装到/usr/local/Cellar/python3/3.7.6_1这种格式的路径下面。

然后我使用 Pipenv 基于这个 Python 创建了几十个虚拟环境。

由于Pipenv 是基于 Virtualenv 创建的虚拟环境,而 Virtualenv 在 macOS 和 Linux 下面,创建虚拟环境时,在虚拟环境里面用的是系统 Python 的软连接。而不是把系统 Python 的可执行文件复制到虚拟环境中。软连接相当于一个快捷方式,所以如果系统环境的 Python 没有了,虚拟环境下面的 Python 就无法使用,因为软连接连过去找不到目标。

当我在 Homebrew 中升级 Python 版本时,它会把新版本的 Python 下载下来,安装到另一个文件夹里面。然后修改/usr/local/bin/python这个软连接,指向新的 Python 版本的可执行文件。但不改动老版本的 Python。这样一来,虚拟环境依然可以使用老版本的 Python,代码不受影响。

但是当执行brew cleanup的时候,Homebrew 就会把这些老版本的程序删掉,从而导致虚拟环境损坏。

我原来一直是使用brew cleanup xxx这样可以指定清除具体某些软件。如果不指定具体软件的名字,就会删除所有已经安装了新版本的过期的软件。Homebrew 这个30天自动清理,就会执行这个操作。这种默认自动清理的机制,剥夺了用户的知情权。

说回来,如何防止 Homebrew 自动升级与自动清理过期软件呢?

我们可以添加两个环境变量:

export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALL_CLEANUP=1

其中,第一个环境变量的作用是防止Homebrew 擅自升级所有软件。第二个环境变量是防止自动清理。

你可以在每次执行 Homebrew 相关命令时执行这两行。或者把他们添加到~/.zshrc或者~/.bashrc中永久生效。

参考资料

[1]

brew cleanup should be run automatically · Issue #4760 · Homebrew/brew · GitHub: https://github.com/Homebrew/brew/issues/4760

本文分享自微信公众号 - 未闻Code(itskingname),作者:kingname

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 初学者常见错误——我有 Anaconda 了,还能单独安装 Python 吗?

    在这种情况下,还能直接从 Python 官网下载安装其他版本的 Python 吗?

    青南
  • 提速72倍,在Python里面调用Golang函数

    我们知道,在涉及到大量 CPU 计算的时候,Python 的运行效率可能不如其他语言。在之前的一篇文章:一日一技:立竿见影地把你的 Python 代码提速7倍中...

    青南
  • Python 静态分析Pylint、Pyflakes 与 Mypy ——我应该用谁?

    说到 Python 的静态分析工具,就不得不说Pylint、Pyflakes 和 Mypy。他们的作用有重叠的地方,但又有各自的侧重点。在某些时候你可以只选择其...

    青南
  • 13个最受欢迎的机器学习Python库

    人工智能的快速发展,让机器学习备受大家欢迎。今天给大家盘点一下最受欢迎的机器学习库(ML):

    人工智能的秘密
  • 技术 | 人生苦短,请用Python——10大Python库汇总

    前言 对于码农来说,主要关注2017年新推出了哪些开源库,还有就是新近有什么流行的既能解决问题又好用的利器。下面就来为2017年做个总结。 1、Pipenv 第...

    灯塔大数据
  • Python | 开发者必备的 6 个库

    链接:https://www.oschina.net/translate/6-essential-libraries-for-every-python-deve...

    小小詹同学
  • Python2生命倒计时

    今天发现弹出了这条,“2020年1月1号,官方会结束Python2的生命周期”。Python2还剩11个月而已了。

    SeanCheney
  • Python 开发者的 6 个必备库

    https://www.oschina.net/translate/6-essential-libraries-for-every-python-develop...

    小小科
  • Python | 开发者必备的 6 个库

    链接:https://www.oschina.net/translate/6-essential-libraries-for-every-python-deve...

    用户1634449
  • 简单易懂最常用的Python图像处理库

    当今世界充满了各种数据,而图像是其中高的重要组成部分。然而,若想其有所应用,我们需要对这些图像进行处理。图像处理是分析和操纵数字图像的过程,旨在提高其质量或从中...

    商业新知

扫码关注云+社区

领取腾讯云代金券