воскресенье, 9 сентября 2007 г.

archlinux... eine kleines arschloch "I"

всем начинающим - читать:
http://citkit.ru/articles/archlinuxcrux/

что привлекло (помимо arschloch-а) - возможность комбинировать систему из прекомпиленных пакетов и собранных вручную. имеет смысл собирать:

1. ядро (это сэкономит трафик и имеет ещё пару-тройку преимуществ)
2. пакеты мультимедиа (ffmpeg, mplayer, x264 и т.д.)
3. WM/DE (как пример: либо тянуть 60мб на очередной апдейт kdebase + kdegraphics + kdelibs или вытянуть патч на исходники в несколько десятков килобайт - это справедливо и в отношении ядра)

допустим, у нас одноядерный процессор без HT - нужно ли нам ядро с SMP? нужен ли нам SMP для 4-х ядерного проца по умолчанию? нужно ли нам качать пакет в 30мб на очередном обновлении или патч в 40кб (есть разница, не так ли)?

если мы принимаем волевое решение строить комбинированную систему (пакеты + своя сборка при помощи ABS) нам не помешает создать скрипт для обновления этой системы. очевидно, что собираемые вручную пакеты мы внесём в IgnorePkg и при
$ pacman -Syu
нам дадут знать о различиях в версиях пакетов на нашей машине и в репозиториях арча. но как-то неудобно выискивать
эту разницу в цифирьках на глазок. рассмотрим следующий детский скриптец:

$ cat ~/bin/sys_update

#!/bin/sh
if [ `pacman -Ss freetype2 | grep current | awk '{printf $2}'` != \
`pacman -Q | grep freetype2-lcd_ | awk '{printf $2}'` ]
then echo -e '\E[37;31m'"\033[1mFreetype2-lcd_ SHOULD BE UPDATED!\033[0m"
else echo -e '\E[37;44m'"\033[1mFreetype2-lcd_ is ok\033[0m"
fi
if [ `pacman -Ss kernel26 | grep current | awk '{printf $2}'` != \
`pacman -Q | grep kernel26 | awk '{printf $2}'` ]
then echo -e '\E[37;31m'"\033[1mKernel26 SHOULD BE UPDATED!\033[0m"
else echo -e '\E[37;44m'"\033[1mKernel26 is ok\033[0m"
fi
if [ `pacman -Ss kqemu | grep extra | grep kqemu\ | awk '{printf $2}'` != \
`pacman -Q | grep kqemu\ | awk '{printf $2}'` ]
then echo -e '\E[37;31m'"\033[1mKqemu SHOULD BE UPDATED!\033[0m"
else echo -e '\E[37;44m'"\033[1mKqemu is ok\033[0m"
fi
if [ `pacman -Ss ntfs-3g | grep extra | grep ntfs-3g\ | awk '{printf $2}'` != \
`pacman -Q | grep ntfs-3g\ | awk '{printf $2}'` ]
then echo -e '\E[37;31m'"\033[1mntfs-3g SHOULD BE UPDATED!\033[0m"
else echo -e '\E[37;44m'"\033[1mntfs-3g is ok\033[0m"
fi
if [ `pacman -Ss truecrypt | grep extra | grep truecrypt\ | awk '{printf $2}'` != \
`pacman -Q | grep truecrypt\ | awk '{printf $2}'` ]
then echo -e '\E[37;31m'"\033[1mtruecrypt SHOULD BE UPDATED!\033[0m"
else echo -e '\E[37;44m'"\033[1mtruecrypt is ok\033[0m"
fi
sudo pacman -Syu
sudo abs
# EOF

вот теперь глазоньки ломать не надо. отслеживаются изменения в пакетах truecrypt, ntfs-3g, kernel26, kqemu и freetype2. неплохим началом будет запихать в cron что-то наподобие:

$ cat ~/bin/sys_settings_backup

#!/bin/sh
cd /backup_folder
sudo tar -cvvjf "`date +%m%d%Y`_etc.tar.bz2" /etc
sudo tar -cvvjf "`date +%m%d%Y`_var_lib_pacman.tar.bz2" /var/lib/pacman
# EOF

теперь можно покуражиться. если у вас нет острой необходимости (понимаю, что винт не резиновый, но всё же) - не стоит делать вот так:

$ sudo pacman -Scc

