🗂

Azure CLI が RHEL 8.2 でインストールできない

2022/12/23に公開

TL;DR

  • sudo dnf --showduplicate deplist <package-name> で依存関係を調べる
  • 少し古くても我慢できるのであれば依存関係を追っかけて行って古いのを入れる

Azure CLI が RHEL 8.2 でインストールできない

という話を受けて久々に RHEL を触ってみてはーなるほど思ったので備忘録までに。
最近は Ubuntu Server ばっかり触ってたんですよね。

公式の手順に沿って

こちらに手順があります。
今回はたまたま RHEL 8.2 で試しています。

https://learn.microsoft.com/cli/azure/install-azure-cli-linux?pivots=dnf

$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo dnf install -y https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

んで、次でこけます。

$ sudo dnf install azure-cli
Last metadata expiration check: 2:31:26 ago on Fri 23 Dec 2022 09:10:25 AM UTC.
Package azure-cli-2.37.0-1.el8.x86_64 is already installed.
Error:
 Problem: cannot install the best candidate for the job
  - nothing provides python39 needed by azure-cli-2.43.0-1.el8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

python39 がないっぽい雰囲気ですね。
で、ぱっと調べた感じ Python 3.9 は compile しないと入らないっぽいんですねぇ。

なので、しゃーないのでちょっと古くでもいいので Azure CLI を入れたいとします。
sudo dnf --showduplicate deplist azure-cli をたたいてみて、package の依存関係を表示させてみます。

`sudo dnf --showduplicate deplist azure-cli`
$ sudo dnf --showduplicate deplist azure-cli
Last metadata expiration check: 2:34:06 ago on Fri 23 Dec 2022 09:10:25 AM UTC.
package: azure-cli-2.35.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python3
   provider: python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.36.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python3
   provider: python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.37.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python3
   provider: python36-3.6.8-2.module+el8.1.0+3334+5cb623d7.x86_64
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.38.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python39
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.39.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python39
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.40.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python39
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.41.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python39
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.42.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python39
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

package: azure-cli-2.43.0-1.el8.x86_64
  dependency: ld-linux-x86-64.so.2()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0()(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc-2.28-101.el8.x86_64
  dependency: python39
  dependency: rtld(GNU_HASH)
   provider: glibc-2.28-101.el8.i686
   provider: glibc-2.28-101.el8.x86_64

どうも azure-cli-2.38.0-1.el8.x86_64 から python39 に依存するように変わったみたいですね。
なので、今回は仕方がないので azure-cli-2.37.0-1.el8.x86_64 で我慢することにします。

$ sudo dnf install azure-cli-2.37.0-1.el8.x86_64

うまくいったでしょうか、この記事を書いている時点ではこれで成功しました。

$ az version
{
  "azure-cli": "2.37.0",
  "azure-cli-core": "2.37.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

ちなみにこっから az upgrade するとやっぱりこけます。

$ az upgrade
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Your current Azure CLI version is 2.37.0. Latest version available is 2.43.0.
Please check the release notes first: https://docs.microsoft.com/cli/azure/release-notes-azure-cli
Do you want to continue? (Y/n): y
Last metadata expiration check: 0:09:51 ago on Fri 23 Dec 2022 11:39:40 AM UTC.
Error:
 Problem: cannot install the best update candidate for package azure-cli-2.37.0-1.el8.x86_64
  - nothing provides python39 needed by azure-cli-2.43.0-1.el8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
CLI upgrade failed.

見た感じ結局裏では .rpm をインストールしようとしてるっぽいので同じ結果ですね。

Microsoft (有志)

Discussion