Преди няколко дни забелязах че мясото в / (root дяла) ми е намаляло кардинално. Прегледах набързо за някакви големи свали файлове но не открих нищо. WTF ??? След това започнах да търся директория с неочаквано по голям размер от очаквания  – такава се оказа home директорията ми. След още по кратко разглеждане на нещата се оказа че ~.Skype/ е директорията която ми яде от HDD-а. Една бърза la -lah веднага показа че най големите файлове ми са от вида chatmsg1024.dbb chatmsg512.dbb и прочие. В дейтали това е историята на вашия skype chat. Общо взето решението е да изтриете само тези файлове така ще се занули историята ви ако подържате таква но все пак искате да запазите историята си за прехвърляните документи да речем. Това става лесно с командата

$ rm -rf chat*

Следната команда изтрива всички файлове започващи с chat. Винаги съществува варианта да се забрани history log-a но при мен това не е решение.

В действителност тези файлове са изключително интересни понеже от тях доста лесно може да се разчете цялата skype история – с кой сте говорили какви файлове сте прехвърляли и какво сте си писали. Но това е тема за някое бъдещо писане.

ps Тези наблюдения са направени върху skype 2.2.35

Enhanced by Zemanta

Днес исках да си инсталирам една игра 😀 но ми трябваха малко Windows библиотеки. Реших да ги попълня с winetricks и когато стартирах скрипта получих следното ведро съобщение –


$ ./winetricks
 ------------------------------------------------------
 wineserver not found!
 ------------------------------------------------------

Доста забавна ситуация и същевременно крайно очевидна. Winetricks не намира wineserver binary файлът.  Общо взето нормално понеже ползвам x64 Debian Linux и пакетите който ползвам не са от официалния източник. Решението е елементарно в 2 стъпки

1. Намираме пътя на wineserver


$ locate wineserver
/usr/lib32/wine-unstable/wineserver
/usr/share/man/de.UTF-8/man1/wineserver.1.gz
/usr/share/man/fr.UTF-8/man1/wineserver.1.gz
/usr/share/man/man1/wineserver.1.gz

И създаваме символична врзка към /usr/local/bin/wineserver където въпросния скрипт търси файлът по подразбиране но в моя случай е /usr/lib32/wine-unstable/wineserver


#ln -s /usr/lib32/wine-unstable/wineserver /usr/local/bin/wineserver

В последните няколко дни водим разговор с един приятел сис админ тип яйцето или кокошката – Debian vs Slackware. Както обикновено когато дебатираме с него няма победител аз си обичам моята религия той неговата, и двамата имаме достатъчно причини да го правим. Но покрай всичките бръщолевци ми отново се запитах защо. Защо използвам Debian на сървъри десктоп и декстоп машини ( дори си бях пуснал chroot на android-а ми). Тук се сещам и за твъдението на един мой бивш шеф:

Знаеш ли кой е най добрият Linux?

– Този който си успял да си инсталираш пръв.

В интерес на истината Slackware 9 мисля че беше първата ми дистрибуция която сам си инсталирах 😀 Но нещата се променят. Та ето някой от моите причини защо Debian:

1. Защото се поддържа лесно – зависимостите между пакетите. Дам това е отявления минус на slackware или плюс зависи как е погледнато. Зависимостите между пакетите е „екстра“ която улеснява кардинално инсталацията поддръжката и менаджирaнаето на една система. Когато искам да си инсталирам php не е необходимо да знам дали имам и останалите библиотеки необходими за да запали нормално. Спомням си един случай преди няколко години когато инсталирах на един web server и всички мъки докато попълня зависимостите да се компилират необходимите модули по php-то. Дам от друга страна получаваш двоичен пакет компилиран с някакви опции които може да не работят правилно за твоя случай или пък просто да липсва необходими опции. Еми за тия случай си има apt-get source дърпаш си сорска от който е билднат пакета плюс всички кръпки които са сложени. Модификации и модерации винаги са възможни по личен вкус и усмотрение.

