How to install Typo3 in 6 steps

To install Typo3, you can follow the steps below:

1. Download the package (http://typo3.org/download/packages/)
2. Extract the content of the downloaded archive (unzip typo3_src+dummy-4.6.4.zip)
3. Step 2 will create a folder with name typo3_src+dummy-4.6.4. Move content one level up (mv typo3_src+dummy-4.6.4/* .)
4. Add handler for PHP 5.3
5. Enable install tool (touch typo3conf/ENABLE_INSTALL_TOOL)
6. Access the web installer

After the web installer is loaded, the installation is straight forward and can be accomplished in a few clicks.

How to bypass the error “Cannot add or update a child row: a foreign key constraint fails” when importing a MySQL dump file

If you encounter the error “Cannot add or update a child row: a foreign key constraint fails” when you import a MySQL dump file, you can bypass the foreign key checks by setting the following line at the top of your MySQL dump file:

SET foreign_key_checks = 0;

Note that the line should be put before any other SQL query in the dump. Save the file and try to import it once again. This time it should be imported silently.

If you are proficient in the SQL, you might try and suggest other alternative solutions.

A short update:

The above solution might be rough and not well working. If you experience troubles and errors after the import, you can try to replace the above line with:

SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;

The second solution worked better for me particularly.

How to count the inodes for each directory

The easiest way is to execute the command:

du -ks ./* | sort -n

or

find -type d -print0 | xargs -0 ls -ld | grep -v 4096

The complicated way is with bash script:

#!/bin/bash
# count inodes for each directory
LIST=`ls`
for i in $LIST; do
echo $i
find $i -printf "%i\n" | sort -u | wc -l
done

Another bash script for the same with more pleasant result display:

#!/bin/bash

# CVETOVE
ESC="\x1b["
RED=$ESC"31;01m"
GREEN=$ESC"32;01m"
YELLOW=$ESC"33;01m"
DBLUE=$ESC"34;01m"
MAGENTA=$ESC"35;01m"
BLUE=$ESC"36;01m"
WHITE=$ESC"37;01m"
GREY=$ESC"30;01m"
RESET=$ESC"39;49;00m"

if [ $# != 1 ]; then
echo -e "\n"
echo -e "Usage: $0 path_to_folder\n"
echo -e "Example: $0 /home/sentry/public_html/\n"
exit 1
fi

if [ ! -d $1 ]; then
echo "The argument must be a folder!"
exit 1
fi

echo -e "\n$WHITE[+$RESET Checking Inodes for folder: $GREY$1$RESET $WHITE+]$RESET \n"

for i in $( /usr/local/cpanel/bin/cpuwatch 10 ionice -c2 -n7 find $1 -maxdepth 1 -not -path "$1" -type d )

do

#echo "$(/usr/local/cpanel/bin/cpuwatch 5 ionice -c2 -n7 find $i | sort -u | wc -l) $i"
echo -e "$(/usr/local/cpanel/bin/cpuwatch 10 ionice -c2 -n7 find $i -printf "%i,\n" | sort -u | wc -l) $GREEN Inodes $RESET - $MAGENTA$i$RESET"

done | sort -n

echo -e "$WHITE==========================================================$RESET\n"

Обработка на опашката в exim

За да листнете опашката:
exim -bp

За да изброите броя на съобщенията в опашката:
exim -bpc

За да изтриете съобщение от опашката:
exim -Mrm

За да изтриете всички съобщения в опашката:

exim -bp | awk ‘/^ *[0-9]+[mhd]/{print “exim -Mrm ” $3}’ | bash

exim -bp | exiqgrep -i | xargs exim -Mrm

Примери за употреба на find

find . -type f -size +10000 -exec ls -al {} \;
find . -atime +1 -type f -exec mv {} TMP \; # mv files older then 1 day to dir TMP
find . -name “-F” -exec rm {} \; # a script error created a file called -F
find . -exec grep -i “vds admin” {} \;
find . \! -name “*.Z” -exec compress -f {} \;
find . -type f \! -name “*.Z” \! -name “.comment” -print | tee -a /tmp/list
find . -name *.ini
find . -exec chmod 775 {} \;
find . -user xuser1 -exec chown -R user2 {} \;
find . -name ebtcom*
find . -name mkbook
find . -exec grep PW0 {} \;
find . -exec grep -i “pw0” {} \;
find . -atime +6
find . -atime +6 -exec ll | more
find . -atime +6 -exec ll | more \;
find . -atime +6 -exec ll \;
find . -atime +6 -exec ls \;
find . -atime +30 -exec ls \;
find . -atime +30 -exec ls \; | wc -l
find . -name auth*
find . -exec grep -i plotme10 {};
find . -exec grep -i plotme10 {} \;
find . -ls -exec grep ‘PLOT_FORMAT 22’ {} \;
find . -print -exec grep ‘PLOT_FORMAT 22’ {} \;
find . -print -exec grep ‘PLOT_FORMAT’ {} \;
find . -print -exec grep ‘PLOT_FORMAT’ {} \;
find ./machbook -exec chown 184 {} \;
find . \! -name ‘*.Z’ -exec compress {} \;
find . \! -name “*.Z” -exec compress -f {} \;
find /raid/03c/ecn -xdev -type f -print
find /raid/03c/ecn -xdev -path -type f -print
find / -name .ssh* -print | tee -a ssh-stuff
find . -name “*font*”
find . -name hpmcad*
find . -name *fnt*
find . -name hp_mcad* -print
find . -grep Pld {} \;
find . -exec grep Pld {} \;
find . -exec grep Pld {} \;
find . -exec grep PENWIDTH {} \; | more
find . -name config.pro
find . -name config.pro
find /raid -type d “.local_sd_customize” -print
find /raid -type d -name “.local_sd_customize” -print
find /raid -type d -name “.local_sd_customize” -ok cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \;
find /raid -type d -name “.local_sd_customize” -exec cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \;
find . -name xeroxrelease
find . -exec grep xeroxrelease {} \;
find . -name xeroxrelease
find . -name xeroxrelease* -print 2>/dev/null
find . -name “*release*” 2>/dev/null
find / -name “*xerox*” 2>/dev/null
find . -exec grep -i xeroxrelease {} \;
find . -print -exec grep -i xeroxrelease {} \;
find . -print -exec grep -i xeroxrelease {} \; > xeroxrel.lis
find . -exec grep -i xeroxrel {} \;
find . -print -exec grep -i xeroxrel {} \;
find . -print -exec grep -i xeroxrel {} \; | more
find /raid/03c/inwork -xdev -type f -print >> /raid/04d/user_scripts/prt_list.tmp
find . -exec grep ‘31.53’ {} \;
find . -ls -exec grep “31/.53” {} \; > this.lis
find . -print -exec grep “31/.53” {} \; > this.lis
find . -print -exec grep 31.53 {} \; > this.lis
find . -exec grep -i pen {} /;
find . -exec grep -i pen {} \;
find . -print -exec grep -i pen {} \; | more
find . -exec grep -i pen {} \;
find . -atime +6 -exec ll | more \;
find . -atime +6 -exec ll \;
find . -atime +6 -exec ls \;
find . -atime +30 -exec ls \;
find . -atime +30 -exec ls \; | wc -l
find . \! -name ‘*.Z’ -exec compress -f {} \;
find . -name ‘cache*’ -depth -exec rm {} \;
find . -name ‘cache*’ -depth -print | tee -a /tmp/cachefiles
find . -name ‘cache[0-9][0-9]*’ -depth -print | tee -a /tmp/cachefiles
find . -name ‘hp_catfile’ ‘hp_catlock’ -depth -print | tee -a /tmp/hp.cats
find . -name ‘hp_catfile’ -name ‘hp_catlock’ -depth -print | tee -a /tmp/hp.cats
find . -name ‘hp_cat*’ -depth -print | tee -a /tmp/hp.cats
find . -name ‘hp_cat[fl]*’ -depth -print | tee -a /tmp/hp.cats
find /raid -name ‘hp_cat[fl]*’ -depth -print
find . \! -name ‘*.Z’ -exec compress -f {} \;
find . -name ‘*’ -exec compress -f {} \;
find . -xdev -name “wshp1*” -print
find . -xdev -name “wagoneer*” -print
find . -name “xcmd” -depth -print
find /usr/contrib/src -name “xcmd” -depth -print
find /raid -type d -name “.local_sd_customize” -exec ls {} \;
find /raid -type d -name “.local_sd_customize” \
-exec cp /raid/04d/MCAD-apps/I_Custom/SD_custom/site_sd_customize/user_filer_project_dirs {} \;

Изпълняване на рекурсивен grep в Solaris – алтернатива на grep -r

Покрай всичките си положителни качества, Solaris има и някой недостатъци които могат да вгорчат кацата с меда. Става въпрос, че командата grep в Linux/BSD има опция -r за търсене по директории. Тази опция обаче, незнайно защо в Solaris версията на grep е спестена. Разбира се, невъзможни неща няма и успях да намеря два алтернативни начина за постигане на recursive grep.

1-ви начин:

/usr/bin/find . | /usr/bin/xargs /usr/bin/grep PATTERN
извежда filename:match

2-ри начин:

/usr/bin/find . -exec /usr/bin/grep PATTERN {} /dev/null \;
извежда filename:match

Информацията е взета от този адрес – http://www.columbia.edu/~rtt2101/iaoq/. На него също има и други полезно трикове за Solaris.

Смяна на hostname в Solaris

Наложи ми се да сменя хостнейма на един сървър под solaris и тази на пръв поглед проста и лесна задача, се оказа трън в задника.

За да смените хостнейма в solaris, трябва да редактирате всичките тези файлове:

/etc/hosts
/etc/nodename
/etc/hostname.*
/etc/inet/ipnodes
Следващите три файла се променят в случай, че вече в тях има запис със стария ви хостнейм:
/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts

След това рестартирайте за да проверите дали промените са в сила и да се уверите че всичко работи според очакванията ви.

Работа с cpio архиви

Неясно защо, Oracle разпространяват сървъра си за бази данни в cpio архив.

Ако някога ви се наложи да работите с такива файлове ето как се процедира:

cpio -imdv < 10gr2_client_sol.cpio

На някои платформи като AIX например, след тази команда може да получите грешки от рода на:

cpio: 0511-903 Out of phase!
cpio attempting to continue…

cpio: 0511-904 skipping 732944 bytes to get back in phase!
One or more files lost and the previous file is possibly corrupt!

cpio: 0511-027 The file name length does not match the expected value.

Ако това ви се случи, опитайте да добавите опцията -c към командата:

cpio -imcdv < 10gr2_client_sol.cpio

Ако ви трябва по подробна информация за cpio се обърнете мъм man страницата и.

Как да направим сървър за CS 1.6 под FreeBSD/Linux

КАК ДА НАПРАВИМ СЪРВЪР ЗА CS 1.6 ПОД FreeBSD 

Изисквания: 
1. Правилно инсталирана и конфигурирана FreeBSD система. 
2. Root достъп 
3. Поддръжка на Linux емулация 
4. Минимални изисквания към хардуера – 1 GB дисково пространство, 256 MB RAM, 1 GHz CPU 

След като сте изпълнили всички горни изисквания може да започне същинската част. Силно препоръчително е да стартирате сървъра си с не привилегирован потребителски акаунт (non-root user). Създайте нов акаунт в системата чрез adduser, като на въпроса “Use password-based authentication?” отговорете с “no”, на “Lock out the account after creation?” отговорете с “yes”. По този начин добавеният потребител няма да може да се логва в системата като обикновен потребител, а ще можете да се логнете с неговия акаунт единствено през root акаунта, т.е. когато влизате ще трябва да влизате първо с вашия личен потребител, след това се логвате като root, и тогава като напишете su csserver или както се казва вашия акаунт предназначен за сървъра ще влезете като csserver. Това са съображения за сигурност. След като сте влезли като csserver отидете в неговата home директория и свалете steam клиента за Linux от тук –http://storefront.steampowered.com/downl…..supdatetool.bin . След като го свалите го направете изпълним с: 

chmod +x hldsupdatetool.bin 

и го стартирайте така: 

./hldsupdatetool.bin 
и се съгласете с “yes”, след което в home директорията на csserver ще се разархивира изпълнимият steam клиент. Стартирайте го само така: 

./steam 
за да се обнови. Ще видите нещо подобно на това: 

Checking bootstrapper version … 
Getting version 16 of Steam HLDS Update Tool 
Downloading. . . . . . . . . . 

След обновяването го стартирайте пак със: 

./steam 
за да видите начина на употреба ако не го знаете. Ако го знаете може директно след като сте го обновили да стартирате инсталацията на CS сървъра така: 

./steam –command update –game cstrike –dir /home/csserver –username acc> -password -remember_password –verify_all –retry 

или така: 

./steam –command update –game cstrike –dir /home/csserver –verify_all –retry 
(доколкото знам при по новите версии на steam не е задължително да имате steam акаунт) 

Сега си намерте временно занимание докато се свалят около 300 MB софтуер. Възможно е инсталацията да се прекъсне и ако това се получи просто стартирайте същата команда отново за да продължите от там до където сте стигнали. Когато видите съобщението “HLDS is up to date” значи инсталацията е приключила успешно. 
Сега от home директорията на csserver стартирайте сървъра така: 

./hlds_run –game cstrike +ip +map de_aztec +maxplayers 10 –nomaster –insecure –port 27015 

Ще видите нещо подобно: 

Auto detecting CPU 
Using Pentium II Optimised binary. 
Auto-restarting the server on crash 
Console initialized. 
Protocol version 47 
Exe version 1.1.2.5/Stdio (cstrike) 
Exe build: 12:05:29 Sep 30 2005 (3213) 
STEAM Auth Server 
Server IP address 22.33.44.55:27015 

Стартиран така, сървъра не работи във фонов режим (background) и вие оставате закачени към конзолата на сървъра, което значи че можете да задавате команди към сървъра, но при Ctrl+C или logout сървъра ще се спре, което едва ли искате. За да стартирате сървъра във background е необходимо да добавите знака “&” на края на командата с която го пускате. Добра идея е да си направите стартиращ скрипт в който да е цялата команда с всички параметри и от home директорията на сървъра ще можете да го пускате примерно само с ./csstart.sh . Не забравяйте че този скрипт трябва да е в директорията където се намира hlds_run и трябва да го стартирате от директорията в която се намира. Ето съдържанието на един примерен стартов скрипт: 

#!/bin/sh 
/usr/home/cs/server/hlds_run -game cstrike +map de_aztec +ip 192.168.1.100 +maxplayers 14 -nomaster -insecure -port 27015 & 

Не забравяйте да направите скрипта изпълним: 

chmod +x csstart.sh 

Кой параметър за какво служи: 

-game cstrike – задава на hlds кой от модовете да стартира 
+ip – задава на кой IP адрес да слуша сървъра (ако машината ви има само един IP адрес може да пропуснете този параметър) 
+map de_aztec – задава с коя карта да се стартира сървъра (може да посочите каквато карта искате, необходимо е само да я имате в поддиректорията cstrike/maps) 
+maxplayers 10 – задава максималния брой играчи 
-nomaster – този параметър указва на сървъра да не се свързва със steam master servers 
-insecure – указва на сървъра да се стартира с изключен VAC (Valve Anti Cheat – вградена от Valve античийт система, която е несъвместима с Cheating Death, т.е. сървъра ви може да ползва една от двете, но не и двете едновременно) 
-port 27015 – указва порта на който сървъра да слуша и приема заявки (ако искате да ползвате стандартния порт 27015 този параметър може да бъде пропуснат) 

Честито! Вече си имате собствен сървър за Counter-Strike 1.6, само че това е един гол сървър за CS, достъпен единствено от LAN-а в който се намира и без никакви допълнителни екстри като AMX mod, Cheating Death, Metamod, Statsme и други. За всеки един адон от изброените ще напиша отделни туториали.

Създаване на alias за boot device в Solaris OpenBoot

Ще опишем създаването на псевдоним за устройство,  от което Open boot мениджъра в solaris ще търси операционна система за зареждане.

I.   Първият начин е следния:

Ще използваме командата nvalias от командния ред на OpenBoot мениджъра ( {ok} prompt )

Запишете си някъде пълния физически път до устройството, на което ще правите alias.

Спрете системата и излезте в {ok} prompt.

Създайте alias-а използвайки nvalias по следния начин:

1 {ok} nvalias

пример:

1 {ok} nvalias defaultdisk /pci@1f,700000/scsi@2/disk@1,0

Променете NVRAM-а така че да зарежда от ОС-а от новия alias автоматично:

1 {ok} setenv boot-device defaultdisk

Рестартирайте системата и тествайте направените промени.

1 {ok} reset-all 

Горе описаното ще бъде валидно докато направите reset defaults или не изпълните nvunalias.

 

II.   Вторият начин е чрез използване не nvedit 

Докато сте в {ok} prompt извикайте nvedit

1 {ok} nvedit

Чрез него ще създадем скрипт от един ред , който че създаде alias-а след рестарт.

0: devalias defaultdisk /pci@1f,700000/scsi@2/disk@1,0

^C (Control+C)

За да запазим промените изпълняваме:

1 {ok} nvstore

Указваме на OpenBoot да използва записаното в NVRAM-a:

1 {ok} setenv use-nvramrc? true

и рестартираме:

1 {ok} reset-all

 

III.   Третия начин е да зададете boot-device от съществуващите вече alias-и в системата

Използвайте devalias за да видите съществуващите alias-и 

1 {ok} devalias

Имената на alias-ите са отлявата страна. Всяко такова име, което сочи към съществуващо дисково устройство може да бъде използвано като boot-device.

Използвайте едно от имената за да зададете нов boot-device.

1 {ok} setenv boot-device

Проверете новия boot-device:

1 {ok} printenv boot-device

Тествайте промените с рестарт:

1 {ok} reset-all

 

Забележка: Гореописаните пътища и устройства са само пример. Не е задължително и вашите да са именовани по този начин.