вторник, 17 февраля 2009 г.

Ледниковый период

Блог не мертвый, просто пока самая динамичная часть блога - мой твиттер %) И вообще не будет это блогом про генту, то есть про неё родную хочу конечно писать, но есть и много других интересных тем которые не стоит обделять вниманием.

воскресенье, 2 ноября 2008 г.

Немножко bash - бреда

Видел где-то способ подсчета самых частовызываемых команд в bash, через файл ~/.bash_history.
К сожалению не смог найти источник, так что сочинил на скорую руку сам.
Уверен, что это можно сделать аккуратнее:

$ for I in `sort -u <(egrep -o '^[^./ ]*' .bash_history)`; do echo -n `grep ^$I\$ .bash_history | wc -l`; echo " $I" ;done | sort -rg | head

25 sudo
25 ls
13 dmesg
5 pvs
4 poweroff
4 minicom
4 lvs
3 vgs
2 update-eix
2 mount



А еще я в поиске нормального хайлайтера для кода.

среда, 29 октября 2008 г.

distfiles - файлов много, толку мало

Сегодня я поведую Вам о насущной проблеме забивания /usr/portage/distfiles старыми дистрибутивами пакетов. В принципе при хорошем доступе в интернет смысла хранить дистрибутивы их особо нет, но у меня у самого дома дайлап, да и хороший неограниченный интернет на просторах нашей родины только в крупных городах. Плюс меня не раз ужеспрашивали как правильно почистить distfiles, так и родилась эта идея.

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

Если кому-то непонятно зачем это вот пример:

$ ls nano*

nano-2.0.1.tar.gz nano-2.0.2.tar.gz nano-2.0.3.tar.gz nano-2.0.4.tar.gz nano-2.0.6.tar.gz nano-2.1.5.tar.gz

$ emerge -p nano

[ebuild R ] app-editors/nano-2.1.5

Очевидно, что из всех этих файлов можно оставить только nano-2.1.5.tar.gz, на случай если надо будет пересобрать пакет, а все остальное поудалять нахрен.

Сразу хочу отметить, что перед экзекуцией крайне желательно привести систему в порядок:

# emerge -uDavN world

# revdep-rebuild


Итак, приступим. Для начала нам надо найти все дистрибутивы установленных пакетов. Поможет нам в этом emerge -epf world, которая выдаст нам список линков на загрузку всего, что что стоит в системе, а файлы мы найдем так:

$ emerge -epf world | grep -oP "^(ht|f)tp(s?):\/\/[^\s]*" | sed -r "s/^.*\/(.*?)$/\1/g


Чтобы получить расстрельный список надо сравнить этот список с листингом файлов в /usr/portage/distfiles/ и выкинуть из него общие и уникальные для этого списка коммандой comm:

$ comm -13 <(printf '%s\n' "$(emerge -epf world|grep -oP "^(ht|f)tp(s?):\/\/[^\s]*"|sed -r "s/^.*\/(.*?)/\\1/g")") <(printf '%s\n' "$(ls /usr/portage/distfiles/)")


Ну и последний штрих - отправляем файлы в топку.

В итоге получаем такой скрипт:

$ cd /usr/portage/distfiles
$ comm -13 <(printf '%s\n' "$(emerge -epf world |grep -oP "^(ht|f)tp(s?):\/\/[^\s]*"|sed -r "s/^.*\/(.*?)/\\1/g")") <(printf '%s\n' "$(ls /usr/portage/distfiles/)") | xargs sudo rm


Вот такой "красивый" способ .Если кто-то захочет потестировать предложенный метод - отпишитесь в комментах.Ну и если этот скрипт удалит что-то нужное или снесет всю систему - я не виноват ;)

Удачи

понедельник, 27 октября 2008 г.

Не забыть про молоко!

Прикрутил к GMail сервис Remember The Milk через плагин для фаерфокса. Удобно до жути. Теперь дела, всплывающие в памяти стало проще запоминать и выполнять.
Рекомендую!

emerge world fails?

Gentoo, ночь, emerge -uDavN world. Ты смотришь какое-то время на пробегающие строчки gcc и умиротворенный идешь спать, чтобы утром обнаружить, что emerge свалился на ошибке минуты через 2 после того, как ты ушел. Думаю такая проблема регулярно возникает у гентушников.
Вот как я решил эту проблему.

# emerge -uDavN world; while ((1)) ; do emerge --resume --skipfirst; done


Единственное НО - чтобы прибить Ctrl+С не поможет, но можно так:

<Ctrl+Z>
# pkill emerge
# fg

А утром можно будет спокойно разобраться с проблемными пакетами.