よく使うパッケージ依存やアプリサーバの動作問題を解決するのに役立つコマンド
2019/12/03
2019/12/23
タグ: CentOS6, CentOS7, パッケージ依存, 依存関係, 回避策
Linuxでパッケージをインストールしているとよく起こる依存関連の問題。アプリのバージョンごとに同じライブラリーでも、別のライブラリーバージョンを使っていると依存関係でエラーが発生する。また、動作しないパッケージを調べる時に、そもそもどこにどんなファイルが設置されたのかわからないときがある。そんな時に使えるコマンドを覚えておきましょう。
既にフォルダーにあるrpmファイルがどのようなファイルを展開するのか調べる
1 |
# rpm -qlp ./php73-common.x86_64.rpm |
ファイルの由来を調べてパッケージを突き止める。
1 |
# rpm -qf /etc/httpd/conf/httpd.conf |
これからインストールしようとしているパッケージがどのようなファイルを展開するのか調べる。
1 2 |
# yum install yum-utils # repoquery --list php73-common |
実行プログラムがどんなファイルをハンドルしているか調べる
アプリサーバの機能の一部が動かないと思う時は便利。straceで掴んでいるファイルをデバッグできる。Linuxの世界ではそもそも設定が正しくても動かないものもある。バグだったり、使用モードの違いで、正規リリースでは動かず、オプションを変えてRPMの再構築が必要なものとかもたまにある。その判断を行う場合に私はよく使っています。
1 2 |
# yum install strace # strace /sbin/httpd -M |
プログラムがどのようなライブラリーを参照しているか調べる。
ltraceは共有ライブラリーの関数呼び出しをトレースする関数でこれもまた非常に有益なツールです。バージョン違いのライブラリーを参照していないか、ライブラリーのどの箇所でエラーが起きたのか?ライブラリーを読み込めていないのでは?などを調べる時に使います。ときには応急処置でこれで調べた結果を元に呼び出し元のプログラムのバイナリーにパッチをかけてライブラリーの呼び出す先を変えたりするのに使っています。
1 2 3 4 |
# yum install ltrace # ltrace -o /var/log/ltrace.log wget https://ja.wikipedia.org # grep SSL_ /var/log/ltrace.log |