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