Надоело сидеть на бекпортах и Сиде - а тут все "из коробки", такое готовое, стабильное и дебьяновое =) Не удержался, проапдейтил Lenny. В целом все очень хорошо описано в информации о выпуске. Если делать строго по шагам проблем быть не должно. Особо советую обратить внимание на:
- отключение всех сторонних репозитариев - включая testing, unstable, backports;
- апдейт udev и ядра (сначала - ядро, потом - udev);
- тонкости с переименовыванием блочных устройств и установкой Grub (актуально, только если рут-партиция НЕ на LVM), и вообще надо на Grub2 переходить, что бы не отстовать от моды - говорят, третья версия Груба будет включать не только
блекджек и шлюхшахматы и поэтесс, но и графический оконный интерфейс с выходом в интернет, функциями мультимедиа-сервера и поддержкой редактирования популярных форматов документов ;) - отсутствие проприетарных прошивок в ядре - в том числе на сетевые карты (мне пришлось сделать после установки нового ядра, до ребута apt-get install firmware-realtek что бы не ехать в гости к серверу =). Вот тут человек подробнее пишет, где искать все эти "несвободные" прошивки. В кратце - в репозитории non-free =)
- СтОит проверить все сгенерированнве конфиги vimdiff-ом, сначала найдя, где они лежат:
find /etc -type f -iregex '.+\.\(ucf\|dpkg\)-.+'
(для тех, кто в танке - мегахелп по vimdiff)
Основные моменты, которые пришлось обрабатывать напильником:
- Shorewall дорос до версии 4.4. По-умолчанию теперь идет перловый компилятор. Мне его раньше как-то неохота было настраивать... оказалось - зря! Правила компиляются меньше секунды. Тогда как раньше все измерялось десятками секунд. Подробно переход описан на сайте Shorewall в руководстве по миграции. В целом ничего сложного, только строго по мануалу.
- slapd перешен на новый формат конфигов cn=config. При установке он автоматом конвертит старый конфиг в новый. Не смотря на то, что в новом формате много удобностей - таких как изменение параметров каталога "на лету", любым стандартным средством работы с каталогом и без необходимости ручного редактирования - мне он не очень по душе пришелся. Поддержку старого формата еще не выпилили, так что для того, что бы вернуть все
в задобратно, на старый формат текстового конфига, достаточно сделать:mv /etc/ldap/slapd.conf.old /etc/ldap/slapd.conf
Можно оставить новый конфиг, но редактировать старый текстовый - понадобится команда конвертации из старого формата в новый:
rm /etc/ldap/slapd.d
slaptest -f
-F
- dhcp3-server не проапгрейдился автоматом до isc-dhcp-server из-за установленного dhcp3-server-ldap, пришлось сносить/ставить заново:
apt-get remove dhcp3-server dhcp3-server-ldap dhcp3-client dhcp3-common
apt-get install isc-dhcp-server isc-dhcp-server-ldap isc-dhcp-client
- Asterisk в дистрибутиве идет версии 1.6.2. У меня он же стоял из бекпортов, так что проблем не было =) Однако, при миграции с 1.4 были нюансы, много, все сейчас не вспомню. Конфиги пришлось брать из дистрибутива 1.6 с долгим и мучительным переносом настроек вручную.
Что точно пришлось сделать на новом дистрибутиве - проапдейтить модули Dahdi для работы MeetMe:
aptitude install dahdi dahdi-source dahdi-firmware-nonfree
m-a a-i dahdi
dpkg-reconfigure dahdi - Hylafax благодаря новой системе параллельного старта сервисов начал подниматся раньше iaxmodem-а - что приводило к отсутствию факса при ребуте при определенных обстоятельствах и лечилось ручным рестартом сервисов. Исправить можно правкой инит-скриптов так, что бы Hylafax стартовал вместе с iaxmodem-ом:
sed -i~ -e 's/\(# Should-\(Start\|Stop\): .\+\?\)$/\1 iaxmodem/g' -e 's/\(\( iaxmodem\)\)\+/\1/g' /etc/init.d/hylafax
- С Samba проще. В дистрибутиве 3.5.6, у меня уже стояла бекпортнутая. Но с ней особых проблем и при первоначальной миграции не было. Единственное, дабы избежать проблемы с пустым "Сетевым окружением" и для исправления коннекта к локальному LDAP-у добавил в smb.conf:
os level = 255
ldap ssl = no
ldap ssl ads = no
- У rsnapshot частично поломались скрипты бекапа ldap-каталога (баг slapd/slapcat в Debian) и мой скрипт по бекапу баз. Для первого есть dirty-hack backup_ldap.sh, дабы сркрыть ошибку (не советую, если нет понимания, к чему это может привести и хотя бы одного ежедневного бекапа базы на "холодную" - при опущенном slapd):
#!/bin/sh
Для второго - надо либо дать пользователю debian-sys-maint доступ на лок ко всем базам, либо исключить information_schema из обработки. Вот мой модифицированный скрипт backup_mysql.sh - отличается от оригинального тем, что загоняет каждую базу в отдельный архив и добавлена возможность игнорить отдельные базы:
##############################################################################
# backup_ldap.sh
#
# by k2
##############################################################################
/usr/sbin/slapcat 2>/dev/null | gzip -9 > ldapdump.ldif.gz
/bin/chmod 600 ldapdump.ldif.gz#!/bin/sh
##############################################################################
# backup_mysql.sh
#
# by Nathan Rosenquist
# http://www.rsnapshot.org/
#
# mod by Kirill Kozlovsky
# http://kirill-k2.blogspot.com/
#
# This script simply needs to dump a file into the current working directory.
# rsnapshot handles everything else.
##############################################################################
dblist=`echo "show databases;" | mysql --defaults-file=/etc/mysql/debian.cnf | grep -v Database`
dbignore="information_schema"
if [ -z "$dblist" ]; then
echo "Warning! Can't obtain DB list! Will use all-databases" >&2
dblist="--all-databases"
fi
for db in $dblist; do
#echo Backing up $db
for idb in $dbignore; do
if [ "$idb" == "$db" ]; then
continue 2
fi
done
dumpfile="mysqldump_$db.sql"
# backup the database
/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --opt --comments --complete-insert --routines "$db" > "$dumpfile"
gzip -9 "$dumpfile"
# make the backup readable only by root
/bin/chmod 600 "$dumpfile.gz"
done
exit 0; - munin переехал каталогами. Прежде всего надо сделать
vimdiff /etc/munin/munin.conf /etc/munin/munin.conf.dpkg-dist
Вообщем-то, как и со всеми остальными *.dpkg-dist =) и перенести все новое, сохраняя кастомизированную чатсь. Обращаем внимание, что htmldir из /var/www/munin уехал в /var/cache/munin/www. Поэтому делаем два:
mv /var/www/munin/* /var/cache/munin/www/
Так же желательно проапдейтить сенсоры и скрипты ноды мунина - добавить новые индикаторы. Делаем три:
sensors-detect
munin-node-configure --shell | xargs -l -I{} sh -c "{}" - Вышедшая недавно GOsa 2.7 из ee репозитория ставится только на squeeze, собственно, что и делается:
# cat /etc/apt/sources.list.d/gosa.list
"нормальный" репозиторий антсейбл у них пропал, а как запинить вот такой репозиторий я не нашел =(. Так что дальше апдейт руками всех пакетов через aptitude (ищем "^gosa", жмем "v", выбираем последнюю версию, жмем "+". и так для всех пакетов ). Да, еще господа зачем-то выпилили плагин addressbook - имейте ввиду. Для нормальной работы так же подтягиваютс пакеты smarty3 smarty3-gettext smarty3-gosa и надо обязательно выпилить старые версии Смарти, потому как сами они не, а с ними работать не будет:
deb http://oss.gonicus.de/pub/gosa/debian-squeeze/ ./
apt-get remove smarty smarty-acl-render smarty-gettext
После чего производится стандартный апдет уже средствами GOsa со сносом /etc/gosa/gosa.conf (как они утомили этим!).
Так же У GOfon есть ряд пробелм совместимости с Asterisk 1.6 (в части использования '|' вместо запятой, "SetCIDName", hint). Патч, частично решающий данные проблемы (исправлена очередь, диалплан. надо бы еще макросы допилить) gosa-2.7-1.patch:
diff -Naur gosa-2.7-1.original//plugins/admin/ogroups/gofon/class_phonequeue.inc gosa-current/plugins/admin/ogroups/gofon/class_phonequeue.inc
После накатывания патча не мешает сделать, на всякие пожарные:
--- gosa-2.7-1.original//plugins/admin/ogroups/gofon/class_phonequeue.inc 2010-07-30 12:04:55.000000000 +0400
+++ gosa-current/plugins/admin/ogroups/gofon/class_phonequeue.inc 2011-02-07 03:11:41.000000000 +0300
@@ -457,7 +457,7 @@
$queue["queue_holdtime"] = $this->goFonQueueAnnounce;
$queue["queue_lessthan"] = $this->goFonQueueLessThan;
$queue["retry"] = $this->goFonQueueRetry;
- $queue["reportholdtime"] = "1";
+ $queue["reportholdtime"] = ( $this->goFonQueueAnnounceHoldtime == 'yes' ? 1 : 0 );
$queue["joinempty"] = "no";
$queue["leavewhenempty"] = "yes";
@@ -677,11 +677,11 @@
$a_ext[$i]['context'] = 'GOsa';
$a_ext[$i]['exten'] = $num;
$a_ext[$i]['priority'] = 4;
- $a_ext[$i]['app'] = "SetCIDName";
+ $a_ext[$i]['app'] = "Set";
if(!empty($this->parent->by_object['ogroup']->description)){
- $a_ext[$i]['appdata'] = $this->parent->by_object['ogroup']->description;
+ $a_ext[$i]['appdata'] = 'CALLERID(all)="'.$this->parent->by_object['ogroup']->description.'" <'.$num.'>';
}else{
- $a_ext[$i]['appdata'] = $this->cn." - ".$num;
+ $a_ext[$i]['appdata'] = 'CALLERID(all)="'.$this->cn." - ".$num.'" <'.$num.'>';
}
$i ++ ;
@@ -785,7 +785,7 @@
if(isset($_POST['goFonQueueAnnounceHoldtime'])){
$this->goFonQueueAnnounceHoldtime = "yes";
}else{
- $this->goFonQueueAnnounceHoldtime = false;
+ $this->goFonQueueAnnounceHoldtime = "no";
}
}
}
diff -Naur gosa-2.7-1.original//plugins/gofon/phoneaccount/class_phoneAccount.inc gosa-current/plugins/gofon/phoneaccount/class_phoneAccount.inc
--- gosa-2.7-1.original//plugins/gofon/phoneaccount/class_phoneAccount.inc 2010-12-09 12:35:46.000000000 +0300
+++ gosa-current/plugins/gofon/phoneaccount/class_phoneAccount.inc 2011-02-07 03:16:13.000000000 +0300
@@ -786,7 +786,7 @@
$sip_data_array['language'] = NULL;
$sip_data_array['mailbox'] = $newnums[$i_new_key]."@".$this->voice_context;
$sip_data_array['md5secret'] = NULL;
- $sip_data_array['nat'] = "no";
+ $sip_data_array['nat'] = "yes";
$sip_data_array['permit'] = NULL;
$sip_data_array['deny'] = NULL;
$sip_data_array['mask'] = NULL;
@@ -950,13 +950,21 @@
$EXT[$i]['exten'] = $s_telenums;
$EXT[$i]['priority']= 0;
$EXT[$i]['app'] = 'SIP/'.$this->uid;
- $i ++;
- /* SetCID */
+ $i ++;
+
+ /* Hint Entry for 1.6+ */
+ $EXT[$i]['context'] = 'GOsa';
+ $EXT[$i]['exten'] = $s_telenums;
+ $EXT[$i]['priority']= 'hint';
+ $EXT[$i]['app'] = 'SIP/'.$this->uid;
+ $i ++;
+
+ /* SetCID */
//$EXT[$i]['context'] = 'GOsa';
//$EXT[$i]['exten'] = $s_telenums;
//$EXT[$i]['priority']= 1;
- //$EXT[$i]['app'] = "SetCIDName";
- //$EXT[$i]['appdata'] = $CNname;
+ //$EXT[$i]['app'] = "Set";
+ //$EXT[$i]['appdata'] = "CALLERID(all)=".'"'.$CNname.'" <'.$s_telenums.'>';
//$i ++;
// If no macro is selected use Dial
update-gosa
Новый интерфейс понравился. Стал более лаконичным и Ынтерпрайзненьким. - Были проблемы с установкой mysql - лечились ручным выпиливанием всего мусечного, что не mysql.*5.1 в aptitude.
- В PHP 5.3 mhash вошел в основные библиотеке. Пакет php5-mhash самовыпиливается, но конфиги остаются. Их надо снести:
rm /etc/php5/cli/conf.d/mhash.ini
- phpldapadmin поменял формат конфигов. Необхоимо вручную произвести настройки в конфига:
mv /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.old
mv /etc/phpldapadmin/config.php.ucf-dist /etc/phpldapadmin/config.php
vimdiff /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.old - Да, важный момент. После полного апдейта апт норовит снести много чего нужного - рекомендую внимательно смотреть, а лучше записывать все сносимые пакеты. Несколько раз он снес совсем не то, пришлось добавлять:
apt-get install libmime-types-perl libmail-box-perl libfile-remove-perl ghostscript odbcinst1debian2 php5-mysql unzip zip p7zip
upd 19.02.11: обновил про самбу, астериск и добавил про хилафакс.
upd 01.03.11: обновил общее про ядро и фирмвари