segunda-feira, 29 de junho de 2015

Pacote do Squid para o CentOS 7


A situação do pacote do Squid no Fedora/CentOS não é das melhores pela falta de mantenedores ativos. Só olhando o arquivo spec já temos a noção que o pacote está mais ou menos abandonado. Eu cansei de reportar bugs que são ignorados, então resolvi criar um novo pacote, chamado squid-magro, para meu uso. Tem pouca coisa habilitada, diminuindo ao máximo o número de dependências e assim compilando menos lentamente nos meus cacarecos.

Amos Jeffries, mantenedor do Squid e participante ativo das discussões a respeito da padronização do protocolo HTTP no IETF, sempre aconselha usar a última versão estável. Correções para bugs graves são backportadas para os branches anteriores. No entanto, o melhor é manter-se o mais perto possível da última. A série 2.x está descartada pois é obsoleta, não mais mantida há vários anos e despreparada para lidar com HTTP/1.1, o mínimo necessário para um proxy hoje em dia. Sendo que em maio de 2015 foram publicadas as especificações que compõem o HTTP/2! Nota: mesmo em sua última versão, 4.0, o Squid é um proxy HTTP/1.1. Compatibilidade com HTTP/2 está prevista para o futuro.

Dentro do ciclo de vida das distribuições, costuma ser um parto saírem atualizações até de minor versions. Usando meu próprio pacote, fica simples ter a versão mais recente com poucos ajustes no spec.

Não vá remover o pacote oficial aí na sua instalação sem antes analisar se as minhas modificações causarão problemas. Lembrando: este pacote foi concebido unicamente levando em conta meu caso de uso. Mesmo não servindo, o SRPM pode ser útil a quem procura uma base mais organizada para personalizar.

Algumas características:

- Faxina geral no spec, que não estava em boa condição.
- pinger continua desativado (--enable-icmp ausente).
- Squid 4 funciona com Type=forking. Modo SMP pode ser usado.
- Visto que o systemd espera o daemon finalizar (log do cache não ficará sempre sujo como no pacote oficial), são 30 segundos se não for especificado. Se você quiser diminuir ou mesmo aumentar (cuide que o limite padrão do systemd é 90s), coloque shutdown_lifetime no arquivo de configuração com o tempo desejado, exemplo: shutdown_lifetime 5 seconds.
- logrotate é requerido, pois a configuração padrão usa logfile_rotate 0.
- Helpers habilitados: basic_ncsa_auth, basic_pam_auth, diskd, log_file_daemon, security_file_certgen, unlinkd. Alguns resquícios de scripts Perl removidos.
- basic_pam_auth instalado com SETUID e com permissão de leitura/execução, além do root, apenas para o grupo squid.
- Binários são PIE + Full RELRO e são compilados seguindo as demais configurações do toolchain do CentOS (-fstack-protector-strong, etc).
- sslcrtd_program é configurado por padrão para usar o modo sem cache: a base de certificados não precisa ser iniciada.
- É distribuída a pasta /etc/squid/ssl, lugar onde coloco o certificado/chave (se ssl-bump for usado). É importante configurar como dono root:squid e retirar todas as permissões para outros usuários nos arquivos! Algo como install -m 0640 -o root -g squid certificado.pem /etc/squid/ssl (usando install evita precisar rodar restorecon depois).
- Desativados: ESI, eCAP, ICAP, WCCP, HTCP. Uso-o estritamente como um forward proxy sem recursos corporativos.
- O pacote torna squid obsoleto e simultaneamente o provê.
- Ao ser instalado, começa do zero: apaga o conteúdo, caso exista, de /var/{log,spool}/squid, remanescentes de instalações anteriores. Em atualizações, mantém as pastas intactas.
- O fragmento de configuração do httpd usa como alias /squid/cgi-bin/cachemgr.cgi. Restrição de acesso ao localhost está adaptada às versões com e sem mod_authz_host.
- O SRPM serve para gerar o pacote em qualquer Fedora minimamente atual também. Aliás, talvez até o RPM rode nele, se existirem pacotes que provejam o SONAME das bibliotecas usadas. Não testei, contudo.
- A suíte de testes não é executada na compilação. Toma tempo demais.
- RPMs são comprimidos com XZ.

