Manjaro/Arch: インストールされたパッケージを複数のコンピュータに同期したままにする

Manjaro/Arch: インストールされたパッケージを複数のコンピュータに同期したままにする

私は2台のラップトップと2台のデスクトップで複数のManjaroインストールを実行しており、すべてのコンピュータに同じソフトウェアが必要で、すべてのコンピュータに手動でインストールする必要があることがよくあります。私のコンピュータにパッケージのインストールを同期する方法はありますか?帯域幅を節約パッケージキャッシュの設定私の興味ではありません。私が探していますトップ複数のコンピュータを更新する機能を提供しますが、インストールされているソフトウェアを同期しない限り、パッケージのみが最新の状態に保たれます。

ベストアンサー1

この回答は、インストールされているパッケージのスクリプトを収集するためのOPの要求からのものです(詳細はOPの質問の説明を参照)。

次のスクリプトはRHEL(Red Hat Enterprise Linux)用です。別のシステムを実行している場合は、システムに合わせて特定のパッケージマネージャコマンドを更新して引き続き使用できます。

#!/bin/bash
# VARS
# declare the hostnames of your servers. it requires to have a config file inside ./ssh with the connection information.
HOSTS=" prd_webserver1 prd_webserver2 prd_db1 prd_db2 prd_frontend1 prd_frontend2"
# create a store directory on the path were the script is
store="artifact_store"
# declare roles based on hostname
role_store="webserver db frontend"

# Create artifact_store directory
[ ! -d "$store" ] && mkdir -p "$store"

# Create role store directories
for ROLE_DIR in ${role_store}; do
[ ! -d "$store/${ROLE_DIR}" ] && mkdir -p "$store/${ROLE_DIR}"
done

CMDS=$(cat <<CMD
 bash -c "sudo yum -q check-update --security --exclude=kernel* |awk '{print $ 1}' > /tmp/updatelist.log"
CMD
)

# Create update lists
for HOSTNAME in ${HOSTS}; do
ssh -t ${HOSTNAME} "$CMDS"
scp ${HOSTNAME}:/tmp/updatelist.log ./updatelist_${HOSTNAME}.log
mv updatelist_${HOSTNAME}.log $store
done

# Create role directories and move artifacts
for ROLE in ${role_store}; do
mv $store/*${ROLE}*.log $store/${ROLE}
cat $store/${ROLE}/updatelist_*.log >> $store/${ROLE}/updatelist.combined
cat $store/${ROLE}/updatelist.combined |sort |uniq >> $store/${ROLE}/updatelist.final
rm $store/${ROLE}/updatelist.combined
done

おすすめ記事