From b56434f44e28b634789a9a01af65ef2098e41d12 Mon Sep 17 00:00:00 2001 From: xin Date: Mon, 24 Nov 2025 09:46:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96ota=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playbooks/site.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/playbooks/site.yml b/playbooks/site.yml index d44981a..3dfa346 100644 --- a/playbooks/site.yml +++ b/playbooks/site.yml @@ -80,6 +80,34 @@ mode: '0644' tags: apt + - name: check missing packages + shell: + cmd: | + MISSING="" + for pkg in {{ packages }}; do + # 先检查原包名 + if dpkg-query -W -f='${Status}' "$pkg" 2>/dev/null | grep -q "install ok installed"; then + continue + # 如果原包名不存在,尝试检查带 t64 后缀的版本 + elif dpkg-query -W -f='${Status}' "${pkg}t64" 2>/dev/null | grep -q "install ok installed"; then + continue + else + MISSING="yes" + break + fi + done + if [ -n "$MISSING" ]; then + echo "missing" + else + echo "all_installed" + fi + args: + executable: /bin/bash + register: package_check + changed_when: false + ignore_errors: yes + tags: apt + - name: update apt cache shell: cmd: | @@ -88,6 +116,7 @@ else apt-get update -y fi + when: package_check.stdout == "missing" ignore_errors: yes tags: apt @@ -99,6 +128,7 @@ else apt-get install -y {{ packages }} fi + when: package_check.stdout == "missing" ignore_errors: yes tags: apt