😽

Homebrewでインストールしたファイルが、どのパッケージに含まれるか調べる

2021/05/09に公開

Homebrew で dpkg -S /usr/bin/hoge みたいなことをしたかったのだけど、できないっぽい。
調べていると brew ls -v PACKAGE でインストールされるファイルの一覧を取得できることが分かったので、しらみつぶしになめるスクリプトを書いてみた。

#!/bin/sh

usage() {
        echo "Usage: $0 FILE_PATH"
        exit 1
}

targetpath=$1
if [ x"$targetpath" = x"" ] || [ x"$targetpath" = x"-h" ]; then
        usage
fi
if [ ! -f $targetpath ]; then
        echo "File not found:" $targetpath
        exit 1
fi
if [ -L $targetpath ]; then
        echo "$targetpath is symlink"
        targetpath=`python3 -c "import os.path as op; print(op.realpath('$targetpath'))"`
fi

echo "searching '$targetpath' ..."

brew ls --formula -1 |\
while read formula; do
        brew ls -v $formula 2>/dev/null | grep -q $targetpath && echo "found the file in '$formula'"
done

Discussion