パッケージコマンド不具合の点検(Linux)
- 印刷する
- PDF
パッケージコマンド不具合の点検(Linux)
- 印刷する
- PDF
記事の要約
この要約は役に立ちましたか?
ご意見ありがとうございます
VPC環境で利用できます。
Linuxサーバを利用しながら、特定パッケージのコマンドが正常に動作しない場合に点検する方法を説明します。
注意
- サーバ作成後のサーバ内部の設定やパッケージの正常有無の確認については、NAVERクラウドプラットフォームではサポートしません。
- 使用する Linuxリリース版に関する最新の公式文書を参照することをお勧めします。
正常なコマンドを比較するために、同じ OSバージョンの新規サーバを構築してコマンドを実行し、結果を比較します。このガイドでは、awk
コマンドをユースケースとして説明します。
CentOS, Rocky Linux
- コマンドの実行に問題があるサーバと新規サーバにリモートアクセスします。
- 当該コマンドの位置とインストールされたパッケージ情報を比較して確認します。
[root@rockylinux88 ~]# which awk /usr/bin/awk [root@rockylinux88 ~]# ls -l /usr/bin/awk lrwxrwxrwx. 1 root root 4 Apr 16 2022 /usr/bin/awk -> gawk [root@rockylinux88 ~]# ls -l /usr/bin/gawk -rwxr-xr-x. 1 root root 685712 Apr 16 2022 /usr/bin/gawk [root@rockylinux88 ~]# rpm -qf /usr/bin/gawk gawk-4.2.1-4.el8.x86_64
rpm -V
またはrpm --verify
コマンドを使用して、パッケージのインストール後に変更された内容を確認します。
正常である場合、コマンドを実行した結果として何も出力されません。
問題がある場合、以下のような出力結果を確認できます。[root@rockylinux88 ~]# rpm -V gawk-4.2.1-4.el8.x86_64 [root@rockylinux88 ~]#
各項目は変更された内容を示しており、問題を解決するためにこれらの出力を参照してパッケージの変更を確認できます。S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ
下記のユースケースでは、/usr/bin/gawk
ファイルの権限を変更してパッケージの変更内容を示します。
出力結果の.M....... は Mode differsを表します。これにより、初回インストール時の権限と現在の権限が異なるため、変更されたのを確認できます。[root@rockylinux88 ~]# ls -l /usr/bin/gawk -rwxr-xr-x. 1 root root 685712 Apr 16 2022 /usr/bin/gawk [root@rockylinux88 ~]# chmod o-x /usr/bin/gawk [root@rockylinux88 ~]# ls -l /usr/bin/gawk -rwxr-xr--. 1 root root 685712 Apr 16 2022 /usr/bin/gawk [root@rockylinux88 ~]# rpm -V gawk-4.2.1-4.el8.x86_64 .M....... /usr/bin/gawk
- 特定パッケージのコマンドが参照するライブラリを比較するために
ldd
コマンドを使用して当該コマンドのライブラリを確認します。[root@rockylinux88 ~]# ldd /usr/bin/gawk linux-vdso.so.1 (0x00007ffd299e3000) libsigsegv.so.2 => /lib64/libsigsegv.so.2 (0x00007fe972598000) libreadline.so.7 => /lib64/libreadline.so.7 (0x00007fe972349000) libmpfr.so.4 => /lib64/libmpfr.so.4 (0x00007fe9720e5000) libgmp.so.10 => /lib64/libgmp.so.10 (0x00007fe971e4d000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fe971c49000) libm.so.6 => /lib64/libm.so.6 (0x00007fe9718c7000) libc.so.6 => /lib64/libc.so.6 (0x00007fe971502000) libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007fe9712d5000) /lib64/ld-linux-x86-64.so.2 (0x00007fe972a48000)
- エラーの原因が見つからない場合は、当該パッケージを再インストールします。
下記のユースケースは httpd(apacheウェブサーバ)の特定ファイルを削除した後、パッケージを再インストールして復旧するプロセスを示します。参考パッケージを再インストールする際に、既存のパッケージと同じバージョンでインストールされるかを確認します。
[root@rockylinux88 ~]# rpm -qa | grep httpd rocky-logos-httpd-86.3-1.el8.noarch httpd-tools-2.4.37-56.module+el8.8.0+1456+d0a01c5e.7.x86_64 httpd-2.4.37-56.module+el8.8.0+1456+d0a01c5e.7.x86_64 httpd-filesystem-2.4.37-56.module+el8.8.0+1456+d0a01c5e.7.noarch [root@rockylinux88 ~]# rm -i /usr/share/man/man8/apachectl.8.gz rm: remove regular file '/usr/share/man/man8/apachectl.8.gz'? y [root@rockylinux88 ~]# rpm -V httpd missing d /usr/share/man/man8/apachectl.8.gz [root@rockylinux88 ~]# yum reinstall httpd Last metadata expiration check: 1:12:34 ago on Tue 06 Feb 2024 05:15:05 PM KST. Dependencies resolved. ================================================================================================================================================== Package Architecture Version Repository Size ================================================================================================================================================== Reinstalling: httpd x86_64 2.4.37-56.module+el8.8.0+1456+d0a01c5e.7 appstream 1.4 M Transaction Summary ================================================================================================================================================== ... 省略... Reinstalled: httpd-2.4.37-56.module+el8.8.0+1456+d0a01c5e.7.x86_64 Complete! [root@rockylinux88 ~]# rpm -V httpd [root@rockylinux88 ~]#
Ubuntu
- コマンドの実行に問題があるサーバと新規サーバにリモートアクセスします。
- 当該コマンドの位置とインストールされたパッケージ情報を比較して確認します。
root@ubuntu2004:~# which awk /usr/bin/awk root@ubuntu2004:~# ls -l /usr/bin/awk lrwxrwxrwx 1 root root 21 Jan 24 2022 /usr/bin/awk -> /etc/alternatives/awk root@ubuntu2004:~# ls -l /etc/alternatives/awk lrwxrwxrwx 1 root root 13 Jan 24 2022 /etc/alternatives/awk -> /usr/bin/gawk root@ubuntu2004:~# ls -l /usr/bin/gawk -rwxr-xr-x 1 root root 711136 Nov 4 2019 /usr/bin/gawk root@ubuntu2004:~# dpkg -S /usr/bin/gawk gawk: /usr/bin/gawk root@ubuntu2004:~# dpkg -l gawk Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-==============-============-=================================================== ii gawk 1:5.0.1+dfsg-1 amd64 GNU awk, a pattern scanning and processing language
dpkg -V
またはdpkg --verify
コマンドを使用して、パッケージのインストール後に変更された内容を確認します。
正常である場合、コマンドを実行した結果として何も出力されません。
問題がある場合、以下のような出力結果を確認できます。Ubuntuの場合、現在は md5sumを確認した結果についてのみ変更された部分を確認します。root@ubuntu2004:~# dpkg -V gawk root@ubuntu2004:~#
下記のユースケースでは、5 digest (formerly MD5 sum) differs
/usr/share/doc/gawk/README
ファイルの内容を変更してパッケージの変更内容を示します。
出力結果で??5?????? は 5 digestを表します。これにより md5sumの結果値が異なり、初回インストール時のファイルから変更されたことを確認できます。root@ubuntu2004:~# ls -l /usr/share/doc/gawk/README -rw-r--r-- 1 root root 3854 Jun 19 2019 /usr/share/doc/gawk/README root@ubuntu2004:~# sed -i '$a TEST...' /usr/share/doc/gawk/README root@ubuntu2004:~# ls -l /usr/share/doc/gawk/README -rw-r--r-- 1 root root 3862 Jan 24 21:33 /usr/share/doc/gawk/README root@ubuntu2004:~# dpkg -V gawk ??5?????? /usr/share/doc/gawk/README
- 特定パッケージのコマンドが参照するライブラリを比較するために
ldd
コマンドを使用して当該コマンドのライブラリを確認します。root@ubuntu2004:~# ldd /usr/bin/gawk linux-vdso.so.1 (0x00007ffe725a8000) libsigsegv.so.2 => /lib/x86_64-linux-gnu/libsigsegv.so.2 (0x00007f7942d3a000) libreadline.so.8 => /lib/x86_64-linux-gnu/libreadline.so.8 (0x00007f7942cea000) libmpfr.so.6 => /lib/x86_64-linux-gnu/libmpfr.so.6 (0x00007f7942c69000) libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f7942be5000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7942bdf000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7942a90000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f794289c000) libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f794286c000) /lib64/ld-linux-x86-64.so.2 (0x00007f7942ffe000)
- エラーの原因が見つからない場合は、当該パッケージを再インストールします。
下記のユースケースは httpd(apacheウェブサーバ)の特定ファイルを削除した後、パッケージを再インストールして復旧するプロセスを示します。参考パッケージを再インストールする際に、既存のパッケージと同じバージョンでインストールされるかを確認します。
root@ubuntu2004:~# dpkg -l |grep apache2 ii apache2 2.4.41-4ubuntu3.15 amd64 Apache HTTP Server ii apache2-bin 2.4.41-4ubuntu3.15 amd64 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.41-4ubuntu3.15 all Apache HTTP Server (common files) ii apache2-utils 2.4.41-4ubuntu3.15 amd64 Apache HTTP Server (utility programs for web servers) root@ubuntu2004:~# rm -i /usr/share/man/man1/a2query.1.gz rm: remove regular file '/usr/share/man/man1/a2query.1.gz'? y root@ubuntu2004:~# dpkg -V apache2 ??5?????? /usr/share/man/man1/a2query.1.gz root@ubuntu2004:~# apt install --reinstall apache2 Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 276 not upgraded. Need to get 95.6 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 http://repo.ncloud.com/ubuntu focal-updates/main amd64 apache2 amd64 2.4.41-4ubuntu3.15 [95.6 kB] ... 省略... Preparing to unpack .../apache2_2.4.41-4ubuntu3.15_amd64.deb ... Unpacking apache2 (2.4.41-4ubuntu3.15) over (2.4.41-4ubuntu3.15) ... Setting up apache2 (2.4.41-4ubuntu3.15) ... Processing triggers for systemd (245.4-4ubuntu3.15) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for ufw (0.36-6) ... root@ubuntu2004:~# dpkg -V apache2 root@ubuntu2004:~#
この記事は役に立ちましたか?