gpt4 book ai didi

macos - Homebrew:如何列出已安装的瓶子及其操作系统版本?

转载 作者:行者123 更新时间:2023-12-01 02:06:53 25 4
gpt4 key购买 nike

我最近将 Mac OS X 升级到了 Yosemite,我想确保我当前安装的每个软件包都是一个 Yosemite 瓶子。

如何列出已安装的瓶子及其操作系统版本,以便最终卸载/安装它们?

编辑 Grepping 字符串 "bottled"将不起作用,因为如果有一个瓶子可用于包,它仍然存在,但您仍然可以从源代码编译。例如,我刚刚从源代码和 brew info yasm 构建了 yasm返回:

yasm: stable 1.3.0 (bottled), HEAD
Modular BSD reimplementation of NASM
http://yasm.tortall.net/
/usr/local/Cellar/yasm/1.3.0 (44 files, 3.3M) *
Built from source
[...]

最佳答案

列出所有瓶装配方的最快方法是 query brew info --json 的 JSON 输出直接(这需要 jq ):

brew info --json=v1 --installed | jq -r "map(select(.installed[].poured_from_bottle) | .name) | unique | .[]"
在这里, brew info --json=v1 --installed为所有已安装的公式提供 JSON 格式的信息。 jq处理这个(不带参数使用它来美化输出)。 select(.installed[].poured_from_bottle)选择至少安装了一个瓶装版本的每个配方,以及 map(... | .name)返回关联的名称。 | unique确保在安装了多个瓶装版本的情况下,公式名称仅返回一次, | .[]将返回的名称数组分成一个列表,每个列表在单独的行中,和 -r从 JSON 输出中去除引号,留下可以传递到其他 shell 命令的格式。
每次记住这有点复杂,但是您可以将此命令放入 shell 脚本中:
#!/bin/bash

#: * `bottled` [<options>]:
#:
#: List all bottled formulae which are currently installed.
#:
#: --versions Show the version number for bottled
#: formulae
#: -h, --help Show this message.
#:
#: (`brew bottled` requires `jq`. Use `brew install jq` to install.)

if type jq &>/dev/null; then
case $1 in
--versions)
brew info --json=v1 --installed | \
jq -r "map(select(.installed[].poured_from_bottle) | .name + \" \" + .installed[].version) | .[]"
;;
*)
brew info --json=v1 --installed | \
jq -r "map(select(.installed[].poured_from_bottle) | .name) | unique | .[]"
;;
esac
exit $?
else
echo '`brew bottled` requires jq. Use `brew install jq` to install.'
exit 1
fi
叫它 brew-bottled ,使其可执行( chmod a+x brew-bottled )并将其放在路径中的某个位置(例如 /usr/local/bin )。现在您可以将其称为 external commandbrew bottled列出您的瓶装配方。 (作为额外的奖励, --versions 开关将包含版本信息,类似于 brew list --versions ,包括相同公式的多个瓶装版本。)
所以,如果你想从源头重建所有瓶装配方,你可以通过管道将其通过 xargs :
brew-bottled | xargs brew reinstall -s
(离开 -s 只需重新安装当前的操作系统瓶子。)
不幸的是,似乎无法确定当前安装的是哪个 macOS 版本的瓶子,因此您需要重新安装所有瓶装公式以确保。

关于macos - Homebrew:如何列出已安装的瓶子及其操作系统版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31876845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com