это моветон, особенно для экспериментаторов. ежели кто желает получить "домашнее задание" - может нарисовать скриптик для бэкапа/восстановления разрешений на файлы в системе (вариантов решения тут может быть масса) или скриптик для удаления старых версий скачанных ранее файлов из /var/cache/pacman/pkg/ (опять же только если всё нормально работает и нет необходимости откатываться на более ранние версии софта). иногда встречаю на форумах замечания о том, что компиляция своего софта из ABS в каталоге, отличном от /var/abs/local/, может привести к нежелательным последствиям - не сталкивался, собираю всё в домашней директории. сборку всего и вся логично вести PKGBUILD файлами и не пытаться самовольничать с ./configure && make && sudo make install, что в арче стоит приравнять к одному из самых глупых поступков. параметры компиляции при makepkg можно поменять в файле /etc/makepkg.conf. что именно менять - разжёвано здесь: http://gcc.gnu.org/onlinedocs/. вопрос в том, стоит ли?

$ cat /etc/makepkg.conf | grep -v \#

FTPAGENT="/usr/bin/wget --continue --passive-ftp --tries=3 --waitretry=3 --no-check-certificate"
CARCH="i686"
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -mtune=generic -O2 -pipe"
CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe"
BUILDENV=(fakeroot !distcc color !ccache)
OPTIONS=(strip !docs libtool emptydirs)
INTEGRITY_CHECK=(md5)
DOC_DIRS=(usr/{,share/}{info,doc,gtk-doc} opt/gnome/{,share/}{info,doc,gtk-doc})


настоящие джедаи обязаны подружиться с командой makeworld (пожелаю им всяческих успехов в этом нелёгком деле).

Ночь. Лежу без чужой жены
Кулер ревет, словно в жопе
Я Дженту компИлю для рОдной страны
Назло буржуазной Европе
alv (c)

конечно же AUR (http://aur.archlinux.org/) спасёт отцов демократии от недостатка софта. всё равно чего-то не нашли? - так сделайте пакет и залейте в AUR самостоятельно, хватит хныкать из конца-то в конец. ваш покорный слуга внёс свой махонький вклад в виде 2-х пакетов (один из которых мало кому пригодится, о чём честно написал в комментариях к пакету):

igmpproxy
freetype2-lcd_

при работе с этой системой (равно как и с любой другой) будьте крайне внимательны к конфигам сервисов, стартовым скриптам, сообщениям при загрузке и т.п. - это именно то поле, на котором славно порезвились пьяные в дымину сапёры с неограниченными боеприпасами. не хочу сказать, что всё плохо (есть варианты "гораздо мрачней"), но помнить о нюансах стоит (на эту тему - изумительный анекдот, как Петька спрашивал у Чапая про эти самые "нюансы", Чапай объяснил в "классическом стиле", загнув Петеньку раком). сразу бросается в глаза отсутствие опции "status" в /etc/rc.d/ скриптах. несомненно, что все должны знать о каталоге /var/run/, но уже некрасиво. дай Бог памяти, с тем же snort-ом повозился чуток дабы заставить работать, а не имитировать бурную деятельность. было очень забавно учиться особенностям работы и настройки iptables из /etc/rc.d/iptables (справедливости ради замечу, что далеко не все пользователи SuSE знают о наличии и возможностях интересного файлика - /etc/sysconfig/SuSEfirewall2) - всё это несомненно придётся по душе пользователям Slackware, где Патрик оттягивается с подобными "нюансами" по полной программе. было что-то ещё из этой же оперы, да запамятовал. расслабляться однозначно не стоит. каждый дистрибутив имеет эти свои "фичи": немного внимания, времени, терпения - вот и всё, что нужно для попадания в "Страну Пе*датию" (c) (где жизнь без забот и всё такое прочее...). тут сам собой напрашивается вывод, что все дистрибутивы - одинаковы, все мужики - гхм... слегка озабочены и от них плохо пахнет, а солнце смахивает на карманный фонарик.

на этой оптимистичной ноте позвольте завершить первую часть опуса "Eine Kleines Arschloch" и откланяться...

2 комментария:

Анонимный комментирует...

Здрасьте,это Аттила с Юнихинфо.
Вот.
Прочитал не без интереса, спасибо.
Только вот слово "ньюанс", вообще говоря, пишется бэз мягкого знака. Так что там, где оно без кавычек...
Вот.
Спасибо за заметку!

sda комментирует...

эх... как был неграмотным - так и остался. спасибо, поправил. надо озаботиться плагинами на проверку орфографии или сразу всё в html-е загружать...