패키지 관리자가 해당 명령이 설치된 패키지를 확인할 수 없다는 것은 무엇을 의미합니까?
내가 할 때-
$ sudo dpkg -S /usr/bin/passwd
passwd: /usr/bin/passwd
출력을 보면 패키지에서 설치 passwd
되었음을 추론할 수 있습니다.passwd
그러나 - ftp
, 등과 bash
같은 cat
몇 가지 명령 의 경우 ls
소스 정보는 패키지에 대한 정보를 제공하지 않습니다. 다음 출력은 에 적용되지만 등과 같은 다른 명령의 출력은 bash
정확히 동일합니다.ftp
cat
ls
$ 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
/bin
bin/
$ 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