Compilando o Squid e criando o pacote para Slackware

Squid é um proxy-cache de alta performance para clientes Web, suportando protocolos FTP, Gopher e HTTP. Neste artigo veremos como instalar o Squid na distribuição Slackware Linux, através da compilação do código-fonte, e como criar um pacote funcional para agilizar instalações posteriores.

[ Hits: 67.976 ]

Por: Davidson Rodrigues Paulo em 16/09/2006 | Blog: http://davidsonpaulo.com/


Criando o pacote para Slackware



Compilados ambos Squid e start-stop-daemon, é hora de criar o pacote para Slackware. Para isso, acesse o diretório temporário para onde os arquivos de instalação foram copiados, logando-se como root antes:

$ su
password:
# cd /tmp/squid-slackware

Renomendo arquivos de configuração


Agora, acesse o subdiretório etc/squid e ajuste os nomes dos arquivos de configuração, alterando a extensão, de .conf para .conf.new. Esse procedimento é necessário para que, no caso de atualização do Squid, os arquivos de configuração já existentes não sejam sobrescritos pelos novos arquivos presentes no novo pacote:

# cd etc/squid
# for conf in *.conf ; do mv $conf{,.new}


Compactando as páginas de manual


Volte ao diretório raiz base e, então, compacte todas as páginas de manual, localizadas no subdiretório man/man8:

# cd ../../
# gzip -9 man/man8/*


Criando o script de controle de serviço


Agora, cesse o subdiretório etc e, então, crie o diretório rc.d, onde colocaremos o script de controle de serviço do Squid:

# cd etc
# mkdir rc.d


Abra, agora, em algum programa de gerenciamento de pacotes, como File-Roller (GNOME) ou Ark (KDE), o pacote Debian do Squid, para obter o script de controle de serviço. Após aberto o pacote, abra o arquivo data.tar.gz e, então, navegue até o diretório ./etc/init.d, selecione o arquivo squid e descompacte-o no seu diretório pessoal.

Agora, voltando para o terminal, mova o arquivo squid para o diretório rc.d recém-criado, mudando o nome do arquivo para rc.squid.new:

# mv /home/davidson/squid rc.d/rc.squid.new

Agora, edite o arquivo rc.squid.new, removendo a seguinte linha, que é desnecessária:

[ ! -f /etc/default/squid ] || . /etc/default/squid

Salve o arquivo e feche-o.

"Limpando" os binários


Em seguida, volte ao diretório base e, então, faça uma "limpeza" nos binários gerados, com o comando strip:

