четверг

 

Золотое правило админа

Типичный Одмин
Если кто-то еще не знает, это правило звучит так:

Работает - не трожь!

Теперь собственно сама история. Когда-то у меня стояла OpenSUSE 10.3, в которой был Perl 5.8.8. С выходом OpenSUSE 11 я решил сделать апгрейд, который на первый взгляд прошел удачно. Все было хорошо, пока я не попробовал запустить несколько своих ботов.

Выяснилось, что в 11-й версии Perl проапгрейдился до версии 5.8.10, и основные модули по работе тоже подвергались апгрейду. Все товарищи, кто прямо или косвенно пользовался модулем HTTP::Message скорее всего в логах увидили нечто подобное:

HTTP::Message content not bytes

и после этого долго ломали голову над своим кодом. А на самом деле бага в коде была на стороне мантайнера HTTP::Message, версия libwww-perl-5.810 оказалась глючной до безобразия. И самое интересное, эта версия оказалась в дистрибутиве OpenSUSE 11, поэтому совсем безболезненно апгрейд не прошел.

Да, эта проблема решается апгрейдом libwww-perl до более свежей версии, что собственно я и сделал. Сейчас это libwww-perl-5.814, и пока багов в ней не заметил.

Вот и думай после этого, а нужен ли был апгрейд, если он принес столько геморроя?

Ярлыки: ,


вторник

 

Вышла 11 OpenSuSe

OpenSuSe Logo

19-го июня Novell официально анонсировала выход 11-й версии OpenSuSe. Список ее features доступен на на официальном сайте OpenSuSe, нет смысла детально их описывать здесь.

Ставить 64-битную версию OpenSuSe еще рано, поскольку возникнут проблемы с Java; в частности, с Java-плагином для браузера Firefox. Можно конечно извратиться, и поставить 32-битный Firefox с 32-битным Java-плагином на 64-битную ОС, но это скорее изврат, чем нормальное решение проблемы.

Проблемы с видеокартами ATI Radeon у 11-версии OpenSuSe к сожалению, сохранились. Как отметили на официальном сайте, The ATI drivers cannot be integrated into the openSUSE distribution due of the separate license agreement. Поэтому, если вы являетесь счастливым обладателем видеокарты ATI, вам придется драйвера ставить отдельно, процедура та же самая, что и для установки драйверов ATI для OpenSuSe 10.3.

32-битная 11-я сусе отлично работает с RAM больше 4 Гб, просто надо использовать версию ядра с PAE. В SuSe 10.3 версия ядра с поддержкой оперативки больше 4 Гб называлась bigsmp, но сейчас оно почему-то называется по-другому. Такое ядро позволяет системе видеть до 64 Гб RAM на 32-битной SuSe. Работает устойчиво, проблем не наблюдал. Устанавливается вообще без каких-либо сложностей через Yast.

И что больше всего порадовало, апгрейд системы с версии 10.3 до 11 прошел относительно безболезненно. При апгрейде автоматически отключились все старые репозитории (для версии 10.3), и вместо них были добавлены только основные репозитории для версии 11. Остальные важные репозитории (Packman, Linva, ATI) пришлось подключать вручную, впрочем, как и было в версии 10.3.

При смене версий SuSe слетели некоторые пакеты, например, драйвер fglrx для моей карты ATI Radeon X1650 Series, и mplayer. После ручного добавления репозиториев ATI и Packman и переустановки соответствующих пакетов, все восстановилось. Но все остальные жизненно необходимые вещи (модули Perl, Apache, Openssl, OpenVPN) прошли апгрейд без сбоев. Апгрейд системы займет значительно меньше времени, чем установка системы с нуля; и работает он отлично. И в отличие от Windows, OpenSuSe не меняет Master Boot Record при установке или апгрейде, если ей специально об этом не сказать.

Порадовал 3-й Firefox, который идет вместе с дистрибутивом OpenSuSe 11. Он действительно менее ресурсоемкий и быстрее выполняет javascript; и там наконец-то убрали раздражающие popup'ы менеджера паролей.

Вся процедура апгрейда системы до 11-й версии у меня заняла около полутора часов, из них около часа - сам апгрейд, и с полчаса - установка версии ядра с PAE и настройка 3D-режима видеокарты ATI.

Ярлыки:


пятница

 

Как подружить SonyEricsson K750i и OpenSuSe 10.3

Готовлюсь к длительной поездке в глушь, где доступ в интернет будет возможен только через GPRS от МТС. Как оказалось, подключить мой мобильник SE K750i в качестве GPRS-модема совсем не сложно.

Для этого надо соединить телефон с помощью USB-кабеля с ноутбуком, и проверить, видит ли его система как модем:

# lsusb

Создаем /etc/wvdial.conf:


