回答編集履歴

2

コメントを追記

2022/05/11 06:24

投稿

endy
endy

スコア163

test CHANGED
@@ -26,6 +26,8 @@
26
26
  # rc=0
27
27
  # out=(none):cyrus-sasl-lib-2.1.26-24.el7_9.i686
28
28
  # err=warning: cyrus-sasl-lib-2.1.26-24.el7_9.i686.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
29
+ # pkgspecがxxx.rpmとファイル名が指定されている場合、"xxx is not installed"という表示には絶対ならず、指定したファイルの情報が単純に出力されます
30
+ # 「インストール済みか否か」を調べるには、".rpm"を除いた "xxx" の部分のみをコマンドに渡して評価すべきです (ここがバグ)
29
31
 
30
32
  # ↓rc = 0, outに "is not installed" が含まれないので、ここはスルーされます
31
33
  # 本来であればi686版のrpmはインストールされていないので、ここの部分が評価され、「未インストール」扱いになってほしかったのかなと思います

1

少し見やすくしました

2022/05/11 06:08

投稿

endy
endy

スコア163

test CHANGED
@@ -22,8 +22,10 @@
22
22
  qf = "%{epoch}:%{name}-%{version}-%{release}.%{arch}\n"
23
23
  cmd = [rpmbin, '-q', '--qf', qf, pkgspec]
24
24
  rc, out, err = self.module.run_command(cmd, environ_update=lang_env)
25
- # ここでrpmコマンドを実行しています
25
+ # ここでrpmコマンドを実行しています。恐らく結果は以下のようになります
26
+ # rc=0
27
+ # out=(none):cyrus-sasl-lib-2.1.26-24.el7_9.i686
26
- # rc=0, out=(none):cyrus-sasl-lib-2.1.26-24.el7_9.i686, err=warning: cyrus-sasl-lib-2.1.26-24.el7_9.i686.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY ...になると思います。たぶん
28
+ # err=warning: cyrus-sasl-lib-2.1.26-24.el7_9.i686.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
27
29
 
28
30
  # ↓rc = 0, outに "is not installed" が含まれないので、ここはスルーされます
29
31
  # 本来であればi686版のrpmはインストールされていないので、ここの部分が評価され、「未インストール」扱いになってほしかったのかなと思います