質問: あるサーバの`yum`のリポジトリを変えたくなくて試験サーバでRPMをダウンロードすることを思いつきました。 `yum`の`downloadonly`でダウンロードしようとしたのですが、試験サーバでは幾つかのモジュールが既にインストールされていて`reinstall`を必要としていました。 ``` パッケージ php-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-cli-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-common-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-gd-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-mbstring-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-mysqlnd-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-pdo-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-soap-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-tidy-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-xml-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです パッケージ php-5.6.31-1.el7.remi.x86_64 はインストール済みか最新バージョンです ``` `reintall`でダウンロードした後に`install`を実行したので全部ダウンロードできたのですが、 ふと、下記のように両方指定出来ないものかと考えました。 ``` yum install reinstall --setopt=protected_multilib=false --skip-broken --downloadonly --downloaddir=. --enablerepo=remi,remi-php56 php php-bcmath php-cli php-common php-dba php-devel php-embedded php-enchant php-fpm php-gd php-imap php-intl php-ldap php-mbstring php-mcrypt php-mysqlnd php-odbc php-pdo php-pear php-pecl-apc php-pecl-apc-devel php-pecl-memcache php-pgsql php-process php-pspell php-recode php-snmp php-soap php-tidy php-xml php-xmlrpc php-zts > yum_module_download.log ``` 上記を走らせて見ると`reinstall`というモジュールを探しにいってしまうのですが、両方指定できる方法はないのでしょうか?
回答: `yum`コマンドの`install`または`reinstall`オプションは同時に指定することはできません。 本来やりたい事はrpmパッケージのダウンロードかと思われるので、もしそうであれば`yumdownloader`コマンドを試してみてください。 `yumdownloader`は`yum-utils`パッケージに含まれるコマンドなので、確認の上インストールしておきます。 ``` $ yum install yum-utils -y $ which yumdownloader /usr/bin/yumdownloader ``` 基本的にはパッケージ名を指定して実行するだけでカレントディレクトリにrpmパッケージをダウンロードすることができますが、他にも`--destdir DIR`で保存先の指定、`--resolve`で依存パッケージも合わせてダウンロードさせることができます。 パッケージ名はワイルドカードでも指定できるので、今回の例であれば以下のように実行するとよいでしょう。 ``` $ yumdownloader --destdir /tmp --resolve php* ```