O YUM instalará as dependências necessárias automaticamente.

Download:
(este post será atualizado com novas versões à medida que saírem)

SRPM: squid-magro-4.1-1.src.rpm (2,33 MiB)
RPM: squid-magro-4.1-1.x86_64.rpm (2,55 MiB)

MD5:

267bd6911734061fb79d0de6d9cf6ac1  squid-magro-4.1-1.src.rpm
6bcc523555b537acd0b176c110b0f6a5  squid-magro-4.1-1.x86_64.rpm

Changelog:

* Qua Jul 04 2018 XXX - 4.1-1
- Squid 4.1
- Removida dependência de semodule em %post

* Qui Jun 21 2018 XXX - 4.0.25-2
- --without-netfilter-conntrack até a política do SELinux permitir

* Qua Jun 13 2018 XXX - 4.0.25-1
- Squid 4.0.25

* Dom Mai 20 2018 XXX - 4.0.24-3
- Padrão de sslcrtd_program alterado para o modo sem cache
  disponível a partir da versão 4.0.23
- cache.sh e dependências associadas removidas
- Adicionado fragmento de configuração para estender parâmetros
  do squid.service upstream

* Sáb Mar 31 2018 XXX - 4.0.24-2
- Ajuste em cache.sh

* Sex Mar 16 2018 XXX - 4.0.24-1
- Squid 4.0.24

* Qua Jan 24 2018 XXX - 4.0.23-1
- Squid 4.0.23

* Ter Dez 12 2017 XXX - 4.0.22-1
- Squid 4.0.22

* Qui Jul 06 2017 XXX - 4.0.21-1
- Squid 4.0.21

* Sáb Jun 03 2017 XXX - 4.0.20-1
- Squid 4.0.20

* Seg Abr 03 2017 XXX - 4.0.19-1
- Squid 4.0.19
- Habilitada autenticação NCSA (basic_ncsa_auth)

* Seg Fev 06 2017 XXX - 4.0.18-1
- Squid 4.0.18

* Sáb Dez 17 2016 XXX - 4.0.17-1
- Squid 4.0.17

* Ter Dez 13 2016 XXX - 4.0.16-2
- Toda política do SELinux removida (fragmento do logrotate
  chama diretamente o daemon com -k rotate)
- Opção --without-pic removida
- Adicionada epoch na tag Provides, o firewalld depende dela
  a partir do CentOS 7.3

* Qua Nov 02 2016 XXX - 4.0.16-1
- Squid 4.0.16
- Atualizada chave usada para verificar o tarball
  http://lists.squid-cache.org/pipermail/squid-announce/2016-October/000064.html

* Seg Out 10 2016 XXX - 4.0.15-1
- Squid 4.0.15

* Sex Set 09 2016 XXX - 4.0.14-1
- Squid 4.0.14
- Fazer cache.sh ler opção umask de squid.conf

* Sáb Ago 06 2016 XXX - 4.0.13-1
- Squid 4.0.13
- Removido patch obsoleto

* Dom Jul 31 2016 XXX - 4.0.12-2
- Backportada correção para
  http://bugs.squid-cache.org/show_bug.cgi?id=4540

* Qui Jul 21 2016 XXX - 4.0.12-1
- Squid 4.0.12
- Política do SELinux movida para /usr/share/selinux/packages

* Qua Jun 22 2016 XXX - 4.0.11-1
- Squid 4.0.11

* Ter Mai 10 2016 XXX - 4.0.10-1
- Squid 4.0.10

* Qui Abr 21 2016 XXX - 4.0.9-1
- Squid 4.0.9
- Removido patch obsoleto
- Usar %make_build

