[Ubuntu] 사용 중인 명령어가 포함된 패키지명 검색

[Ubuntu] 사용 중인 명령어가 포함된 패키지명 검색
Photo by Gabriel Heinzer / Unsplash

리눅스를 주제로 블로그를 운영하다보면, 어려운 점이 포스트를 읽은 사용자가 "저는 그런 명령어가 없어요!"와 같은 독자와 필자 간의 환경의 차이점이다. 최대한 많은 사용자에게 적용이 될 수 있도록 포스트를 작성하려고 노력하지만... 매번 시스템을 초기화해서 테스트를 해볼 수도 없는 노릇이니 최대한 그 갭 차이를 줄이려고 테스트환경을 명기해두거나 오류 시의 대처방안 등 여러 설명을 덧붙이곤 한다. 그래도 여전히 너무나 다양한 환경차이는 여전히 극복하기 어려운 것이 현실이다.

이번 포스트에서는 환경차이 중에서 CLI(Command-Line Interface) 환경에서의 명령어(Command)에 대한 갭차이를 줄여보고자 찾아본 자료를 기반으로 작성되었다.[1]


  1. 사실 해당 문서의 링크(참고문서 #1)만 보관해도 될 정도의 수준이지만, 웹상의 문서나 유튜브 동영상 같은 자료는 언제 삭제될 지 모르고.. 찾은 자료에 대해서 이렇게 포스트로 옮기다보면 기억에 각인되는 효과가 있어서 "설명"이라는 살을 덫붙여서 포스트로 만들었다. 만약 원저작자(helperchoi)님이 삭제를 요청하면 본 포스트는 언제든 삭제될 수 있다. ↩︎

A. 테스트 환경

  • OS : Ubuntu 22.04.2 LTS (Jammy Jellyfish)
  • Kernel : 5.19.0-46-generic

B. 명령어

$ which [명령어]
$ dpkg -S [which 결과]

C. 테스트

$ which curl
/usr/bin/curl
$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl

curl 명령어가 없을 수 있는 독자를 위해서 어떤 패키지를 설치해야하는지 안내를 하고 싶었다. 이 경우에는 dpkg -S 명령어를 이용해서 찾으면 된다!

위 경우라면 포스트에 아래처럼 넣어주면 될 것 같다.

curl 명령어가 없으면 아래의 명령어로 패키지를 설치하면 된다.

$ sudo apt install curl

D. 예외사항 - 1

그런데.. 여러 명령어를 테스트해보니 정상적으로 패키지명이 검색되지 않는 명령어들이 있었다. 이 경우는 보통 심볼릭링크와 관련이 있을 것으로 추정된다.

$ which vim
/usr/bin/vim
$ dpkg -S /usr/bin/vim
dpkg-query: no path found matching pattern /usr/bin/vim

vim 명령어를 조회해보니 명령어의 절대경로가 /usr/bin/vim으로 나온다. 그래서 dpkg 명령어로 조회해봤는데 /usr/bin/vim이 있는 패키지가 조회되지 않았다.

$ ls -l /usr/bin/vim
lrwxrwxrwx 1 root root 21  3월 10 10:14 /usr/bin/vim -> /etc/alternatives/vim
$ ls -l /etc/alternatives/vim
lrwxrwxrwx 1 root root 18  3월 10 10:14 /etc/alternatives/vim -> /usr/bin/vim.basic
$ ls -l /usr/bin/vim.basic
-rwxr-xr-x 1 root root 3783632  6월 22 13:08 /usr/bin/vim.basic
$ dpkg -S /usr/bin/vim.basic
vim: /usr/bin/vim.basic

그래서 ls 명령어로 확인해보니 해당 파일은 심볼릭링크로 연결되어있는 파일이었다.

/usr/bin/vim -> /etc/alternatives/vim -> /usr/bin/vim.basic로 다단계의 심볼릭링크로 연결되어있는데 실제로 해당 명령어의 실행파일은 /usr/bin/vim.basic이었던 것이다. 그래서 /usr/bin/vim.basic으로 검색해보니 정상적으로 조회가 됬다.

E. 예외사항 - 2

또 다른 예외로는 ifconfig 명령어였다. 머릿속의 기억으로는 Ubuntu에서 net-tools라는 패키지에 ifconfig 명령어가 포함되어 있는 것으로 알고있었다.

$ which ifconfig
/usr/sbin/ifconfig
$ dpkg -S /usr/sbin/ifconfig
dpkg-query: no path found matching pattern /usr/sbin/ifconfig
$
$
simplism@simplism-xnote:~$ ls -l /usr/sbin/ifconfig
-rwxr-xr-x 1 root root 79024  3월 25  2022 /usr/sbin/ifconfig

그래서 검색했더니 실행파일의 위치가 /usr/sbin/ifconfig였고... 검색했는데 검색실패! 그래서 실행파일이 심볼릭링크인가 봤는데 아니었다.

더 찾아보니...

$ dpkg -S ifconfig
net-tools: /sbin/ifconfig
net-tools: /usr/share/man/de/man8/ifconfig.8.gz
linux-hwe-5.19-headers-5.19.0-45: /usr/src/linux-hwe-5.19-headers-5.19.0-45/tools/hv/hv_set_ifconfig.sh
net-tools: /usr/share/man/man8/ifconfig.8.gz
net-tools: /usr/share/man/pt_BR/man8/ifconfig.8.gz
net-tools: /usr/share/man/fr/man8/ifconfig.8.gz
linux-hwe-5.19-headers-5.19.0-46: /usr/src/linux-hwe-5.19-headers-5.19.0-46/tools/hv/hv_set_ifconfig.sh
$ ls -l /sbin
lrwxrwxrwx 1 root root 8  3월 10 09:36 /sbin -> usr/sbin

경로를 제외하고 ifconfig로만 검색해보니 /sbin/ifconfig가 나왔다. 그래서 /sbin을 확인해보니.... /sbin -> /usr/sbin으로 심볼릭링크가 연결되어 있던 것이다!

결국 실행파일 자체가 심볼릭링크이거나 디렉토리 자체가 심볼릭링크인 경우에는 검색이 정상적으로 되지 않는 것이다.

E. 대응방안

위 ifconfig 명령어와 같이 which 명령어로 조회된 절대경로로 조회되지 않는 경우라면 경로를 제외한 명령어만으로 검색해보면 해당 명령어가 포함된 패키지를 찾을 수 있을 것 같다.

G. 참고문서

  1. 내가 원하는 명령어가 포함된 패키지를 찾는 방법, helperchoi, helperchoi, 2019/10/13

Read more

AI 환각 (AI Hallucination)에 대한 단상

AI 환각 (AI Hallucination)에 대한 단상

ℹ️단상 (斷想, 생각나는 대로의 단편적인 생각) 생각을 어떻게든 적어두지 않으면 시간이 지나 잊혀져서 약간은 두서없을 나의 생각을 적는 다는 의미로 "~에 대한 단상"이라는 글들을 적어보려고 한다. 오픈 AI의 ChatGPT가 촉발한 생성형 AI는 기념비적인 과학기술의 발전으로 진보할 것이라는 기대감과 다른 한 편으로는 이 놀라운 신기술로 촉발될 부작용에

By simplism
[리뷰] 켄싱턴 오르빗 (Kensington Orbit) 트랙볼 마우스

[리뷰] 켄싱턴 오르빗 (Kensington Orbit) 트랙볼 마우스

* 구매처 : 알리익스프레스 * 가격 : 35.15 $ (50,220원) 난 하루 종일 컴퓨터를 사용하는 직업이라서... 모니터, 키보드, 마우스는 중요하다. 키보드는 몇 번에 걸쳐서 바꿔왔지만, 마우스는 일반적인 마우스 -> 버티컬 마우스로 바꿔서 꽤 오랫동안 써왔던거 같다. 버티컬 마우스로 바꾸고나서 손목과 오른 팔의 통증이 많이 사라져서 만족하고 있었는데... QHD 해상도 2대의 모니터를 주력으로

By simplism
[F1] 2024년 시즌초반 감상평 및  팀별 단상

[F1] 2024년 시즌초반 감상평 및 팀별 단상

작년에 이어서 올해도 쿠팡플레이를 통해서 전 시즌 F1 중계를 볼 수 있다. 딱히 다른 스포츠에 대해서 관심이 유독 없는데... 홍대병(마이너 취향??)인건지 사이버포뮬러의 영향(어릴 때 많이 보고.. 어른이 되서도 몇 번을 다시 본 것 같음..)인 것인지 F1이 너무 재미있더라. 넷플릭스에서 F1 다큐시리즈(본능의 질주, 빈디젤이 나오는 분노의

By simplism
[Ubuntu] NFS 클라이언트 설치 및 NFS볼륨 마운트작업

[Ubuntu] NFS 클라이언트 설치 및 NFS볼륨 마운트작업

사용환경 * OS : Ubuntu 22.04 LTS (Jammy Jellyfish) * Dokuwiki : Release 2024-02-06a "Kaos" * NAS : Synology DSM 7.1.1 A. 시작하기 전에.. 미니PC에 dokuwiki 설치하고 본격적으로 운영하기 전에 정기적인 백업을 해야할 것 같다. 그렇다고... 수동으로 주기적으로 하기에는 너무 번거롭고.. 윈도우즈 PC에서 사용하던 백업솔루션이 ubuntu도 지원해서 그 백업솔루션을 설치하기 전에

By simplism