我想複製我的macos brew配置到幾臺機器。自制軟件:以編程方式複製安裝?
有沒有一種方法以編程方式檢查沖泡的狀態還是有它產生的一組命令與另一臺計算機同步狀態?
更新:似乎沒有要任何東西,所以我把一個快包,做到這一點。到目前爲止,它對我來說效果很好。
https://github.com/marhar/brewmaster
我想複製我的macos brew配置到幾臺機器。自制軟件:以編程方式複製安裝?
有沒有一種方法以編程方式檢查沖泡的狀態還是有它產生的一組命令與另一臺計算機同步狀態?
更新:似乎沒有要任何東西,所以我把一個快包,做到這一點。到目前爲止,它對我來說效果很好。
https://github.com/marhar/brewmaster
下面是在多臺計算機上運行釀造,同步起來,以便他們已經得到了相同的軟件包安裝一個簡單的包。我也添加了對字體同步的支持。
https://github.com/marhar/brewmaster
問得好!!!!
不知道是否有「正確」方式做到這一點,但它也是我想要做的,以保持我的筆記本電腦的家釀與我的桌面同步。我開始寫有某種看法到具有export settings
命令和import settings
命令,並在Dropbox的保存兩臺機器之間的設置。
我可以列出所有已安裝的軟件包並遍歷它們,然後獲取用於安裝每個特定軟件包的選項 - 我使用JSON輸出和自制軟件包來解析選項。
然後我遇到了問題...
1)當你去安裝第二臺機器上,也有依賴性,有時家裏釀造爲您安裝的依賴,但它使用默認選項安裝它除非你先安裝正確的選項。解決這個問題的方法之一是,即使由於安裝了以前的軟件包而已經以默認狀態安裝了它們,也可以從選項列表中強制重新安裝選項。
2)第二個問題是pinned
包是固定在某一版本。這開始打動了我的思想,我放棄了,因爲我不擔心筆記本電腦上的不同設置。
FWIW,這裏是我開始寫代碼的骨頭 - 它是不完整的,可能是錯的不過十又可以讓球滾動你的,還是別人。
first=1
# Start output file with array so we can use map()
echo "[" > "$f"
# Iterate over all installed packages
for pkg in $(brew list); do
[ $first -ne 1 ] && echo "," >> "$f"
[ $verbose -gt 0 ] && echo Processing package: $pkg
# Find options used for this package
options=$(brew info --json=v1 $pkg | jq '.[].installed[0].used_options')
echo "{\"name\":\"$pkg\",\"used_options\":$options}" >> "$f"
first=0
done
# Close array in output file
echo "]" >> "$f"
一個有用的信息塊是有每個已安裝的軟件包,告訴你很多有用的東西稱爲「INSTALL_RECEIPT.json」可解析的文件...
find /usr/local -name "INSTALL_RECEIPT*"
這裏有一對夫婦:我是用解析它們
# List package names
#jq -r '.packages[] | .["package-name"]' < *json
# List options for package "imagemagick"
#jq -r '.packages[] | select(."package-name"=="imagemagick") | .options[]' < *json
你在同步裝置的角度來看待可能不完全是對的,但你應該看看Brewfiles和捆紮機等片段