2. Защото има netinstall cd – минимален image с основни пакети. Малко се чудя това колко би било полезно за нови потребители но за всеки системен администратор минималната инсталация си е преимущество. Инсталират се по малко пакети по малко сервизи. Изгражда се системата почти от 0. Така имаш сигурността че ще работи точно по начина по които очакваш – ни по малко ни повече. Преди няколко дни исках да сваля slackware cd1 за x64 система и бях неприятно изненадан че съществува само dvd вариант на х64 варианта им. Само за х86 има опция да се свали cd1 досататъчно за минимална инсталация. Не че е болка за умиране по време на инсталацията ще се изберат необходимите пакети но все пак цяло dvd за скелета на един сървър 😀 WTF??? Debian netinstall image ти предлага възможността пак за избор на какви допълнителни пакети да се издърпат от интернет като позитива е, че ще бъдат последната версия в огледалото stable/testing/unstable.

3. Защото има супер елементарен инсталатор – конзолата не е плашеща. Тук нещата са малко 50/50 защото и Slackware също е с изключително лесен инсталатор с единственото изключение което е ключово разделянето на диска се налага да се напишат малко команди в конзолата което е плашещо за някои потребители. fdisck или cfdisk не са толкова страшни но факта че не е вградено в инсталатора само по себе си е недостатък. Веднъж създаден дяла после се форматира от инсталатора но до тогава трябва да си почел малко. При Debian нещата са улеснени в това отношение по подразбиране инсталатора ти помага за това , но ако държиш да процеса да го контролираш по от близо винаги можеш да извикаш shell-а.

4. Защото debian екипа са отворени към странни идеи. Хммм някой слакър тука би ми се изсмял грубо, че такива изрудщини като кръстосан linux с BSD ядро не е необходим, но пък защо не. Хората преди са се смеели и на твърдението че, земята е кръгла. 😀 Ако не се лъжа Debian работи на  най- голяма колекция от хардуер 😉

5. По подразбиране не е с KDE – много мразим KDE. А както е всеизвестно Патрик е голям радетел на KDE и винаги това е била подразбиращата се графична среда в Slack-а. Още при първата ми среща с KDE разбрах че това не е моя тип GUI освен всичко друго много ми напомняше и за Windows

http://www.youtube.com/watch?v=10k3JwZUXlc

Debian OpenLogo

Миналия ден един приятел ми писа че имал проблем с Debian server-a си. По точно не му пазел сессиите повече от 30 минути независимо колко се настройва session.gc_maxlifetime. В общи линии проблема е че Debian са решили да пренапишат поведението на сесиите като вместо garbage collector-а се стартира един cron на всяка 9-та и 39-та минута който почиства старите сесии. Тои се намира в /etc/cron.d/php5

като цяло семпличък скрипт който стартира от своя страна  /usr/lib/php5/maxlifetime и в него се намира променливата колко време да е живота на кукито който е 1440 секунди или 24 минути 😉 От тук нататък има 2 варианта или да се спре крон-а и по този начин се прекратява автоматичното чистене което може по късно да се пренастрой от php.ini или направо в самия скрипт да се промени продължителноста на живота на сесиите с променливата max. Аз лично предпочитам втория вариант. Доста по чист е като цяло но има и недостатък – ако се презапише файлът промените ни ще се изгубят което си е неприятен факт.

ps. Сега като се замисля вероятно ако се дефинира друго място където да се съхранява сеиината информация чрез самото php би трябвало да излезе извън обхвата на скрипта и по този начин да се използва пак по нормален сесията без да прекъсва грубо.


ini_set('session.gc_maxlifetime', 14400);
 ini_set('session.gc_probability', 1);
 ini_set('session.gc_divisor', 100);
 session_save_path(APP_PARENT_DIR . '/sessions');

Enhanced by Zemanta