[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet.mts.ru"
Modem = /dev/ttyACM0
Phone = *99***1#
Idle Seconds = 300
Modem Type = USB Modem
Stupid Mode = 1
Compuserve = 0
Baud = 115200
Auto DNS = on
New PPPD = Yes
Dial Command = ATDT
Ask Password = 0
ISDN = 0
Password = mts
Username = mts


Можно поиграться с настройками скорости соединения. Выше 115200 у меня она не поднималась, обычно она в районе 57600 baud.

Вот и все, дозваниваемся до оператора с помощью команды wvdial, отключаемся от интернета нажатием CTRL+C.

И для удобства, чтобы не запускать wvdial под рутом, можно сделать:
#chmod u+s /usr/bin/wvdial

Ярлыки: ,


понедельник

 

Ставим mod_fcgid для Apache под SuSe 10.3

Недавно решил попробовать MovableType в качестве платформы для своих блогов. Эта платформа мне очень понравилась вот чем:

  • может весь блог сгенерировать в виде статики
  • платформа бесплатная и с открытым кодом
  • поддерживает XML-RPC, что очень облегчает процесс удаленного постинга
  • умеет пинговать другие блогосервисы


Собственно, только из-за генерации статики я и выбрал эту платформу; то же самое умеет делать и Blogger - но у меня все-таки доверие больше софтине с открытым кодом, установленной на моих серверах, чем стороннему бесплатному сервису.

Разочаровал же меня Movable Type тем, что по умолчанию он выполнялся как cgi-скрипт. Слишком много времени уходило на интерпретацию скриптов, чувствовались существенные задержки в работе - но памяти при этом кушалось немного.

Увеличить быстродействие платформы можно двумя способами, прикрутив к Apache mod_perl или заставив выполнять скрипты Movable Type как FastCGI.

Первый вариант сразу отпадает, мне даром не нужен каждый процесс апача, который бы съедал значительный объем памяти из-за загруженного модуля mod_perl; поэтому я и выбрал второй вариант.
Настроить mod_fcgid под Debian на свой Apache 2.2.6 у меня получилось с первого раза совершенно без проблем.

Все свелось буквально к набору только одной команды:

apt-get install libapache2-mod-fcgid

ну и к последующей правке httpd.conf и перезапуску Apache.
Решил сделать нечто подобное и под OpenSUSE 10.3, с помощью Yast установил apache2-mod_fcgid, дописал заветные строчки в httpd.conf и ... получил болт. При выполнении скрипта Perl как Fast CGI стала появляться ошибка:

mod_fcgid: Can't create share memory for size %zu byte

Как оказалось, это лечится добавлением всего лишь одной строчки в mod_fcgid.conf:

SharememPath /var/lib/apache2/fcgid_shm

Для этого модуля сборщики пакета не удосужились прописать одну единственную строчку, которая не позволяла полноценно работать Perl-скриптам как FastCGI. Это действительно зарегистрированный баг OpenSUSE, который в недалеком будущем исправят (я надеюсь).

Ярлыки:


воскресенье

 

Linux: привязываем несколько IP адресов к одной сетевой карте

На Debian / CentOS привязать несколько IP адресов к одной сетевой карте можно с помощью алиасов.
Достаточно прописать в файле /etc/network/interfaces следующую конфигурацию:


auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address XXX.YYY.ZZZ.AAA
netmask 255.255.255.0
network XXX.YYY.ZZZ.0
broadcast XXX.YYY.ZZZ.255
up route add -host AAA.BBB.CCC.DDD dev eth0
up route add default gw AAA.BBB.CCC.DDD
dns-nameservers AAA.BBB.CCC.DDD AAA.BBB.EEE.DDD
dns-search somehost.com
auto eth0:1
iface eth0:1 inet static
address XXX.YYY.ZZZ.BBB
netmask 255.255.255.0
network XXX.YYY.ZZZ.0
broadcast XXX.YYY.ZZZ.255
auto eth0:2
iface eth0:2 inet static
address XXX.YYY.ZZZ.CCC
netmask 255.255.255.0
network XXX.YYY.ZZZ.0
broadcast XXX.YYY.ZZZ.255


После этого перезапускаем сеть и наслаждаемся тремя IP адресами XXX.YYY.ZZZ.AAA,XXX.YYY.ZZZ.BBB, XXX.YYY.ZZZ.CCC на одном физическом интерфейсе eth0.
Привязанные адреса могут находиться и не в одной подсети, но тогда могут возникнуть некоторые проблемы с маршрутизаций; но эта проблема уже разруливается техподдержкой вашего хостера.

Ярлыки: ,


среда

 

Linux: копируем красиво (с прогресс баром)

Все, кто хоть раз использовал wget, видели progress bar скачивания файла. Можно ли что-то подобное сделать и с командой cp?

Легко, как два байта переслать:



#!/bin/sh
cp_p()
{
set -e
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}



результат работы выглядит так:



cp_p /install/suse-10.3.iso /mnt
75% [===========================================> ]



Бесполезно, но... красиво!

З.Ы. Придумал не я, честно подглядел вот здесь.

Ярлыки: ,