패키지 명령어 이슈 점검 (Linux)
- 인쇄
- PDF
패키지 명령어 이슈 점검 (Linux)
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
Linux 서버를 이용하면서 특정한 패키지의 명령어가 정상 동작하지 않을 때 점검하는 방법을 설명합니다.
주의
- 서버가 생성된 이후에 서버 내부의 설정이나 패키지 정상 여부 확인에 대해서는 네이버 클라우드 플랫폼에서 지원하지 않습니다.
- 사용하는 리눅스 배포판에 대한 최신 공식 문서를 참조하는 것을 권장합니다.
정상적인 명령어를 비교하기 위해서 동일한 OS 버전의 신규 서버를 구축하여 명령어를 실행하고 결과를 비교해 주십시오. 해당 가이드에서는 awk
명령어를 예제로 해당 예제를 사용하여 설명합니다.
CentOS, Rocky Linux
- 명령어 실행 문제가 있는 서버와 신규 서버에 원격 접속을 해주십시오.
- 해당 명령어의 위치 및 설치된 패키지 정보를 비교해서 확인해 주십시오.
[root@rockylinux86 ~]# which awk /usr/bin/awk [root@rockylinux86 ~]# ls -l /usr/bin/awk lrwxrwxrwx. 1 root root 4 Apr 16 2022 /usr/bin/awk -> gawk [root@rockylinux86 ~]# ls -l /usr/bin/gawk -rwxr-xr-x. 1 root root 685712 Apr 16 2022 /usr/bin/gawk [root@rockylinux86 ~]# rpm -qf /usr/bin/gawk gawk-4.2.1-4.el8.x86_64
rpm -V
또는rpm --verify
명령어를 사용하여 패키지가 설치된 이후에 변경된 사항을 확인해 주십시오.
정상적인 경우, 명령어를 실행한 결과로 아무런 출력이 없습니다.
문제가 있는 경우에는 아래와 같은 출력 결과를 확인할 수 있습니다.[root@rockylinux86 ~]# rpm -V gawk-4.2.1-4.el8.x86_64 [root@rockylinux86 ~]#
각 항목은 변경된 내용을 나타내며, 문제를 해결하기 위해 이러한 출력을 참고하여 패키지 변경 사항을 확인할 수 있습니다. 아래의 예제에서는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
파일의 권한을 변경하여 패키지 변경 사항을 보여줍니다.
출력 결과에서[root@rockylinux86 ~]# ls -l /usr/bin/gawk -rwxr-xr-x. 1 root root 685712 Apr 16 2022 /usr/bin/gawk [root@rockylinux86 ~]# chmod o-x /usr/bin/gawk [root@rockylinux86 ~]# ls -l /usr/bin/gawk -rwxr-xr--. 1 root root 685712 Apr 16 2022 /usr/bin/gawk [root@rockylinux86 ~]# rpm -V gawk-4.2.1-4.el8.x86_64 .M....... /usr/bin/gawk
.M.......
은 Mode differs를 나타냅니다. 이를 통해 최초 설치 시의 권한과 현재 권한이 다르므로 변경되었음을 확인할 수 있습니다.- 특정한 패키지의 명령어가 참조하는 라이브러리를 비교하기 위해
ldd
명령어를 사용하여 해당 명령어의 라이브러리를 확인해 주십시오.[root@rockylinux86 ~]# 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@rockylinux86 ~]# rpm -qa | grep httpd httpd-tools-2.4.37-47.module+el8.6.0+985+b8ff6398.2.x86_64 rocky-logos-httpd-86.2-1.el8.noarch httpd-filesystem-2.4.37-47.module+el8.6.0+985+b8ff6398.2.noarch httpd-2.4.37-47.module+el8.6.0+985+b8ff6398.2.x86_64 [root@rockylinux86 ~]# rm -i /usr/share/man/man8/apachectl.8.gz rm: remove regular file '/usr/share/man/man8/apachectl.8.gz'? y [root@rockylinux86 ~]# rpm -V httpd missing d /usr/share/man/man8/apachectl.8.gz [root@rockylinux86 ~]# yum reinstall httpd Last metadata expiration check: 0:01:45 ago on Thu 04 Apr 2024 06:10:40 PM KST. Dependencies resolved. ========================================================================================================= Package Architecture Version Repository Size ========================================================================================================= Reinstalling: httpd x86_64 2.4.37-47.module+el8.6.0+985+b8ff6398.2 appstream 1.4 M Transaction Summary ========================================================================================================= ... 생략 ... Reinstalled: httpd-2.4.37-47.module+el8.6.0+985+b8ff6398.2.x86_64 Complete! [root@rockylinux86 ~]# rpm -V httpd [root@rockylinux86 ~]#
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
파일 내용을 변경하여 패키지 변경 사항을 보여줍니다.
출력 결과에서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
??5??????
은 5 digest를 나타냅니다. 이를 통해 md5sum 결과값이 달라서 최초 설치 시의 파일에서 변경되었음을 확인할 수 있습니다.- 특정한 패키지의 명령어가 참조하는 라이브러리를 비교하기 위해
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:~#
이 문서가 도움이 되었습니까?