Днес ще разказвам за неволите си около един сървър със Suhosin patch и как Debian Sqeeze се справя с него. Сега да започнем малко по отдалече. Когато си инсталирате php през пакетната система на Debian (stable за другите не мога да кажа как е още) задължително ви се инсталира и suhosin mod към него. Имах проблеми с едни плу-кадърно написана php система и взех кардиналното решение вместо да правя дебъг на системата и да връщам репорт на разработчика да разкарам кръпката за сигурност и така да си спестя главоболията. Общо взето смело мога да кажа че това е било едно от най глупавите ми решения взимани някога. Най напред премахвам модула на php5-suhosin рестартирам web server-a и опа греда – patch-a все още е зареден. След много кратко проучване откривам, че пакета е компилирах и с пача директно в кода което ще рече че няма изключване или премахване освен ако не се прекомпилира кода наново без пача. Решавам че ще го дръпna и прекомпилирам до deb пакет. Речено сторено правя си apt-get source php5 дърпа ми се настоящия сорс код, разпакетирва се и прочие. Тука идеалната ми идея да сваля сорса на пакета да премахна пача и да го компилирам отново до дебиански пакет плюс една две малки оптимизации по компилацията. Речено сторено – премахнах ненужния пач от debian/patches/suhosin.patch премахнах го да не играе и в debian/patches/series. До тук всичко ясно и без проблеми. След това пускам да се компилира пакета с debuild и както очаквах ми изгърмя компилацията заради липсващи хедъри. Естествено че ще има такива липси – все пак съм с debian netinstall. Поправям набързо глупостта си пускам наново компилацията, в един момент отново премира само, че със странна грешка в Zend/zend_stream.h или .c не помня точно (ако ми се занимава може по късно да проверя точно кой файл и на кой ред гърмеше). След известно недоумяване какво се случва и защо аджеба гърми в Zend ядрото – където не би трябвало да гърми по никаква причина и едно малко по дълго проучване откривам че тоя проблем е относително рядък и няма много сигнали за него. Подозирам че някоя от кръпките в сорса не е наред но сега нямам нерви за да го проверявам. Хммммм странно супер странно. Почти реших да си компилирам чисто php но реших да пробвам огледалата на dotdeb да видим там какво ще се случи. Там компилацията умря заради някакви странни зависимости но подмина проблемите в основната част. Което от своя страна е разбираемо нямаше ги те 30-40 кръпки който бяха в стабилния пакет. След няколко дълги и неуспешни опита ми писна и сви свалих ванила пакета и го компилирах с почти debian-ски опции с идеята да пренапише настоящата ми инсталация и като се инсталират нови пакети от хранилката да може да има поведение на пакет инсталиран от хранилището (вероятно поредното не обособно разумно решение). Както очаквах без всички кръпки инсталацията мина гладко. Това е изхода на config.nice файлът ми:


#! /bin/sh
#
# Created by configure

CFLAGS='-g -O2 -fPIC -Wall -fsigned-char -fno-strict-aliasing   -gstabs' \
CXXFLAGS='-g -O2' \
'./configure' \
'--with-apxs2=/usr/bin/apxs2' \
'--prefix=/usr/local/php5' \
'--disable-cgi' \
'--with-config-file-path=/etc/php5/apache2' \
'--with-config-file-scan-dir=/etc/php5/apache2/conf.d' \
'--build=x86_64-linux-gnu' \
'--host=x86_64-linux-gnu' \
'--sysconfdir=/etc' \
'--localstatedir=/var' \
'--mandir=/usr/share/man' \
'--disable-debug' \
'--with-regex=php' \
'--disable-rpath' \
'--disable-static' \
'--with-pic' \
'--with-layout=GNU' \
'--with-pear=/usr/share/php' \
'--enable-calendar' \
'--enable-fileinfo' \
'--enable-hash' \
'--enable-json' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-bcmath' \
'--with-bz2' \
'--enable-ctype' \
'--without-gdbm' \
'--with-iconv' \
'--enable-exif' \
'--enable-ftp' \
'--enable-dbase' \
'--with-gettext' \
'--enable-mbstring' \
'--with-onig=/usr' \
'--with-pcre-regex' \
'--with-mysql=shared,mysqlnd' \
'--with-mysql-sock=/var/run/mysqld/mysqld.sock' \
'--with-mysqli=shared,mysqlnd' \
'--enable-pdo=shared' \
'--with-pdo-mysql=shared,mysqlnd' \
'--with-pdo-odbc=shared,unixODBC,/usr' \
'--with-pdo-pgsql=shared,/usr/bin/pg_config' \
'--with-pdo-sqlite=shared,/usr' \
'--with-pdo-dblib=shared,/usr' \
'--enable-phar' \
'--enable-shmop' \
'--enable-sockets' \
'--enable-dom' \
'--enable-wddx' \
'--enable-tokenizer' \
'--with-zlib' \
'--with-kerberos=/usr' \
'--with-openssl=/usr' \
'--enable-soap' \
'--enable-zip' \
'--with-mhash=yes' \
'--with-exec-dir=/usr/lib/php5/libexec' \
'--with-system-tzdata' \
'--without-mm' \
'--with-readline=/usr' \
'--without-sybase-ct' \
'--without-sqlite' \
'--without-sqlite3' \
'--without-mssql' \
'--enable-pcntl' \
'--enable-inline-optimization' \
"$@"

Това е конфигурация близка до тази на компилацията на dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Enhanced by Zemanta