Як реалізувати пропозицію щодо встановлення пакунків на Debian?


21

Я помітив, що перебуваючи на Ubuntu, якщо я набираю таке:

mc

і він не встановлений, я отримую повідомлення нижче:

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

Однак у Debian такого немає. Він просто дає повідомлення "-bash: / usr / bin / mc: Немає такого файлу чи каталогу". Як я можу реалізувати ту саму функціональність у командному рядку bash на Debian? Так, я знаю, що якщо я хочу запропонувати пакетний пакет, я можу просто здійснити пошук по регулярному вираженню, використовуючи пошук apt-кешу . Однак я сподівався на простішу пропозицію негайно ввести назву програми.

Відповідно до обговорень, функціональність забезпечується командою пакета не знайдено . Однак навіть після його встановлення та встановлення пакету bash-завершення це недоступно для оболонки bash Debian.

Відповіді:


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перш ніж він почав працювати.
Дейв X

9

Пакет Debian видається неповним. README говорить, що ви повинні джерело /etc/bash_command_not_foundу вашому .bashrc. Дивно, що файл не входить до пакету.

Debian command-not-foundпакет заснований на пакеті Ubuntu . Пакет ubuntu здається більш повним у цьому плані.

Вміст версії 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        
}

Додайте ці рядки до свого ~/.bashrc(або /etc/bash.bashrc), і command-not-foundфункція повинна працювати.


1
README невірний, Debian не використовує цей файл. Обробник включений у /etc/bash.bashrc (принаймні в Debian 9), який автоматично запускається інтерактивними оболонками Bash при їх запуску.
hackerb9

Встановлення command-not-foundпакета (версія 0.2.38-4 від debian.org) на MX Linux (база Debian 9 Stretch) не змінила /etc/bash.bashrc і згодом не працювала до додавання рядків у цю відповідь.
Xen2050
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.