いくつかの Centos VM では、シェル スクリプトで、いくつかの MySQL パッケージを削除 (yum 経由) し、次に MariaDB をインストール (rpm 経由) する必要があります。削除には yum を使用します。
yum remove -y mysql-community-client
yum remove -y mysql-community-release
yum remove -y mysql-community-libs
yum remove -y mysql-community-common
現在、一部の VM ではクライアント パッケージがインストールされていない可能性があるため、yum は次のように表示します。
No Match for argument: mysql-community-client
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was
14: PYCURL ERROR 7 - "couldn't connect to host"
接続失敗の原因はファイアウォールなどにあることはわかっています。
私の質問は、
yum に不足しているパッケージを無視するように指示できますか?
または、少なくともNo Match for argument
ミラーなどに接続せずに、 で単に失敗することはできますか?
yum remove -y mysql-community-client
質問のタイトルは、 に続いて を実行するとミラーに接続するという事実を示していますyum remove -y mysql-community-client
が、私は「パッケージがアンインストールされました」に続いて「パッケージは既にアンインストールされています」と表示されるようにしたいと考えています。
問題を言い換えると、問題は RPM にあるのではなく (問題の完全性のために言及しただけです)、yum にあります。X がyum remove X
インストールされている場合は、それを削除します。インストールされていない場合は、ミラーを検索しますが、これは避けたいことです。yum に「X がインストールされていません」と表示して終了してもらいたいのです。
答え1
yum がどのように動作するか、またはどのように動作するべきかについては長々と議論できますが、簡単に言うと次のようになります。
yum --cacheonly remove -y mysql-community-client
おそらくあなたが望んでいるものでしょう。
答え2
mysql-community
私の理解が正しければ、ネットワークアクセスを禁止し、プラグインを無効にし、現在インストールされているパッケージのみをアンインストールしたいということですね。では、
yum --disablerepo="*" --noplugins remove "*mysql-community*" -y
そして、これは glob に一致するインストール済みパッケージにのみ一致します"*mysql-community*"
。ただし、一般的には、個人的には-y
flag を と一緒に使用することは決してありませんremove
。
インストールされている特定のパッケージのみをアンインストールしたい場合は、トーマスからの回答まさにあなたが必要としているものです。
答え3
yum リポジトリからではなくを使用してパッケージをインストールする場合rpm
、参照する関連リポジトリがないため、yum は rpm が削除されたことを判別できません。そのため、その一部 (MariaDB) をべき等にすることはできません。
スクリプトをべき等にしたい場合は、指定rpm -q
されたパッケージに対して を使用して、それがインストールされているかどうかを判断し、その結果を使用して yum を実行するかどうかを決定する方がよい方法です。
rpm
パッケージのインストールに を使用する場合、yum
すぐには気付かれませんが、システムの更新を要求したときに、RPM データベースが yum の外部にインストールされたことを警告します。このため、yum install
RPM セットから MariaDB パッケージをインストールするには を使用する必要があります。