Попросить установить программу после того, как «Программа« x »в настоящее время не установлена»

18

Если вы попытаетесь выполнить программу, которая не установлена, вы получите сообщение

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

и вместо того, чтобы предлагать вам установку программы для вас, вам нужно ввести фактическую команду. Как можно изменить это поведение?

    
задан Gerhard Burger 17.06.2013 в 12:00
источник

4 ответа

17

Пакет, отвечающий за это поведение, - ​​команда не найденная , и он уже включает желаемое поведение, хотя по умолчанию он отключен. Вы можете включить его, добавив следующую строку в ваш ~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

Теперь поведение изменено на

The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)

Примечание: Если вы получили сообщение о сбое python (в частности, AttributeError: 'str' object has no attribute 'decode' ), это ошибка 1073919 . Исправление уже доступно для Raring and Saucy. В качестве альтернативы ( только продвинутые пользователи ) вы можете изменить файл /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py , см. Diff, прикрепленный к bugreport для строк, которые необходимо изменить.

Изменить: Исправление теперь выпущено в версии 0.3ubuntu7.1 в Raring (SRU) и для 0.3ubuntu8 в Saucy.

    
ответ дан Gerhard Burger 17.06.2013 в 12:00
источник
1

Мое решение - это гибрид между безопасностью и комфортом:

  

auto-apt проверяет доступ к файлам программ, запущенных в его    средах, и если программа пытается получить доступ к файлу, известному    находятся в удаленном пакете, auto-apt будет устанавливать это    пакет с использованием apt-get. Для этой функции требуется apt и sudo.    Он также предоставляет простую базу данных для поиска того, какой пакет содержит    запрошенный файл.

Это эмулятор терминала, в который вы входите в среду, в которой каждый доступ к файлам проверяется вручную, а если он не существует, он ищет в базе данных (a la apt-file ) и загружает и устанавливает желаемый пакет, затем позволяет программе продолжить работу. Вы должны выполнить его как root:

sudo auto-apt

Это полезно в случаях, когда вы создаете пакет и не в настроении находиться перед экраном, ищем каждую ошибку конфигурации для отсутствующих заголовков и т. д.

Это также можно использовать как замену apt-get + apt-file, где вы можете устанавливать программы, просто указывая command для ее выполнения.

Вы должны понимать, что вы не должны оставлять его открытым, когда ваша система не просматривается, поскольку это почти так, как если бы вы использовали пользователя root.

Страница пользователя: Ссылка

    
ответ дан Braiam 17.08.2013 в 02:47
0

Автоматическая установка будет плохой идеей. Если вы хотите сохранить некоторую типизацию, вы можете использовать

sudo apt-get install !!

, где !! будет заменено последней командой из истории. Вероятно, вы тоже можете сделать это псевдонимом, но я не знаю, как добавить !! , не оценивая его.

Есть некоторые предостережения, хотя, как упомянуто в @ eliah-kagan и @gertvdijk в комментариях. Некоторые программы не имеют того же имени пакета, что и исполняемый файл. Кроме того, при передаче аргументов в двоичный файл это может привести к неожиданным результатам.

    
ответ дан l3dx 16.08.2013 в 09:25
0

Существует несколько способов быстрой установки предлагаемого пакета:

  • Добавьте export COMMAND_NOT_FOUND_INSTALL_PROMPT=1 к чему-то вроде ~/.bashrc

    это «самый крутой» способ, хотя, очевидно, не совсем безопасный, но, вероятно, 90% времени вызовет внутреннюю «Спасибо, это именно то, что я хотел, чтобы вы сделали!» Ответ.

    (Один личный недостаток этого метода состоит в том, что я, кажется, нахожу ответ трудным запомнить / искать, поэтому я, как правило, не использовал его до сих пор.)

  • Если вы используете терминал по умолчанию, вы можете быстро выбрать линию и средний щелчок, чтобы вставить ее непосредственно в командную строку. (Другие терминалы или приложения SSH могут иметь разные методы.)

    На практике я, как правило, считаю это достаточно быстрым, и немного сложнее сделать «случайно», и без каких-либо предварительных настроек, я склонен это делать.

  • Есть что сказать, хотя - если вы можете (или хотите учиться) быстро набирать - для непосредственного ввода sudo apt install packagename .

    Это помогает вам осуществлять свою мышечную память, а также означает, что вам нужно читать и вводить имя пакета, а это значит, что вы, скорее всего, будете легче запоминать его в будущем. Это также немного проще в более поздних версиях Ubuntu, потому что apt работает вместо apt-get .

ответ дан mwfearnley 17.08.2016 в 22:36