A primeira coisa a fazer é compilar o Squid. Uma vez feito o download do código-fonte no link mostrado acima ou no site oficial, descompacte-o:
$ tar jxf squid-2.5STABLE14.tar.bz2
Observação: se a extensão do arquivo for .tar.gz, utilize o parâmetro z ao invés de j.
Acesse o diretório criado:
$ cd squid-2.5STABLE14
Criando um script de configuração
Crie um arquivo config.list, contendo todas as opções de configuração do Squid, e crie uma cópia com o nome config.bash:
$ ./configure --help > config.list
$ cp config.list config.bash
Agora, edite o arquivo config.bash, de forma a deixar somente as opções que você quer. Apague as descrições dos parâmetros e, no final de cada linha, coloque uma barra invertida, exceto na última linha. Por fim, coloque no início do arquivo:
./configure \
O arquivo deverá ficar segundo o exemplo que segue:
./configure \
--prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc/squid \
--sharedstatedir=/var/lib/squid \
--localstatedir=/var \
--datadir=/usr/share/squid \
--enable-dependency-tracking \
--enable-xmalloc-statistics \
--enable-carp \
--with-pthreads \
--with-aio \
--with-dl \
--enable-storeio="ufs diskd" \
--enable-removal-policies="heap lru" \
--enable-icmp \
--enable-delay-pools \
--enable-useragent-log \
--enable-referer-log \
--enable-kill-parent-hack \
--enable-snmp \
--enable-cachemgr-hostname=localhost \
--enable-arp-acl \
--enable-htcp \
--enable-ssl \
--enable-forw-via-db \
--enable-cache-digests \
--enable-default-err-language="Portuguese" \
--enable-poll \
--disable-http-violations \
--enable-linux-netfilter \
--with-large-files \
--enable-large-cache-files \
--with-build-environment=POSIX_V6_ILP32_OFFBIG \
--enable-truncate \
--enable-auth="basic digest ntlm" \
--enable-basic-auth-helpers="LDAP MSNT NCSA SASL SMB YP getpwnam multi-domain-NTLM winbind" \
--enable-ntlm-auth-helpers="SMB fakeauth no_check winbind" \
--enable-digest-auth-helpers="password" \
--enable-ntlm-fail-open \
--enable-external-acl-helpers="ip_user ldap_group unix_group wbinfo_group winbind_group" \
--enable-stacktraces \
--enable-x-accelerator-vary
Agora, execute a configuração do código-fonte:
$ bash config.bash
Se houver algum erro, é devido a alguma opção da configuração que não é suportada pelo seu sistema. Tente resolver o problema ou, então, edite o arquivo config.bash, remova a opção conflitante e execute novamente o comando acima, repetindo esse procedimento até que a configuração seja executada com sucesso.
Configurações manuais
Depois de executada a configuração, será necessário editar alguns arquivos para fazer alguns ajustes finos, antes de iniciar a compilação. Esses ajustes dizem respeito a localização de alguns arquivos e diretórios do Squid, e deverão ser feitos alterando manualmente alguns arquivos.
Edite o arquivo src/Makefile:
$ vim src/Makefile (substitua "vim" pelo seu editor de textos favorito)
Procure pela linha DEFAULT_LOG_PREFIX, deixando-a da seguinte forma:
DEFAULT_LOG_PREFIX = $(localstatedir)/log/squid
Essa opção define o valor do diretório de armazenamento dos logs do Squid. A variável $(localstatedir), nesse exemplo, está definida para /var, de forma que o diretório de logs do Squid, nesse caso, será /var/log/squid.
Depois, procure pela linha DEFAULT_PID_FILE. Modifique-a, deixando-a da seguinte forma:
DEFAULT_PID_FILE = /var/run/squid.pid
Essa opção define o caminho completo onde será criado o arquivo com o PID (Process Identification ou idetificação do processo) do Squid. Para que o script de controle do Squid funcione adequadamente, é necessário que o arquivo com o PID do Squid esteja em /var/run/squid.pid.
Em seguida, procure pela linha DEFAULT_SWAP_DIR. Modifique-a, deixando-a da seguinte forma:
DEFAULT_SWAP_DIR = $(localstatedir)/spool/squid
Essa opção define o diretório padrão para o cache do Squid. Nesse exemplo, a variável $(localstatedir) está definida para /var, de forma que o diretório de cache do Squid, nesse caso, será /var/spool/squid.
Feitas essas alterações, salve o arquivo e feche-o.
Abra, agora, edite o arquivo src/squid.conf.default:
$ vim src/squid.conf.default
Procure pela linha # cache_access_log. Substitua /var/logs por /var/log/squid, deixando a linha da seguinte forma:
# cache_access_log /var/log/squid/access.log
Repita a substituição anterior para as linhas # cache_log, e # cache_store_log:
# cache_log /var/log/squid/cache.log
# cache_store_log /var/log/squid/store.log
Procure, agora, pela linha # pid_filename. Modifique-a, deixando-a da seguinte forma:
# pid_filename /var/run/squid.pid
Em seguida, procura pela linha coredump_dir, modificando-a da seguinte forma:
coredump_dir /var/spool/squid
Repita o procedimento para a linha # cache_dir:
# cache_dir ufs /var/spool/squid 100 16 256
Feitas as modificações, salve o arquivo e feche-o.
Compilando
Agora, é hora de compilar o Squid. Para isso execute o comando:
$ make
O processo será rápido. Se houver alguma dependência não resolvida, um erro será apresentado e a compilação, interrompida. Se isso acontecer, será necessário ou resolver a dependência ou desabilitar o recursos do Squid conflitante.
No meu caso, apresentou-se um erro devido à falta do PAM. Como, por padrão, o Slackware não utiliza o PAM, desabilitei o recurso, editando o arquivo src/Makefile e removendo o valor "PAM" de todas as linhas onde ele aparecia. Eu poderia ter optado por instalar o PAM. De qualquer forma, depois de tomar a medida necessária, basta rodar novamente o make.
Copiando os arquivos para um diretório temporário
Crie um diretório temporário para armazenar os arquivos que serão usados para a criação do pacote do Slackware:
$ mkdir /tmp/squid-slackware
Agora, execute a instalação para o diretório temporário:
$ su root
password:
# DESTDIR=/tmp/squid-slackware make install