Volver al blog

Compilando Squid desde código fuente

index

Revisando ahora mismo veo que en el sitio de Squid, actualizaron a la versión 4.10, por lo que me interesa actualizarlo, debido a pequeños bugs[no tan críticos, pero bueno] y fixes que han salido y han parcheado. Esta corta guía es basada en Debian10, pero debería ser posible de aplicar usando Ubuntu.

Sin más preámbulo empezamos a meter las manos en el asunto. Primero que todo necesitaremos un contenedor de Debian10 dentro de un Proxmox, desde cero, sin nada instalado, importante si queremos que el proceso llege a un feliz término.

NOTA: No he probado actualizar directamente, pero imagino que sea como siempre, detener el proceso, compilar el programa nuevamente, revisar que todo haya finalizado OK, y reiniciar el programa y revisar los logs verificando que todo funciona como debe.

Entonces, en este CT en blanco, lo primero será instalarnos la paquetería necesaria para compilar Squid, por lo que ejecutaremos lo siguiente:

apt install -y logrotate acl attr autoconf bison nettle-dev build-essential libacl1-dev \
libaio-dev libattr1-dev libblkid-dev libbsd-dev libcap2-dev libcppunit-dev libldap2-dev \
pkg-config libxml2-dev libdb-dev libgnutls28-dev openssl devscripts fakeroot libdbi-perl \
libssl-dev libcppunit-dev libecap3-dev libkrb5-dev comerr-dev libnetfilter-conntrack-dev \
libpam0g-dev libsasl2-dev krb5-user msktutil libsasl2-modules-gssapi-mit libtdb-dev

Hecho esto, pasaremos a crear el usuario/grupo/carpetas, así como todo lo relacionado con la ejecución del Squid4:

groupadd -g 13 proxy
mkdir -p /var/spool/squid
mkdir -p /var/log/squid
mkdir -p /var/cache/squid
useradd --system -g proxy -u 13 -d /var/spool/squid -M -s /usr/sbin/nologin proxy
chown proxy:proxy /var/spool/squid
chown proxy:proxy /var/log/squid
chown proxy:proxy /var/cache/squid

Ahora nos descargamos Squid:

cd /opt
wget -c http://www.squid-cache.org/Versions/v4/squid-4.10-20200123-r91d32285d.tar.gz
# tar xzfv squid-4.10-20200123-r91d32285d.tar.gz

Configuramos las opciones básicas que podamos necesitar:

./configure --srcdir=. --prefix=/usr --localstatedir=/var/lib/squid --libexecdir=/usr/lib/squid \
--datadir=/usr/share/squid --sysconfdir=/etc/squid4 --with-default-user=proxy --with-logdir=/var/log/squid \
--with-open-ssl=/etc/ssl/openssl.cnf --with-openssl --enable-ssl --enable-ssl-crtd --build=x86_64-linux-gnu \
--with-pidfile=/var/run/squid.pid --enable-removal-policies=lru,heap \
--enable-delay-pools --enable-cache-digests --enable-icap-client --enable-ecap --enable-follow-x-forwarded-for \
--with-large-files --with-filedescriptors=65536 --with-default-user=proxy \
--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB \
--enable-auth-digest=file,LDAP --enable-auth-negotiate=kerberos,wrapper --enable-auth-ntlm=fake,SMB_LM \
--enable-linux-netfilter --with-swapdir=/var/cache/squid --enable-useragent-log --enable-htpc \
--infodir=/usr/share/info --mandir=/usr/share/man --includedir=/usr/include --disable-maintainer-mode \
--disable-dependency-tracking --disable-silent-rules --enable-inline --enable-async-io \
--enable-storeio=ufs,aufs,diskd,rock --enable-eui --enable-esi --enable-icmp --enable-zph-qos \
--enable-external-acl-helpers=file_userip,kerberos_ldap_group,time_quota,LDAP_group,session,SQL_session,unix_group,wbinfo_group \
--enable-url-rewrite-helpers=fake --enable-translation --enable-epoll --enable-snmp --enable-wccpv2 \
--with-aio --with-pthreads --enable-arp --enable-arp-acl

Si necesitamos saber que significa cada opción:

./configure --help

Compilamos con multiprocesamiento[mucho más rápido el proceso]:

make -j`nproc`

Instalando:

make install

Y listo, ya hemos compilado el Squid4. Ahora necesitamos el scrit de inicio el cual adjunto acá y debemos darle permisos en /etc/init.d y ponerlo a iniciar con el sistema:

cd /etc/init.d/
chmod 755 squid4
update-rc.d squid4 defaults

O para los amantes de SystemD:

systemctl enable squid4

Y ahora solo queda revisar la config que tengamos o que vayamos a usar y adaptarla a Squid4, que fijándome un poco no es tan difícil, cambiaron pequeños detalles solamente. Iniciamos Squid4 y completo el tema:

/etc/init.d/squid4 restart

o

systemctl start squid4

Ahora solo faltaría revisar, como ya dije anteriormente que todo vaya OK. Espero este post les sea de ayuda, cualquier duda, a cometarios. Un abrazo para todos.

Suscríbete · Newsletter

Mantente al día, cada semana

Artículos prácticos sobre Linux, redes, seguridad, virtualización y la nube — escritos por sysadmins cubanos.

  • Guías y tutoriales de administración de sistemas
  • Nuevos artículos sobre servidores, redes y nube
  • Sin spam, cancela cuando quieras

Respetamos tu bandeja de entrada. Cancela con un clic.

Patrocinado por SYSCU

¿Tu infraestructura en la nube te cuesta de más?

SYSCU optimiza tu nube de punta a punta — FinOps, DevOps & CI/CD, migraciones a AWS, seguridad y observabilidad. Equipo 100 % senior que reduce tu factura hasta un 40 % y acelera tus despliegues en semanas.

Nuevo · BetaSYSCU Atlas Insight — la plataforma FinOps que convierte tu gasto AWS en decisiones: visibilidad multi-cuenta, recomendaciones automáticas y alertas de anomalías.

No comments yet