Попросіть встановити програму після "Програма" x "наразі не встановлена"


18

Якщо ви спробуєте виконати не встановлену програму, ви отримаєте повідомлення

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

і замість того, щоб пропонувати вам встановити програму, вам потрібно ввести фактичну команду. Як можна змінити таку поведінку?

Відповіді:


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)

Примітка. Якщо ви отримаєте повідомлення про збій пітона (конкретно AttributeError: 'str' object has no attribute 'decode'), це помилка 1073919 . Виправлення вже доступне для Raring і Saucy. Крім того, ( лише для досвідчених користувачів ) ви можете змінити файл /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py, побачити різницю, що додається до пакету bugreport для рядків, які потрібно змінити.

Редагувати: виправлення тепер випущено у версії 0.3ubuntu7.1 у Raring (SRU) та для 0,3ubuntu8 у Saucy.


1

Моє рішення - це гібрид між безпекою та зручністю:

auto-apt перевіряє доступ до файлів програм, що працюють в його середовищі, і якщо програма намагається отримати доступ до файлу, який, як відомо, належить до невстановленого пакету, auto-apt встановить цей пакет за допомогою apt-get. Ця функція вимагає спритності та судо для роботи. Він також пропонує просту базу даних для пошуку, який пакет містить запитуваний файл.

Це термінальний емулятор, де ви вводите середовище, де кожен доступ до файлів перевіряється за допомогою автоматичного підключення, а якщо його немає, шукайте в базі даних (а-ля apt-file) та завантажуйте та встановлюйте потрібний пакет, а потім дозволяє програмі продовжувати роботу . Ви повинні виконати його як корінь:

sudo auto-apt

Це корисно в тих випадках, коли ви створюєте пакет і не в змозі знаходитись перед екраном, шукаючи кожну помилку налаштування пропущених заголовків тощо.

Це також може бути використане як заміна apt-get + apt-файлу, де ви можете встановити програми, що просто говорять про commandйого виконання.

Ви повинні розуміти, що не слід залишати його відкритим, коли ваша система не виглядає, оскільки це майже так, як ніби ви користуєтеся користувачем root.

Сторінка людини: http://derpi.tuwien.ac.at/cgi-bin/man/man2html?1+auto-apt


0

Автоматична установка була б поганою ідеєю. Якщо ви хочете зберегти деякий текст, ви можете використовувати

sudo apt-get install !!

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

Однак є деякі застереження, як згадували @ eliah-kagan та @gertvdijk у коментарях. Деякі програми не мають такої ж назви пакета, як двійковий файл, який ви виконували б. Також при передачі аргументів на бінарне це може призвести до несподіваних результатів.


Звичайно, я знаю, що моя пропозиція не є чудовим рішенням, але це може спрацювати "досить добре" з урахуванням потреби користувачів.
l3dx

5
Імена команд (ім'я файлу двійкового файлу в системі) не обов'язково збігаються з назвою пакета.
gertvdijk

3
l3dx: Хоча у мене все ще є сумніви (включаючи @ gertvdijk, що назви пакетів та команд часто різні, а також занепокоєння щодо можливих дуже поганих наслідків додаткових аргументів командного рядка, переданих початковій команді), здається, ви натрапили на щось . Після трохи тестування, здається, це працює на практиці краще, ніж (я думаю) це працює в теорії. Я все ж рекомендую розширити цю відповідь для уточнення, попередження та, можливо, для деталізації інших варіантів. У будь-якому випадку, я спростував це, але зняв свою суботу.
Елія Каган

0

Існує кілька методів швидкої установки запропонованого пакету:

  • Додати export COMMAND_NOT_FOUND_INSTALL_PROMPT=1десь як~/.bashrc

    це "найкрутіший" спосіб, хоча, очевидно, не настільки безпечний, але, ймовірно, 90% часу викликає внутрішнє "Спасибі, це саме те, що я хотів, щоб ви зробили!" відповідь.

    (Один з особистих недоліків цього методу полягає в тому, що мені здається, що відповідь важко запам'ятати / шукати, тому я, як правило, досі не використовував її багато.)

  • Якщо ви використовуєте термінал за замовчуванням, ви можете швидко вибрати рядок і клацнути середнім клавішею, щоб вставити його безпосередньо в командний рядок. (Інші термінали або додатки SSH можуть мати різні методи.)

    На практиці я, як правило, знаходжу це досить швидко, і трохи складніше це зробити "випадково", і не вимагаючи жодної попередньої установки, що я, як правило, роблю це замість цього.

  • Але є що сказати - якщо ви можете (або хочете навчитися) швидко вводити - для sudo apt install packagenameпрямого введення тексту .

    Це допомагає вправляти м’язову пам’ять, а також означає, що вам доведеться читати і вводити назву пакета, тобто ви, швидше за все, запам'ятовуєте це в майбутньому. Це також трохи простіше в останніх версіях Ubuntu, оскільки це aptпрацює замість apt-get.


1
Ви, мабуть, мали на увазі ~/.bashrcзамість цього ~/.bash_rc.
edwinksl

Спасибі, я, напевно, думав .bash_profile.
mwfearnley
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.