В Ubuntu Maverick Meerkat центр приложений созрел до состояния профпригодности, но я по-прежнему предпочитаю управлять APT'ом в командной строке. Правда, сегодняшний разговор не о преимуществах aptitude
, а о магии угадывания.
Если вы напечатали незнакомую для терминала команду, command-not-found
предложит установить недостающий пакет. Выглядит это так:
~ $ midori Программа 'midori' на данный момент не установлена. Вы можете установить её, выполнив: sudo apt-get install midori
Каждый раз копировать конструкцию
sudo aptitude install packagename
совсем не комильфо. Почему бы не упростить себе жизнь? Ребята на launchpad'е услышали молитвы пользователей и реализовали элегантное решение в версии c-n-f за номером 0.2.41. Заинтересованные могут установить пакеты для Lucid или Maverick / Natty. После обновления поведение c-n-f изменится:~ $ midori Программа 'midori' на данный момент не установлена. Would you like to install it now? [Y]
Одним раздражителем меньше ;-)
13 комментариев: ответить
Чудненько!
приятно :)
из zsh работает?
@Leolik
Такие приятные мелочи здорово помогают в повседневном использовании. Давно искал нечто подобное.
@develop7
В описании пакета сказано, что работает он через обработчик для функции command_not_found. Не знаю, есть ли она в zsh.
@Dr.AKULAvich В zsh есть такой обработчик.
Вот пример:
function command_not_found_handler(){
echo "Command $0 was not found.\n Seeing possible alternatives:"
if [ -f /etc/fedora-release ] ; then
yum search $0
elif [ -f /etc/debian_version ] ; then
apt-get search $0
elif [ -f /etc/arch-release ] ; then
yaourt -Ss $0
fi
}
Обновил хэндлер, выложил на pastebin - http://uthark.pastebin.com/Tekq57z2
@uthark
Спасибо за подробности. Судя по функции, изначально механизм угадывания проще: запускается поиск пакета. В Ubuntu c-n-f поставляется с файлом scan.data, содержащим названия пакетов (ведь название команды может не совпадать с названием пакета). Поэтому ваш вариант не всегда правильно обработает аргумент $0.
@Dr.AKULAvich Да, я знаю, что это не всегда работает. Но в большинстве случаев мне этого достаточно. :)
Это может стать раздражителем для тех кто знает что делает.
У меня установка - "aI mc"
А aI это алиас, apt-get install, все просто :)
Видимо в линуксе все стали пользоваться убунтой или дебианом, для тех кто не пользуется apt и sudo.
>> Ребята на launchpad'е услышали молитвы пользователей
Не те молитвы они слышат: радикально улучшить качество дистрибутива, устранить федороподобные глюки при обновлении (непрописывание ядра в GRUB, невозможность стартовать иксы), что-то сделать с тормозным гномом (почему в дебиане он быстрее!?)... [далее офтопик]
По теме. Как хотишь, Акулович, а по-моему это спорное решение. Особенно когда ты не первый день в системе и всё, что надо, уже установлено. Народ требует огласить весь список зависимостей :-)
@uthark
Согласен. Меньше телодвижений, если знаешь, что набрал название правильно.
@zahardzhan
Не думаю, что новичку приходится долго терзать терминал. А остальным, почему бы нет? Хуже не стало, на мой взгляд.
@satory
ОК, просто, отлично. А перепечатать название пакета всё равно придётся :-)
@Анонимный
Прошу пардону, не понимаю, о чём речь.
@virens
Ну дык, куда Ubuntu до stable ветки Debian? Про гном некорректное сравнение: в Ubuntu много свистелок прикручено, которые в upstream'е гнома не были и вряд ли появятся.
> Как хотишь, Акулович, а по-моему это спорное решение. Особенно когда ты не первый день в системе и всё, что надо, уже установлено.
Это для неутомимых экспериментаторов, коим я отчасти являюсь. Запускаю какой-нибудь однострочник, а программы в обжитом окружении нетути. Подтвердил намерения — готово, пакет в системе. Такой примерно сценарий.
Зависимости: python (< 2.7), python (>= 2.6), python-central (>= 0.6.11), python-apt, command-not-found-data, python-gdbm, lsb-release
мерси попкорно, пригодится:)