* Sex Abr 08 2016 XXX - 4.0.8-3
- Backportada correção para
  http://bugs.squid-cache.org/show_bug.cgi?id=4481

* Ter Abr 05 2016 XXX - 4.0.8-2
- Remover completamente os diretórios /var/log/squid e
  /var/spool/squid em caso de instalação inicial do pacote

* Sáb Abr 02 2016 XXX - 4.0.8-1
- Squid 4.0.8
- Assinatura PGP do tarball é verificada
- Diretório ssl_db movido para /var/spool/squid
  (/var/lib/squid é removido em %posttrans)
- Removida integração com o systemd. A partir da versão 4, o Squid
  funciona bem com Type=forking
- Habilitados todos os módulos DiskIO, cache ufs funciona agora
- Habilitado cache do tipo rock
- Revertido patch que movia /var/run para /run, pois não faz
  diferença e permite simplificar a política do SELinux
- Removido arquivo QUICKSTART, pois precisaria ser quase totalmente
  reescrito para ser útil
- Fazer o pacote ser dono de /etc/squid, /etc/NetworkManager e
  /etc/NetworkManager/dispatcher.d
- errorpage.css e cachemgr.conf seguem as permissões de squid.conf
  (640,root,squid)
- Definir umask em cache.sh antes de rodar security_file_certgen

* Qui Mar 03 2016 XXX - 3.5.15-2
- Patches atualizados
- Pequenas melhorias no spec
- Backportada correção para
  http://bugs.squid-cache.org/show_bug.cgi?id=4447

* Sáb Fev 27 2016 XXX - 3.5.15-1
- Squid 3.5.15

* Ter Fev 16 2016 XXX - 3.5.14-1
- Squid 3.5.14
- Removido patch obsoleto
- Removido número de logs a manter do fragmento do logrotate, é
  usada a configuração global
- cache.sh aborta se diretório configurado em cache_dir não existir

* Sáb Fev 13 2016 XXX - 3.5.13-2
- Fazer código em C ser compilado com CFLAGS
  http://bugs.squid-cache.org/show_bug.cgi?id=4431
- --enable-cachemgr-hostname=yes

* Dom Jan 10 2016 XXX - 3.5.13-1
- Squid 3.5.13

* Qui Dez 17 2015 XXX - 3.5.12-3
- Requerer explicitamente systemd >= 209, melhor prevenir
  do que remediar

* Qua Dez 16 2015 XXX - 3.5.12-2
- KillMode=mixed, requer systemd 209 ou superior
  (CentOS 7.2.1511+)
- Descrever usuário squid

* Seg Nov 30 2015 XXX - 3.5.12-1
- Squid 3.5.12
- Removido patch obsoleto

* Seg Nov 02 2015 XXX - 3.5.11-1
- Squid 3.5.11
- Licença alterada para GPLv2+

* Sex Out 02 2015 XXX - 3.5.10-1
- Squid 3.5.10

* Sáb Set 19 2015 XXX - 3.5.9-1
- Squid 3.5.9
- Usar %autosetup

* Ter Set 08 2015 XXX - 3.5.8-1
- Squid 3.5.8

* Qua Ago 05 2015 XXX - 3.5.7-1
- Squid 3.5.7
- Tornar este pacote dono de /etc/httpd e /etc/httpd/conf.d

* Ter Jul 14 2015 XXX - 3.5.6-3
- Conflicts+Provides não fazia sentido, substituído por Obsoletes+Provides

* Sáb Jul 11 2015 XXX - 3.5.6-2
- %configure define [C|CXX|LD]FLAGS

* Ter Jul 07 2015 XXX - 3.5.6-1
- Squid 3.5.6
- Removido patch obsoleto

* Sex Jul 03 2015 XXX - 3.5.5-2
- SELinux: permitir systemctl kill no fragmento de configuração do logrotate
- PrivateTmp=yes

* Sex Jun 26 2015 XXX - 3.5.5-1
- Reempacotamento inicial

Nenhum comentário:

Postar um comentário