# cd ..
# for shared in `find . |
  xargs file |
  grep "shared object" |
  grep ELF |
  cut -f 1 -d :`
  do
  strip --strip-unneeded $shared
  done

# for exe in `find . |
  xargs file |
  grep "executable" |
  grep ELF |
  cut -f 1 -d :`
  do
  strip --strip-unneeded $exe
  done

# for current in `find . |
  xargs file |
  grep "current ar archive" |
  cut -f 1 -d :`
  do
  strip --strip-debug $current
  done


Criando o script de instalação


Feito isso, crie o diretório install, onde serão colocados os arquivos de instalação do pacote:

# mkdir install

Agora, crie e edite o arquivo doinst.sh, dentro do diretório install, que conterá os procedimentos a serem executados após a instalação do pacote:

# vim install/doinst.sh (substitua "vim" pelo editor de sua preferência)

Insira o seguinte conteúdo:

# Se já houver arquivos de configuração do Squid, eles são
# mantidos. Caso contrário, os arquivo .conf.new são
# renomeados para .conf

for FILE in cachemgr.conf  mime.conf  squid.conf ; do
  OLD=etc/squid/$FILE
  NEW=etc/squid/$FILE.new
  if [ ! -f $OLD ] ; then
    mv $NEW $OLD
  elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ] ; then
    rm $NEW
  fi
done

# Cria o diretório de cache do Squid, se não existir
if [ ! -d var/spool/squid ] ; then
  mkdir var/spool/squid
  chown nobody.nogroup var/spool/squid
fi

# Cria os arquivos de log do Squid, se não existirem
for FILE in cache.log access.log store.log ; do
  if [ ! -f var/log/squid/$FILE ] ; then
    touch var/log/squid/$FILE
    chown nobody.nogroup var/log/squid/$FILE
  fi
done

# Verifica se o script de inicialização rc.squid já existe
OLD=etc/rc.d/rc.squid
NEW=etc/rc.d/rc.squid.new
if [ ! -f $OLD ] ; then
  mv $NEW $OLD
elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ] ; then
  rm $NEW
fi
# Se já existir, o novo script rc.squid.new é preservado
# para a consideração do administrador

# Verifica se existe uma entrada no rc.local para o script
# rc.squid. A entrada para o rc.squid será inserida ao final
# do arquivo

if ! grep rc.squid etc/rc.d/rc.local > /dev/null ; then
  (
    echo
    echo "# Inicia o proxy Squid:"
    echo "if [ -x /etc/rc.d/rc.squid ] ; then"
    echo "  . /etc/rc.d/rc.squid start"
    echo "fi"
    echo
  ) >> etc/rc.d/rc.local
fi

# Inicia o Squid, se possível
if [ "$PWD" = "/" ] ; then
  if [ -x etc/rc.d/rc.squid ] ; then
    if [ -f var/run/squid.pid ] ; then
      etc/rc.d/rc.squid restart
    elif pgrep squid > /dev/null ; then
      etc/rc.d/rc.squid restart
    else
      etc/rc.d/rc.squid start
    fi
  else
    chmod +x etc/rc.d/rc.squid
    if [ -f var/run/squid.pid ] ; then
      etc/rc.d/rc.squid restart
    elif pgrep squid > /dev/null ; then
      etc/rc.d/rc.squid restart
    else
      etc/rc.d/rc.squid start
    fi
  fi
fi

Salve o arquivo e feche-o. Esse script será executado após a instalação do pacote. Sua função é preservar os antigos arquivos de configuração do Squid, caso existam, e criar os diretórios e arquivos de log, caso não existam. Com isso, o Squid poderá ser iniciado sem nenhum erro. Ao final, o script checa se o pacote está sendo instalado na partição em uso e se o script rc.squid está com permissões de execução. Se sim, ele inicia ou reinicia o Squid automaticamete, conforme o caso. Criando o arquivo de descrição do pacote

Agora, crie e edite o arquivo slack-desc, que conterá as informações sobre o pacote, exibidas no momento da instalação:

# vim install/slack-desc

Insira o seguinte conteúdo:

squid: Squid proxy-cache Web
squid:
squid: Squid é um proxy-cache Web completo, que suporta proxeamento
squid: e cacheamento dos protocolos HTTP, FTP e outras URL's,
squid: proxeamento de SSL, hierarquias de cache, ICP, HTCP, CARP,
squid: Cache Digests, cacheamento transparente, WCCP, controle
squid: de acesso extensivos, aceleração de servidor HTTP, SNMP
squid: e cacheamento de pesquisas de DNS
squid:
squid: Para mais informações, veja: http://www.squid-cache.org
squid:

Salve o arquivo e feche-o, e está feito.

Criando o pacote e instalando-o


Agora, basta criar o pacote com o comando makepkg:

# makepkg -c n -l n squid-2.5.14-i686-1.tgz

Cuidado com o nome do pacote. Ele deve ser formado da seguinte forma:

[nome]-[versão]-[arquitetura]-[revisão].tgz

Onde:
  • [nome]: o nome do pacote. Nesse caso, "squid";
  • [versão]: a versão do software. Nesse caso, é 2.5STABLE14 ou, de forma simplificada, 2.5.14;
  • [arquitetura]: a arquitetura/processador para a qual o pacote foi compilado. Nesse caso, foi utilizado "i686", referente a processadores da família Pentium III e IV. Para processadores Pentium I e II, usa-se "i586". Para Duron e Athlon XP, use "k7". Essa informação não interfere em nada na funcionalidade do pacote, ela serve apenas para avisar para qual arquitetura de hardware o pacote foi compilado, pois, em alguns casos, pacotes compilados para i686 não funcionam em certos processadores, por exemplo.
  • [revisão]: é a versão do pacote. Não confunda com versão do softwares. A versão do Squid é 2.5.14, mas a versão do pacote que você faz pela primeira vez é 1. Se fizer alguma alteração no pacote, a sua versão será 2, ainda que a versão do software continue sendo a mesma. É costume indicar também, nessa área, o autor do pacote. Em alguns pacotes meus eu coloco a revisão similar a "1bozo".

Pronto, estamos com o pacote criado. Agora, é só testar:

# upgradepkg --install-new squid-2.5.14-i686-1.tgz

Se você não tiver o Squid instalado, é provável que ele não funcione corretamente, visto que não haverá um arquivo squid.conf configurado de forma correta.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Compilando o Squid
   3. Compilando o start-stop-daemon
   4. Criando o pacote para Slackware
   5. Controlando o funcionamento do serviço do Squid
   6. Considerações finais e referências
Outros artigos deste autor

Criando um repositório local do Fedora

Como converter CentOS 5 em Fedora 11

Instalando e atualizando pacotes no Fedora em computadores sem internet

Vyatta, o concorrente livre dos roteadores Cisco

Grip, the GNOME Ripper

Leitura recomendada

Squid Plus 2007 para Debian 4

Squid atuando como proxy reverso

ECache - O cache efetivo

Squid com autenticação básica + Gerador de relatórios Sarg - Instalação e configuração

Squid - Níveis de bloqueio para usuários

  
Comentários
[1] Comentário enviado por leoberbert em 16/09/2006 - 16:53h

Fala DAVIDSON!!! Gostei do artigo hein!!! heheehe

E oia que sou perito no squid hein heheheheh!!!!

Parabéns pelo excelente trabalho!! Continue assim que o BOZOLINUX vai longe :)

Abração Brother!

[2] Comentário enviado por rafamb em 16/09/2006 - 23:42h

Como sempre estás de parabéns camarada. Continue com o excelente trabalho.

Daqui a pouco vai surgir a Bozolinux Editora, tamanha quantidade de material que você produz

Abaços e até a próxima.

PS.: Fiquei feliz de ainda estar cadastrado no wiki, vou ver se posso ajydar em algo

[3] Comentário enviado por pink em 17/09/2006 - 16:05h

Parabéns pelo artigo, aprendi mais uma...
Abraços.

[4] Comentário enviado por edimilson.gomes em 18/09/2006 - 13:37h

Belo Artigo...

[5] Comentário enviado por angkor em 06/06/2007 - 13:58h

Muito bom artigo, bom mesmo, parabéns.
Infelizmente parei no ponto em que preciso ter um linux rodando o X para "Abra, agora, em algum programa de gerenciamento de pacotes, como File-Roller (GNOME) ou Ark (KDE)".

[6] Comentário enviado por davidsonpaulo em 06/06/2007 - 14:10h

angkor,

Você pode extrair um arquivo .deb usando o comando ar:

$ ar xv [pacote.deb]

Depois é só descompactar o arquivo data.tar.gz usando:

$ tar zxf data.tar.gz

E daí copiar o arquivo desejado.

Um abraço,

Davidson


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts