sudo rpm -eを使用したRPMの削除に失敗しました

sudo rpm -eを使用したRPMの削除に失敗しました

を使用しようとすると、sudo次のようになります。

sudo rpm -e mypackage  
rpm -qa | grep mypackage

パッケージがまだリストされていることを確認しました!ただし、rpm -e実行時に明らかなエラーはありません。これにより、このパッケージが依存する他のパッケージを削除できなくなります。

いくつかの調査の最後に、パッケージにアンインストール後にスクリプトが含まれていることがわかりましたが、失敗したようです。 script-let はディレクトリの削除を試みます。

rm -rf /some_directory

その後、このスクリプトをバイパスするとパッケージが削除されることがわかりました。その場合は、次のようにしてください。

sudo rpm -e --noscripts mypackage  
rpm -qa | grep mypackage

これにより、パッケージはリストされなくなります。今私の質問は、なぜこのようにsudo単純なスクリプトが実行されないようにブロックするのか、そして2番目にrpmコマンドが問題を報告しないのはなぜですか?

しかし、次のコマンドシーケンスも機能するため、ディレクトリの削除は確実に可能です。

sudo rm -rf /some_directory  
sudo rpm -e mypackage  
rpm -qa | grep mypackage

私の制御下にないrpmパッケージを適切に削除するには、信頼性が高く普遍的な方法が必要であるため、これらのどれも実際に許容可能な解決策ではありません。他のユーザーが実行できる必要があるスクリプトを作成しているため、rootとしてこれを実行することもできません。

最後に、必死にsudoの-Hオプションを試しました。

sudo -H rpm -e mypackage

これでこれがうまくいくようですが、設定がなぜ影響を与えるのかを$HOME説明できる人はいますか?/root私の作業環境には厳しいプロセスがあるため、説得力のある主張がなければそれを解決策として提出することはできません。つまり、これがなぜ-H必要なのかを説明し、私のスクリプトが強力であることを証明できるはずです。残念ながら、私のコンピュータで動作しているようだと言うだけでは、sudo -H上司を満足させることはできません!

ここにいる一部の専門家が何が起こっているのかを説明できることを願っています。どうぞよろしくお願いします!

ベストアンサー1

今は説明を直接見つけましたが、後で他の人にも役立ちます。ルートのホーム領域に存在しない.rpmmacrosというファイルを私のホーム領域に見つけました。したがって、sudoを呼び出すときに-Hを設定すると影響を受けます。

この.rpmmacrosファイルは%_topdirをアンマウントされたディレクトリ(実際にはクリアケースvob)に設定します。ディレクトリをマウントしたりファイルを削除したりすると問題が解決しました。つまり、-Hオプションを使用せずにRPMを削除できました。

おすすめ記事