데비안에서 패키지 설치 제안을 구현하는 방법은 무엇입니까?


21

우분투에서 다음을 입력하면 알 수 있습니다.

mc

설치되어 있지 않으면 아래 메시지가 나타납니다.

The program 'mc' is currently not installed. You can install it by typing: sudo apt-get install mc

그러나 데비안에서는 사용할 수 없습니다. "-bash : / usr / bin / mc : No such file or directory"메시지 만 나타납니다. 데비안의 bash 명령 행에서 같은 기능을 어떻게 구현할 수 있습니까? 예, 원하는 패키지 제안 인 경우 apt-cache search 사용하여 정규식 검색을 수행 할 수 있음을 알고 있습니다 . 그러나 나는 프로그램의 이름을 입력하는 즉시 더 간단한 제안을 원했습니다.

토론에 따라 기능은 command-not-found 패키지에서 제공됩니다 . 그러나 bash-completion 패키지를 설치하고 설치 한 후에도 데비안 bash 셸에서는 사용할 수 없습니다.

답변:


22

설치 command-not-found가 설치 되지 않은 패키지에 대한 제안을 제공하지 않은 이유는 설치의 일부로 dpkg에서 작은 알림을 놓 쳤기 때문입니다.

하나는 실행 update-command-not-found직후 에 명령을 실행해야합니다 apt-get install command-not-found. 실제로 dpkg는이 명령을 실행하라는 메시지를 표시합니다.


1
또한 실행 apt-get update하기 전에 실행 update-command-not-found한 다음 새 bash 세션을 열거 나 source /etc/bash.bash.rc.
jordanbtucker

나는 않았다 apt update전에 apt install command-not-found다음 update-command-not-found다음 새 쉘을 시작,하지만 난 다른 필요 발견 apt update어쩌면 update-command-not-found이 일을 시작하기 전에.
Dave X

9

데비안 패키지가 불완전한 것 같습니다. 추가 정보는 소스해야한다고 말한다 /etc/bash_command_not_found당신에 .bashrc. 이상하게도 그 파일은 패키지에 포함되어 있지 않습니다.

데비안 command-not-found패키지우분투 패키지를 기반으로합니다 . 그 점에서 우분투 패키지가 더 완전한 것 같습니다.

bash_command_not_found 의 우분투 버전 내용 :

command_not_found_handle() {
  if  [ -x /usr/lib/command-not-found ]; then
     /usr/lib/command-not-found -- "$1" 
     return $?
  else
     return 127
  fi        
}

해당 줄을 ~/.bashrc(또는 /etc/bash.bashrc)에 추가 하면 command-not-found기능이 작동합니다.


1
README가 올바르지 않습니다. 데비안은 해당 파일을 사용하지 않습니다. 핸들러는 /etc/bash.bashrc (적어도 데비안 9에서는)에 포함되어 있으며, Bash 대화식 쉘은 시작할 때 자동으로 실행됩니다.
hackerb9

설치중인 command-not-found이후 /etc/bash.bashrc 수정하지 않은 MX 리눅스 (데비안 9 스트레치 기지)에 패키지 (debian.org에서 버전 0.2.38-4)을하고는이 대답에 줄을 추가 할 때까지 작동하지 않았다.
Xen2050
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.