dpkg-query: 경로 일치 패턴 /usr/bin/bash를 찾을 수 없습니다.

dpkg-query: 경로 일치 패턴 /usr/bin/bash를 찾을 수 없습니다.

패키지 관리자가 해당 명령이 설치된 패키지를 확인할 수 없다는 것은 무엇을 의미합니까?
내가 할 때-

$ sudo dpkg -S /usr/bin/passwd 
passwd: /usr/bin/passwd

출력을 보면 패키지에서 설치 passwd되었음을 추론할 수 있습니다.passwd

그러나 - ftp, 등과 bash같은 cat몇 가지 명령 의 경우 ls소스 정보는 패키지에 대한 정보를 제공하지 않습니다. 다음 출력은 에 적용되지만 등과 같은 다른 명령의 출력은 bash정확히 동일합니다.ftpcatls

$ sudo dpkg -S /usr/bin/bash
dpkg-query: no path found matching pattern /usr/bin/bash

그래서 위 출력이 무엇을 의미하는지 혼란스러워요. 이러한 명령은 쉘이나 커널에 내장되어 있습니까? (명령/utils 가 coreutils 패키지의 일부 ls이고 man ls 또는 cat이 이를 확인했기 때문에 그렇지 않은 것 같습니다 .)cat

그렇다면 패키지 관리자는 무엇을 의미합니까?명령이 설치된 패키지를 확인할 수 없습니다.

관찰 참고사항:

$ sudo apt list coreutils
Listing... Done
coreutils/focal,now 8.30-3ubuntu2 amd64 [installed,automatic]

그리고

apt show coreutils | grep -Ew "ls|cat" 

정제

특히 이 패키지에는
다음이 포함됩니다.고양이chcon chgrp chmod chown chroot cksum comm cp csplit 컷 날짜 dd df dir dircolors dirname du echo env 확장 expr 요소 false Flock fmt 축소 그룹 헤더 호스트 ID 설치 조인 링크 ln 로그 이름엘에스md5sum mkdir mkfifo mknod mktemp mv nicenl nohup nproc numfmt

편집 - Stephens의 답변을 따릅니다. (별도의 질문으로도 게시되었습니다 -Linux에서 하드 링크를 효과적으로 추적하는 방법은 무엇입니까?
소프트 링크는 처리하기 쉽지만 하드 링크는 원본 파일을 쉽게 추적할 수 없습니다.

$ ll -i /usr/bin/bash /bin/bash  
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash*  
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /usr/bin/bash*

위의 내용은 예상대로입니다. 멋지네요.

$ find / -samefile /bin/bash 2>/dev/null
/usr/bin/bash

다시 예상한 대로 - 문제 없습니다.

find / -samefile /usr/bin/bash 2>/dev/null
/usr/bin/bash  

이것은아니요시원한. 이제 조직 파일을 어떻게 추적할 수 있나요?

이상함 - 다음도 도움이 되지 않습니다.

$ find / -inum 1310813 2>/dev/null
/usr/bin/bash

답변1

dpkg-query: no path found matching pattern /usr/bin/bash

패키지 /usr/bin/bash(드롭) 배송이 없음을 의미합니다. dpkg -S대안, 심볼릭 링크 등을 무시하고 배송된 패키지 콘텐츠를 검색합니다.

dpkg -S /bin/bash

패키지가 배송되었으므로 찾을 수 있습니다 /bin/bash.

또한보십시오:

$ dpkg -L bash|grep bin/bash
/bin/bash
/usr/bin/bashbug

로 시작하는 cat및 에도 동일하게 적용됩니다 . 이 경우 명령을 찾는 가장 좋은 방법은 접두사가 붙은 명령을 찾는 것입니다 .ls/binbin/

$ dpkg -S bin/bash
bash: /usr/bin/bashbug
bash: /bin/bash

ftp 그러나 /usr/bin그것을 찾으려면 다음을 사용하십시오 readlink.

$ dpkg -S $(readlink -f /usr/bin/ftp)
ftp: /usr/bin/netkit-ftp

관련 정보