Copyright ©2003.-2017. CARNet. Sva prava pridržana.
Mail to portal-team(at)CARNet.hr
Nakon nadogradnje poslužitelja obično je potrebno napraviti neke modifikacije, popravke i prepravke u nekom od paketa. Pri tome ne mislimo na razlike u konfiguracijama između inačica paketa, nego na razlike između različitih izdanja Debianove distribucije Linuxa.
Za ove razlike je teško znati prije trenutka same instalacije, ukoliko niste pročitali dokument "RELEASE NOTES", koji ide uz svako novo izdanje Debiana. Čak i ukoliko jeste pročitali taj 44 strane dugačak dokument (nalazi se na adresi http://www.debian.org/releases/stable/releasenotes [1]), u njemu nisu navedene sve promjene. U nekim slučajevima promjene uopće nisu vezane uz trenutno izdanje (ali utječu i na njega).
Kako bi vam pomogli u pripremi i lakšoj provedbi nadogradnje na izdanje Wheezy, pripremili smo niz kraćih članaka. U njima će se naći rezultati naših saznanja i iskustava, ali i iskustva vaših kolega koje ćemo, sasvim očekivano, zaprimiti na sys.help.
Preporučujemo da članke pročitate prije odluke o nadogradnji, jer će neke korake biti moguće provesti prije nadogradnje, što je uvijek bolje nego tijekom nadogradnje kada korisnici čekaju da se servisi ponovo pokrenu.
Prvi u nizu članaka je onaj o syslogu i zašto je nekima "nestao" nakon nadogradnje na Wheezy.
Na syslog smo navikli u tolikoj mjeri da ne razmišljamo o mogućnosti da ga uopće nema. A upravo to nam se može dogoditi nakon nadogradnje na wheezy.
NAPOMENA: od inačice 7.0.9, paket carnet-upgrade donosi rješenje problema za rsyslog. Ipak, nakon nadogradnje provjerite rade li vam logovi kako treba.
Da bi se ovo dogodilo morate od prije imati instaliran paket sysklogd. Problem s ovim paketom je što je godinama neodržavan, te je izbačen iz Debiana. Ovo izbacivanje se konačno dogodilo tek u izdanju wheezy, iako je paket u upstreamu napušten već dulje vrijeme.
Kako mnogi "vuku" svoje instalacije Debiana od izdanja Sarge ili čak ranije, tako se ovaj paket provukao sve do danas. Rješenje je jednostavno: instalacija nekog drugog paketa koji donosi servis syslog.
Paketa koji donose podršku za sustav syslog ima dosta, a dva najpopularnija su rsyslog i inetutils-syslogd. Zasada je svejedno koji paket odaberete, mi smo odabrati inetutils-syslogd, no možete odabrati i rsyslog, konfiguracijske datoteke su iste.
Još jedna specifičnost paketa sysklogd je što program sam vrši rotaciju logova i ne oslanja se na logrotate. No, nas to više i ne zanima, jer zamjenski paketi se u potpunosti oslanjaju na logrotate i donose odgovarajuću konfiguraciju sa sobom.
Na vama je jedino da podesite postavke koje želite: koliko dana će se čuvati komprimirane datoteke, hoće li se logovi odmah komprimirati i slično.
Dakle, ne treba oklijevati, nego odmah instalirati (najbolje prije nadogradnje na wheezy) jedan od zamjenskih paketa, na uobičajen način:
# apt-get install inetutils-syslogd
ili
# apt-get install rsyslog
Zanimljiv artefakt zamjene syslog daemona može biti da se logovi ne rotiraju. Događa se situacija da se logovi zapravo ne rotiraju, nego se svaki dan generira nova datoteka preko stare, primjerice /var/log/syslog.
Da biste to spriječili, stare logove prebacite na neko drugo mjesto (možete i obrisati, ali logove je najbolje čuvati dulje vrijeme), a u /var/log ostavite samo aktivne datoteke.
Koje datoteke kreira rsyslog, odnsno inetutils-syslogd? To su:
/var/log/auth.log
/var/log/daemon.log
/var/log/debug
/var/log/kern.log
/var/log/lpr.log
/var/log/mail.*
/var/log/messages
/var/log/ppp.log
/var/log/user.log
/var/log/uucp.log
/var/log/syslog
Znamo da volite skripte, pa evo jedne koja će prebaciti stare logove na neko drugo mjesto, a nakon toga možete instalirati zamjenski syslog.
#!/bin/sh
DAT="auth.log.* daemon.log.* debug.* kern.log.* lpr.log.* mail.err.* mail.warn.* mail.info.* \
mail.log.* messages.* ppp.log.* user.log.* uucp.log.* syslog.*"
BACKUP="/var/backups/logovi"
test -d $BACKUP || mkdir -p $BACKUP
cd /var/log
for file in $DAT
do
mv "$file" "$BACKUP"
done
echo "Done."
Kada smo u roku sat vremena zaprimili četiri upita kako "Squirrelmail ne prikazuje imena pošiljatelja", shvatili smo da bi problem mogao biti ozbiljan, te da smo potcijenili koliko je "vjeverica" zapravo popularna među korisnicima. Problem je prouzročio novi PHP, a o njemu ćemo, sasvim smo sigurni, još slušati narednih mjeseci.
NAPOMENA: Od inačice paketa squirrelmail-cn 2:1.4.23+2 ne treba primjenjivati ovu zakrpu.
U PHP-u 5.4.0 koji dolazi s izdanjem Wheezy, nalazi se mnogo promjena koje će na različite načine utjecati na rad vaših aplikacija. U ovoj situaciji sa Squirrelmailom glavni problem leži u funkciji htmlspecialchars. Kod ove funkcije se pretpostavljeni encoding promijenio s ISO8859-1 na moderniji UTF-8. Rezultat je vraćanje praznog niza umjesto dekodiranog stringa, što se vrlo zorno može vidjeti u praznom popisu poruka unutar Squirrelmailovog prozora. Panika vaših korisnika je sada već očigledna, a telefoni počinju zvoniti.
Navedeni problem je u Debianu uočen na vrijeme, i zakrpa je ubačena prije izlaska Wheezya. To je i dokumentirano u datoteci /usr/share/doc/squirrelmail/changelog.Debian.gz:
squirrelmail (2:1.4.23~svn20120406-2) unstable; urgency=medium
* Add patch from upstream to cope with changed behaviour of
htmlspecialchars() in PHP 5.4 (closes: #664895).
No, čini se da to nije bilo dovoljno. U logovima i dalje možete vidjeti poruke poput ove:
[Mon Nov 11 08:15:19 2013] [error] [client X.149.Y.252] PHP Warning: htmlspecialchars(): charset `is
o-8859-2' not supported, assuming utf-8 in /usr/share/squirrelmail/functions/strings.php on line 1508
Iako smo našli nekoliko rješenja, nijedno nije bilo potpuno. Primjerice, pošiljatelji bi bili prikazani, ali sadržaj maila nakon otvaranja ne bi bio vidljiv ukoliko bi sadržavao naše znakove, ili znakove iz drugih skupova znakova iz standarda ISO-8859-*. No, na forumu squirrelmaila na razvojnom sjedištu sourceforge.net našli smo rješenje kolege Tonija Rutar-Lokara iz Slovenije:
http://sourceforge.net/p/squirrelmail/bugs/2806/?page=6 [6]
Zakrpa je kratka, i iako rabi malo više resursa, zasada predstavlja zadovoljavajuće rješenje. U datoteci /usr/share/squirrelmail/functions/strings.php u funkciji sm_encode_html_special_chars treba zakomentirati tri retka (početak je u retku 1507), te potom dodati par novih redaka:
#if (check_php_version(5, 2, 3))
# return htmlspecialchars($string, $flags, $encoding, $double_encode);
#return htmlspecialchars($string, $flags, $encoding);
$string=iconv ($encoding, 'UTF-8',$string);
if (check_php_version(5, 2, 3))
$ret=htmlspecialchars($string, $flags, 'UTF-8', $double_encode);
else $ret=htmlspecialchars($string, $flags, 'UTF-8');
return iconv ('UTF-8', $encoding, $ret);
Kako je zakrpa neslužbena i stara samo dva tjedna, vidjet ćemo hoćemo li je isporučiti u obliku novog paketa squirrelmail-cn, ili ćemo problem riješiti na neki drugi način.
Dodano 10.12.2014.
Ukoliko vam i dalje ne radi prikaz poruka, probajte recept kolege Kružića:
U datoteci /usr/share/squirrelmail/functions/i18n.php sam u funkciji charset_decode unio sljedeću promjenu (187. redak):
if (! $save_html) $string = sm_encode_html_special_chars($string);
sam zamijenio s
if (! $save_html) $string = sm_encode_html_special_chars($string, ENT_COMPAT, 'ISO-8859-1');
Ukoliko ste korisnik CARNetove usluge sys.backup, nakon nadogradnje možda ćete početi primjećivati ovakve poruke:
Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
Radi se o tablicama events, koje su uvedene u inačici 5.1.6. Events su vremenski okidači, koji obavljaju unaprijed određene operacije unutar Mysql-a, baš kao što to čini cron unutar linuxa. Ukoliko ih ne rabite, možete jednostavno ignorirati ovu poruku, ili u potpunosti izgasiti dump ovih tablica:
# mysqldump -u root -p --events --ignore-table=mysql.event --all-databases > mysql_dump.sql
Ukoliko rabite ovu mogućnost Mysql-a, upute vam vjerojatno ne trebaju, ali ipak - ako želite dumpati i ove tablice, oblik naredbe je:
# mysqldump -uroot -p --events --all-databases > mysql_dump.sql
Datoteka u kojoj sve to možete promijeniti je /etc/bacula/run-before-job.d/db-dump (ukoliko se oslanjate na sys.backup), ili jednostavno u vašim skriptama koje rabite za backup.
Links
[1] http://www.debian.org/releases/stable/releasenotes
[2] https://sysportal.carnet.hr./sysportallogin
[3] https://sysportal.carnet.hr./taxonomy/term/17
[4] https://sysportal.carnet.hr./taxonomy/term/26
[5] https://sysportal.carnet.hr./taxonomy/term/28
[6] http://sourceforge.net/p/squirrelmail/bugs/2806/?page=6