2024 年最初のブログとなりました。「ブログの書初め」です、本年もよろしくお願いします。
CentOS / RHEL 系の Linux で rpm パッケージをインストールする際には "yum"("dnf" 派の人もいるかもしれませんが、ここでは "yum" で統一します。内容は同じなので単純に読み替えていただいて大丈夫です)を使う機会が多いと思っています。
この yum を使って、例えば "wget" をインストールしようとすると、
というコマンドを実行します。すると、
↑のようなメッセージが表示されて、最後に "Is this ok [y/N]:" と確認メッセージが表示されて止まります。「このパッケージをインストールするよ、OK?」と聞かれていて、"y" と入力するとインストール開始、"n" だとインストールせずに終了します("[y/N]" と "N" が大文字になっているのでデフォルトは "n" ということになります。つまりそのままリターンキーを入力すると "n" とみなされます)。
で、この確認メッセージで止まるのが面倒な場合、つまり「正しいことはわかっているから、いいからインストールして」と思っている場合はコマンドのどこか(最後とか)に "-y" オプションを指定します。つまり、
と入力することで、確認メッセージなしでインストールを始めることができます。シェルスクリプトなどで連続実行したい場合はよく使いますよね。
で、このブログのメインはここからです。需要は少ないかもしれないのですが、「この "-y" の逆のオプションって何だろう?」という疑問が生じて調べてみました。要は「 "yum install" のインストール直前までを実行して、インストールせずに終了する」ようなオプションです。
単純に「 "-n" かな?」と思ったのですが「そんなパラメータ知らん」と怒られてしまいました:
"-n" ではないとしたら、果たしてそんなオプショことがあるのか(そもそも「そんなオプション使うことがあるのか?」と言われそうですが、その件についてはいずれまた)、という疑問が生じ、一度ちゃんと調べてみました。結論としては存在していて、上のエラーメッセージ内にも表示されている "--assumeno" オプションでした。このオプションを付けて実行することで、インストールされる rpm ライブラリに関する(アーキテクチャやバージョン、サイズなどの)情報を表示されるだけでインストールは実行しない、という挙動が可能になります:
インストールは何もせずに "Operation aborted." と表示されてプロンプトに戻ってきました(この挙動は "n" を入力した時と全く同じです)。
インストールしようと思っているライブラリに関する情報だけを収集するようなシェルスクリプトを作るようなケースで役立つ、かもしれない、情報でした。
CentOS / RHEL 系の Linux で rpm パッケージをインストールする際には "yum"("dnf" 派の人もいるかもしれませんが、ここでは "yum" で統一します。内容は同じなので単純に読み替えていただいて大丈夫です)を使う機会が多いと思っています。
この yum を使って、例えば "wget" をインストールしようとすると、
# yum install wget
というコマンドを実行します。すると、
# yum install wget
Updating Subscription Management repositories.
Last metadata expiration check: 3:32:04 ago on Mon Jan 1 05:44:30 2024.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
wget x86_64 1.21.1-7.el9 rhel-9-for-x86_64-appstream-rpms 794 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 794 k
Installed size: 3.1 M
Is this ok [y/N]:
↑のようなメッセージが表示されて、最後に "Is this ok [y/N]:" と確認メッセージが表示されて止まります。「このパッケージをインストールするよ、OK?」と聞かれていて、"y" と入力するとインストール開始、"n" だとインストールせずに終了します("[y/N]" と "N" が大文字になっているのでデフォルトは "n" ということになります。つまりそのままリターンキーを入力すると "n" とみなされます)。
で、この確認メッセージで止まるのが面倒な場合、つまり「正しいことはわかっているから、いいからインストールして」と思っている場合はコマンドのどこか(最後とか)に "-y" オプションを指定します。つまり、
# yum install wget -y
と入力することで、確認メッセージなしでインストールを始めることができます。シェルスクリプトなどで連続実行したい場合はよく使いますよね。
で、このブログのメインはここからです。需要は少ないかもしれないのですが、「この "-y" の逆のオプションって何だろう?」という疑問が生じて調べてみました。要は「 "yum install" のインストール直前までを実行して、インストールせずに終了する」ようなオプションです。
単純に「 "-n" かな?」と思ったのですが「そんなパラメータ知らん」と怒られてしまいました:
# yum install wget -n Updating Subscription Management repositories. usage: yum install [-c [config file]] [-q] [-v] [--version] [--installroot [path]] [--nodocs] [--noplugins] [--enableplugin [plugin]] [--disableplugin [plugin]] [--releasever RELEASEVER] [--setopt SETOPTS] [--skip-broken] [-h] [--allowerasing] [-b | --nobest] [-C] [-R [minutes]] [-d [debug level]] [--debugsolver] [--showduplicates] [-e ERRORLEVEL] [--obsoletes] [--rpmverbosity [debug level name]] [-y] [--assumeno] [--enablerepo [repo]] [--disablerepo [repo] | --repo [repo]] [--enable | --disable] [-x [package]] [--disableexcludes [repo]] [--repofrompath [repo,path]] [--noautoremove] [--nogpgcheck] [--color COLOR] [--refresh] [-4] [-6] [--destdir DESTDIR] [--downloadonly] [--comment COMMENT] [--bugfix] [--enhancement] [--newpackage] [--security] [--advisory ADVISORY] [--bz BUGZILLA] [--cve CVES] [--sec-severity {Critical,Important,Moderate,Low}] [--forcearch ARCH] PACKAGE [PACKAGE ...] yum install: error: unrecognized arguments: -n
"-n" ではないとしたら、果たしてそんなオプショことがあるのか(そもそも「そんなオプション使うことがあるのか?」と言われそうですが、その件についてはいずれまた)、という疑問が生じ、一度ちゃんと調べてみました。結論としては存在していて、上のエラーメッセージ内にも表示されている "--assumeno" オプションでした。このオプションを付けて実行することで、インストールされる rpm ライブラリに関する(アーキテクチャやバージョン、サイズなどの)情報を表示されるだけでインストールは実行しない、という挙動が可能になります:
# yum install wget --assumeno Updating Subscription Management repositories. Last metadata expiration check: 0:09:21 ago on Mon Jan 1 09:30:11 2024. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: wget x86_64 1.21.1-7.el9 rhel-9-for-x86_64-appstream-rpms 794 k Transaction Summary ================================================================================ Install 1 Package Total download size: 794 k Installed size: 3.1 M Operation aborted. #
インストールは何もせずに "Operation aborted." と表示されてプロンプトに戻ってきました(この挙動は "n" を入力した時と全く同じです)。
インストールしようと思っているライブラリに関する情報だけを収集するようなシェルスクリプトを作るようなケースで役立つ、かもしれない、情報でした。