Jak zaimplementować sugestię instalacji pakietu na Debianie?

21

Zauważyłem, że podczas Ubuntu, jeśli napiszę:

mc

i nie jest zainstalowany, otrzymuję następujący komunikat:

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

Jednak w Debianie nie jest to dostępne. Po prostu wyświetla komunikat „-bash: / usr / bin / mc: Brak takiego pliku lub katalogu”. Jak mogę zaimplementować tę samą funkcjonalność w linii poleceń bash na Debianie? Tak, wiem, że jeśli chcę sugestii pakietu, mogę po prostu przeprowadzić wyszukiwanie wyrażenia regularnego za pomocą wyszukiwania apt-cache . Miałem jednak nadzieję na prostszą sugestię od razu po wpisaniu nazwy programu.

Zgodnie z dyskusjami, funkcjonalność zapewnia pakiet nie znaleziono polecenia . Jednak nawet po jego zainstalowaniu, a także zainstalowaniu pakietu bash-complete, nie jest to dostępne w powłoce Debiana bash.

Joel G. Mathew
źródło

Odpowiedzi:

22

Powodem, dla którego instalacja command-not-foundnie zaczęła wyświetlać sugestii dotyczących niezainstalowanych pakietów, było to, że w ramach instalacji przegapiłem małe powiadomienie z dpkg.

Należy uruchomić polecenie update-command-not-foundnatychmiast po uruchomieniu apt-get install command-not-found. W rzeczywistości dpkg monituje o uruchomienie tego polecenia.

Joel G. Mathew
źródło
1
Musiałem także uruchomić apt-get updateprzed uruchomieniem, update-command-not-founda następnie albo otworzyć nową sesję bash, albo source /etc/bash.bash.rc.
jordanbtucker
Zrobiłem apt updateprzed apt install command-not-foundpotem update-command-not-found, a następnie rozpoczął nową powłokę, ale okazało się, że potrzebna inna apt updatei może update-command-not-foundzanim rozpoczął pracę.
Dave X
9

Pakiet debian wydaje się być niekompletny. README mówi, że powinieneś zaopatrywać się /etc/bash_command_not_foundw swoje .bashrc. O dziwo ten plik nie jest zawarty w pakiecie.

command-not-foundPakiet debian oparty jest na pakiecie ubuntu . Pakiet ubuntu wydaje się pod tym względem bardziej kompletny.

Treść wersji ubuntu 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        
}

Dodaj te linie do ~/.bashrc(lub /etc/bash.bashrc), a command-not-foundfunkcja powinna działać.

lesmana
źródło
1
Plik README jest niepoprawny, Debian nie używa tego pliku. Program obsługi jest zawarty w /etc/bash.bashrc (przynajmniej w Debianie 9), który jest uruchamiany automatycznie przez interaktywne powłoki Bash podczas uruchamiania.
hackerb9
Zainstalowanie command-not-foundpakietu (wersja 0.2.38-4 z debian.org) na MX Linux (Debian 9 Stretch base) nie zmodyfikowało /etc/bash.bashrc, a następnie nie działało do czasu dodania wierszy w tej odpowiedzi.
Xen2050,