Os passos para criar o pacote para
Slackware -- ajuste como quiser -- são:
1. Extraia o conteúdo do código-fonte do PHP 5;
2. Entre no diretório do código-fonte;
3. Coloque o arquivo da página 2 no diretório;
Execute:
`sed -r 's/#.*$//g' README.aj | tr '\n' ' '`
Execute:
sed -i -r 's/^([[:space:]]*C(XX|PP)?FLAGS[[:space:]]*=.*)$/\1 -mcpu=i686 -march=i686 -pipe/g' Makefile
4. Execute:
make
5. Se quiser, execute:
make test
6. Crie o diretório de instalação:
mkdir -p /tmp/php5
7. O "make install" tem um problema, precisa do arquivo httpd.conf com uma linha de LoadModule, então vamos criar um pra ele. Depois você deve apagar este arquivo:
echo 'LoadModule rewrite_module libexec/apache/mod_rewrite.so' >> /tmp/php5/etc/apache/httpd.conf
# make INSTALL_ROOT=/tmp/php5 install
8. Crie o diretório da documentação:
# mkdir -p /tmp/php5/usr/local/share/doc/php-5.2.6-aj
9. Copie a documentação. Perceba que o README.aj está indo junto:
# cp C* EXTENSIONS INSTALL LICENSE README.* TODO* NEWS /tmp/php5/usr/local/share/doc/php-5.2.6-aj
10. Crie o diretório de instalação do pacote:
# mkdir -p /tmp/php5/install
11. Crie o arquivo de descrição. Eu utilizei o do pacote original e descrevi as alterações que fiz e a utilização proposta;
12. Crie o arquivo de instalação doinst.sh. Se quiser, utilize o script abaixo, é o que utilizo;
13. Entre no diretório da instalação criado:
# cd /tmp/php5
14. Finalmente, crie o pacote:
# makepkg -l n -c y php-5.2.6-i686-1_slack10.2_aj.tgz
Abaixo está meu arquivo
doinst.sh, que é executado quando você faz o
installpkg.
#!/bin/sh
#
# Configura Apache para utilizar PHP 5 ou cria arquivo alternativo
#
# By Anderson J. S. - anjoel.s@ gmail.com
# At OmegaTecnologia.com
#
# Created on 2008.08.20
#
## Analisa versão do Apache instalada
[ "`httpd -v | grep -i 'apache/1.3'`" ] || {
echo "Este pacote é para ser utilizado apenas com Apache 1.3";
echo "Instale o servidor HTTP solicitado ou recompile este programa conforme as informações em:";
echo "\t /usr/local/share/doc/php-5.2.6-aj/README.aj";
exit 1;
}
## Encontra arquivo de configuração
httpd=`whereis -b httpd | cut -d' ' -f2`
[ "$httpd" ] && {
conf=`$httpd -V | grep SERVER_CONFIG_FILE | cut -d'"' -f2`;
prefix=`$httpd -V | grep HTTPD_ROOT | cut -d'"' -f2`;
} || {
conf=`find /etc /usr/local/etc -name httpd.conf`;
}
## Valida a existência do httpd.conf
[ "$conf" ] || {
echo "Arquivo httpd.conf não encontrado.";
echo "Para uma instalação bem sucedida, tenha o arquivo em /etc ou /usr/local/etc ou";
echo "o programa httpd em seu PATH apontando para um arquivo httpd.conf válido.";
exit 2;
}
#conf='etc/apache/httpd.conf';
# Gera lista de arquivos para ajustar o módulo
files="`echo $conf && grep -E '^[[:space:]]*Include[[:space:]]' ${conf} | awk '{print $2}'`";
## Procura por LoadModule php e outros LoadModule's
lmod='[[:space:]]*LoadModule[[:space:]]+';
amod='[[:space:]]*AddModule[[:space:]]+mod_'; #php4.c';
php='php[0-9]_module[[:space:]]+';
php5='php5_module[[:space:]]+';
clear="[[:space:]]*ClearModuleList[[:space:]]*";
#libER="\/usr\/libexec\/apache\/libphp5.so";
lib="/usr/libexec/apache/libphp5.so";
lib=${lib#$prefix/}
line="LoadModule php5_module $lib";
for f in "$files" ; do
grep -E "^$lmod$php" $f >> /dev/null && isphp="$f $isphp" ||
grep -E "^$lmod" $f >> /dev/null && ismod=$f
# grep -E "^$clear" $f >> /dev/null && isclear=$f
done;
## Configura o httpd.conf ou Include
if [ "$isphp" ] ; then
## se encontrou módulos do php arrumar as instancias
for i in $isphp ; do
i="`echo $i | awk '{print \$1}'`"
if grep -E "^$lmod$php5" $i >> /dev/null ; then
## se for php5 reescrever para garantir a localização do módulo
sed -i -r "s/^($lmod$php5)[^#]*(#.*)?/\\1 ${lib//\//\\/} \2/g" $i
elif grep -E "^$lmod$php" $i >> /dev/null ; then
## caso contrario se tiver módulo phpX gera arquivo para php5
sed -r -e "s/^($lmod)$php[^#]*(#.*)?/\\1php5_module ${lib//\//\\/} /g" \
-e "s/^($amod)php[0-9][.]c[^#]*(#.*)?/\\1php5.c/g" \
$i > $i.php5
fi;
done;
elif [ "$ismod" ] ; then
## Se achou apenas cargas de módulos, colocar php5 junto
sed -i -r "/^$lmod/a$line" $f
else
## Se não achou referência, carregar módulo no httpd.conf
echo $line >> $conf ;
fi;
## Segurança anti-injection
exit ;
## Segurança anti-injection