7.5. I file sorgenti di Squid

I file che contengono i codici sorgenti di Squid possono essere prelevati direttamente dal sito ufficiale del progetto di Squid alla URL http://www.squid-cache.org/Versions/v2/, il formato dei file contenenti i sorgenti è un file in formato compresso. I file con estensione .bz2 sono stati trattati con bzip(8), bzip2 è un nuovo algoritmo per la compressione dei dati che generalmente crea file che sono pari al 60-70% della dimensione dei corrispondenti ottenuti usando gzip (http://www.digistar.com/bzip2/index.html)

squid-2.5.STABLE4.tar.bz2
  

oppure è possibile prelevare un file compresso con estensione .gz che è stato trattato con gzip(8), GNU zip è un programma destinato a rimpiazzare compress, ovvero il programma originario di compressione dei sistemi UNIX®, le specifiche applicative sono descritte nelle RFC 1951 e 1952 (http://www.ietf.org/rfc/rfc1951.txt - http://www.ietf.org/rfc/rfc1952.txt)

squid-2.5.STABLE4.tar.gz
  

dove 2.5 indica la versione, STABLE4 indica la sottoversione della release STABLE. Seguendo lo standard appena descritto il file contenente l'archivio dei codici sorgenti per la versione squid-2.5STABLE6 sarà dunque

squid-2.5.STABLE6.tar.bz2
  

oppure

squid-2.5.STABLE6.tar.gz
  

7.5.1. Accesso al CVS

Il Cuncurrent Version System (CVS) è un sistema del tipo client/server che consente agli sviluppatori, seppur divisi da distanze geografiche rilevanti, di lavorare in un'unico team di sviluppo. Non è necessario che il progetto sia necessariamento legato allo sviluppo del software, anche un saggio come questo può essere elaborato nell'ambito di un progetto comune che prevede l'utilizzo di un repository CVS centrale. La storia delle versioni che vengono inserite dagli sviluppatori verrà memorizzata su un unico server centrale, le macchine client mantengono una copia di tutti i files sui quali, di fatto, tutti gli sviluppatori lavorano. La rete internet divide il client ed il server e consente di effettuare operazioni in CVS come i controlli sul codice sorgente e gli aggiornamenti del codice stesso

7.5.1.1. Squid current

per eseguire un checkout per l'intero l'albero dei sorgenti di Squid che sono correntemente utilizzati da un server CVS

% touch .cvspass
% cvs -d :pserver:anoncvs@cvs.squid-cache.org:/squid login
CVS password:
    

a questo punto digitare anoncvs, subito dopo

% cvs -z3 -d :pserver:anoncvs@cvs.squid-cache.org:/squid co -P squid
    

per aggiornare i sorgenti digitare il comando cvs -z3 all'interno della directory squid

% cd squid
% cvs -z3 update -dP
    

questo tipo di ambiente è stato testato utilizzando bash come shell di sistema

7.5.1.2. Squid vecchie versioni

per accedere alle vecchie versioni di Squid dovremmo utilizzare la stessa procedura di accesso al server CVS cvs.squid-cache.org ma dovremmo specificare le versioni specifiche per le quali si intendono sincronizzare i sorgenti

% cvs -d :pserver:anoncvs@cvs.squid-cache.org:/squid login
CVS password:
    
  • per Squid-2.5 dovremmo utilizzare il comando

    % cvs -z3 -d :pserver:anoncvs@cvs.squid-cache.org:/squid co -r SQUID_2_5 squid
         
    

    per aggiornare i sorgenti digitare il comando cvs -dP all'interno della directory squid

    % cd squid
    % cvs -z3 update -dP
         
    
  • per Squid-2.4 dovremmo utilizzare il comando

    % cvs -z3 -d :pserver:anoncvs@cvs.squid-cache.org:/squid co -r SQUID_2_4 squid
         
    

    per aggiornare i sorgenti digitare il comando cvs -dP all'interno della directory squid

    % cd squid
    % cvs -z3 update -dP
         
    

7.5.1.3. verificare il CVS appena prelevato

utilizzando il comando more(8) possiamo eseguire una pipe di interrogazione sul file di ./configure per verificare la versione di Squid appena prelevata da cvs.squid-cache.org

% cd squid
% more configure | grep VERSION
VERSION=2.5.STABLE7-RC3-CVS
    

non è possibile manipolare le versioni correnti e quelle passate dei files, i clients possono effettuare le stesse operazioni che sono anche disponibili localmente, maggiori informazioni per prelevare un sistema CVS possono essere reperite alla URLs https://www.cvshome.org/

7.5.2. Prelevare Squid

Oltre che sul sito web il file contenente il codice sorgente di Squid è anche disponibile sul sito ftp del progetto Squid (ftp://ftp.squid-cache.org/pub/squid-2/STABLE/), per prelevare il file utilizziamo il comando fetch(8), l'implementazione originale di questo comando è di Jean-Marc Zucconi e viene incluso in tutti i sistemi FreeBSD, in alternativa potremmo utilizzare l'utility wget(8), per maggiori informazioni a riguardo consultare la URLs http://www.gnu.org/software/wget/wget.html

% fetch ftp://ftp.squid-cache.org/pub/squid-2/STABLE/squid-2.5.STABLE6.tar.gz
Receiving squid-2.5.STABLE6.tar.gz (1355951 bytes): 100%
1355951 bytes transferred in 18.9 seconds (69.94 kBps)
   

presso la home page del progetto Squid sono anche disponibili tutte le patch che consentono di aggiungere funzionalità o di aggiornare la versione di Squid (http://www.squid-cache.org/Versions/v2/).

7.5.3. Compilare Squid

Per compilare Squid è necessario disporre di un compilatore ANSI C[1], tutti i moderni sistemi UNIX® includono un compilatore con queste caratteristiche preinstallato. I vecchi Sistemi SunOS non dispongono di compilatori compatibili con lo standard ANSI C ed il compilatore per i Sistemi Sun Solaris deve essere acquistato a parte.

Il compilatore GNU C è disponibile presso il sito ftp del progetto GNU (ftp://ftp.gnu.org/), inoltre per compilare ed installare correttamente Squid sono anche necessarie le librerie gcc (ftp://ftp.gnu.org/gnu/gcc/), il package binutils (ftp://ftp.gnu.org/gnu/binutils/) ed i linguaggi Awk e Perl (http://www.perl.org/).A seconda delle opzioni di compilazione e dei moduli di Squid selezionati, possono inoltre essere necessarie le librerie OpenLDAP ed OpenSSL, nonché i Sorgenti di Samba 2.2.x o 3.0.x.

7.5.4. eseguire lo script di configurazione

Dopo aver prelevato la distribuzione è necessario scompattarla, utilizzeremo in comando bunzip2(8) ed il comando tar(8), sono necessari almeno 20 MB liberi sul disco. In ogni caso, per compilare ed installare tutte le versioni di Squid, è necessario eseguire lo script di ./configure prima di lanciare il comando make

% bunzip2 squid-2.5.STABLE5.tar.bz2
% tar xvf squid-2.5.STABLE5.tar
squid-2.5.STABLE5/
squid-2.5.STABLE5/CONTRIBUTORS
...
% cd squid-2.5.STABLE5
% ./configure
   

tutte le caratteristiche di Squid vengono attivate utilizzando lo script di configurazione (./configure), alcune di queste caratteristiche, per essere attivate, devono essere dichiarate specificatamente al momento della compilazione dei codici sorgenti, per ottenere una configurazione ottimale può anche rendersi necessario ricompilare ulteriormente e vedremo in seguito come procedere.

Una delle ragioni per le quali una specifica caratteristica di Squid possa non essere disponibile è determinata dal livello di compatibilità del sistema operativo con i codici sorgenti. Anche se Squid viene rilasciato con un codice sorgente valido per un'utilizzo generico e multipiattaforma, è comunque possibile che determinate funzioni, come async-IO o le ACL ARP-based, non siano disponibili per quel tipo di sistema operativo. Lo script di configurazione (./configure) può contenere alcune caratteristiche che informano gli utenti sullo stato delle opzioni di configurazione disponibili.

Alcuni Amministratori di Sistema disabilitano volutamente determinate caratteristiche di Squid per rendere sempre più performante e sicuro il funzionamento delle loro piattaforme, come abbiamo accennato prima, è possibile includere in Squid le funzionalità che oggi non sono richieste senza problemi o effetti collaterali ricompilando i sorgenti in un secondo momento.

Il programma di configurazione (./configure) ha inoltre una seconda funzione, infatti inserisce una sorta di intestazione che informa il compilatore C relativamente alle chiamate o alle funzioni di Sistema. Questo fatto, molto spesso, rende la compilazione del codice sorgente piuttosto difficile. Il compilatore GNU configura i controlli dello script per programmare le librerie e le chiamate di Sistema realmente disponibili sul sistema operativo che state utilizzando. Questa funzionalità del compilatore GNU facilita la messa a punto del codice.

Il file di configurazione (./configure) è generico, in particolare si tratta di uno script realizzato per la Bourne Shell[2] (/bin/sh), se avete sostituito il comando /bin/sh con una Shell non compatibile o con una Shell che effettua delle chiamate non conformi allo standard Posix, non potrete compilare ed installare Squid sul Vostro Sistema Operativo.

Tutte le opzioni di configurazione vengono regolate dunque dall'opzione ./configure. Nell'esempio che tratteremo in seguito, compileremo Squid con diverse caratteristiche tra le quali, il modello di autenticazione, lo schema di autenticazione con i relativi helpers, diskd come modello di Disk Storage utilizzato ed il supporto Simple Network Management Protocol (SNMP)

% ./configure --prefix=/usr/local/squid/ \
--bindir=/usr/local/sbin \
--sysconfdir=/usr/local/etc/squid \
--datadir=/usr/local/etc/squid \
--libexecdir=/usr/local/libexec/squid \
--localstatedir=/usr/local/squid \
--enable-removal-policies="lru heap" \
--enable-auth="basic ntlm digest" \
--enable-basic-auth-helpers="NCSA PAM YP MSNT winbind" \
--enable-digest-auth-helpers=password \
--enable-external-acl-helpers="ip_user unix_group wbinfo_group winbind_group" \
--enable-ntlm-auth-helpers="SMB winbind" \
--enable-async-io --with-pthreads \
--enable-storeio="ufs diskd null aufs" \
--enable-snmp \
--enable-ssl \
--enable-htcp \
--disable-http-violations \
--disable-ident-lookups \
--enable-useragent-log \
--enable-arp-acl \
--enable-err-languages="English Italian" \
--enable-default-err-language="Italian" \
--prefix=/usr/local
   

molte di queste opzioni sono tra quelle che vengono più comunemente utilizzate.

7.5.5. eseguire nuovamente lo script di ./configure

Come abbiamo accennato in precedenza, molto spesso accade di avere la necessità di eseguire nuovamente lo script di ./configure, questo può accadere nel caso in cui si decida di modificare alcune caratteristiche. Per eseguire nuovamente lo script di configurazione con le stesse opzioni utilizzate in precedenza possiamo utilizzare lo script config.status

% cd squid-2.5.STABLE6
% ./config.status --recheck
   

il file ./config.status viene generato automaticamente al momento della prima eseguzione dello script di ./configure. Per aggiungere o rimuovere le opzioni di ./configure è necessario eseguire nuovamente il comando, prima di mandarlo in esecuzione eseguiremo un make clean

% make clean
% ./configure --enable-snmp
   

7.5.6. Applicare le patch

Per eseguire questa operazione è richiesta la presenza del programma patch, questo programma è disponibile sul sito ftp del progetto GNU (ftp://ftp.gnu.org/gnu/patch/) e generalmente viene incluso in qualsiasi sistema operativo di classe UNIX®.

E' sempre una buona norma duplicare l'intera struttura della directory che contiene i codici sorgenti di Squid prima di applicare qualsiasi patch

% cd squid-2.5.STABLE5
% patch < /tmp/nome_file.patch
   

dopo aver applicato la patch potremo finalmente eseguire il rebuild di Squid preparando i codici sorgenti alla piattaforma specifica

% make distclean
% ./configure
% make
% make install
   

se il programma patch(8) si dovesse rifiutare di funzionare è possibile che si stia utilizzando una versione troppo vecchia, possiamo prelevare una versione più recente dal repository ftp del progetto GNU (ftp://ftp.gnu.org/gnu/patch/).

7.5.7. Versione giornaliera autogenerata

Il daily snapshot dei codici sorgenti di Squid è il rilascio del codice sorgente più aggiornato per il branch corrente (attualmente squid-2.5). Dalla data di rilascio dell'ultima versione STABLE vengono rilasciate diverse patch che correggono gli errori rilevati dagli utenti e dagli sviluppatori. Questi aggiornamenti oltre ad altre correzioni minori, vengono incluse in una versione STABLE corrente di Squid, questa release prende il nome di "current Squid-2.5 snapshots" e viene rilasciata giornalmente. La versione current può essere considerata alla stregua della successiva release di Squid-STABLE. La procedura per installare e compilare la versione current è la medesima e la URLs dalla quale prelevare il codice sorgente è http://www.squid-cache.org/Versions/v2/2.5/, la sezione da consultare per procedere con il download è la "Daily auto-generated release"

% fetch http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE6-20040926.tar.gz
Receiving squid-2.5.STABLE6-20040926.tar.gz (1361403 bytes): 100%
1361403 bytes transferred in 19.2 seconds (69.40 kBps)
   

ora scompattiamo l'archivio contenente i sorgenti e configuriamo il codice per la nostra piattaforma

% tar zxvf squid-2.5.STABLE6-20040926.tar.gz
...
...
% cd squid-2.5.STABLE6-20040926
% ./configure --enable-removal-policies="lru heap" \
--enable-auth="basic ntlm digest" \
--enable-basic-auth-helpers="NCSA PAM YP MSNT winbind" \
--enable-digest-auth-helpers=password \
--enable-external-acl-helpers="ip_user unix_group wbinfo_group winbind_group" \
--enable-ntlm-auth-helpers="SMB winbind" \
--enable-async-io --with-pthreads \
--enable-storeio="ufs diskd null aufs" \
--enable-snmp \
--enable-ssl \
--enable-htcp \
--disable-http-violations \
--disable-ident-lookups \
--enable-useragent-log \
--enable-arp-acl \
--enable-err-languages="English Italian" \
--enable-default-err-language=Italian
   

naturalmente, come detto in precedenza, dovremo scegliere delle opzioni di configurazione (./configure) mirate che ci consentiranno di definire la nostra migliore configurazione, ora compiliamo il codice ed installiamo i file binari

% make
% make install
% make clean
   

7.5.8. Opzioni di configurazione

Come abbiamo visto, lo script di ./configure può essere avviato con numerose opzioni, una di quelle più utilizzate è

% ./configure --prefix
   

con questa opzione si definisce il percorso (path) nel quale verranno installati i file eseguibili di Squid, la directory che viene utilizzata come base di installazione nel file di configurazione incluso con la distribuzione è /usr/local/squid/.

Se si vuole installare Squid in un percorso diverso è quindi possibile modificare il valore standard eseguendo lo script di ./configure utilizzando le seguenti opzioni

% ./configure -exec-prefix=/usr/local/sbin
   

questa opzione consente di modificare il percorso di installazione dei file binari dipendenti dalla architettura

% ./configure --prefix=/usr/local/squid
   

questa opzione se utilizzata singolarmente imposterà la directory di default per gli eseguibili, i logs ed i files di configurazione, si tratta del valore standard

% ./configure --localstatedir=/var/log
   

questa opzione consente di modificare il percorso della directory di var

% ./configure --sysconfdir=/usr/local/etc/squid
   

questa opzione consente di modificare il percorso della directory etc

% ./configure --help
   

questa opzione consente di visualizzare tutte le opzioni di ./configure attualmente disponibili, per abilitare o disabilitare alcune delle features di Squid, dovremo specificare diverse opzioni di configurazione. Mostriamo ora tutte le opzioni di ./configure, la lista è aggiornata a squid-2.5.STABLE10

Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
  --cache-file=FILE       cache test results in FILE
  --help                  print this message
  --no-create             do not create output files
  --quiet, --silent       do not print `checking...' messages
  --site-file=FILE        use FILE as the site file
  --version               print the version of autoconf that created configure
Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/squid]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --bindir=DIR            user executables in DIR [EPREFIX/bin]
  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
  --datadir=DIR           read-only architecture-independent data in DIR
                          [PREFIX/share]
  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
                          [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
  --includedir=DIR        C header files in DIR [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
  --infodir=DIR           info documentation in DIR [PREFIX/info]
  --mandir=DIR            man documentation in DIR [PREFIX/man]
  --srcdir=DIR            find the sources in DIR [configure dir or ..]
  --program-prefix=PREFIX prepend PREFIX to installed program names
  --program-suffix=SUFFIX append SUFFIX to installed program names
  --program-transform-name=PROGRAM
                          run sed PROGRAM on installed program names
Host type:
  --build=BUILD           configure for building on BUILD [BUILD=HOST]
  --host=HOST             configure for HOST [guessed]
  --target=TARGET         configure for TARGET [TARGET=HOST]
Features and packages:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --x-includes=DIR        X include files are in DIR
  --x-libraries=DIR       X library files are in DIR
--enable and --with options recognized:
  --disable-dependency-tracking Speeds up one-time builds
  --enable-dependency-tracking  Do not reject slow dependency extractors
  --enable-maintainer-mode enable make rules and dependencies not useful
                          (and sometimes confusing) to the casual installer
  --enable-dlmalloc[=LIB] Compile & use the malloc package by Doug Lea
  --enable-gnuregex       Compile GNUregex
  --enable-xmalloc-statistics
                          Show malloc statistics in status page
  --enable-carp           Enable CARP support
  --enable-async-io[=N_THREADS]
                          Shorthand for
                          --with-aufs-threads=N_THREADS
                          --with-pthreads
                          --enable-storeio=ufs,aufs
  --with-aufs-threads=N_THREADS
                          Tune the number of worker threads for the aufs object
                          store.
  --with-pthreads         Use POSIX Threads
  --with-aio              Use POSIX AIO
  --with-dl               Use dynamic linking
  --enable-storeio="list of modules"
                          Build support for the list of store I/O modules.
                          The default is only to build the ufs module.
                          See src/fs for a list of available modules, or
                          Programmers Guide section <not yet written>
                          for details on how to build your custom store module
  --enable-heap-replacement
                          Backwards compability option. Please use the
                          new --enable-removal-policies directive instead.
  --enable-removal-policies="list of policies"
                          Build support for the list of removal policies.
                          The default is only to build the lru module.
                          See src/repl for a list of available modules, or
                          Programmers Guide section 9.9 for details on how
                          to build your custom policy
  --enable-icmp           Enable ICMP pinging
  --enable-delay-pools    Enable delay pools to limit bandwidth usage
  --enable-useragent-log  Enable logging of User-Agent header
  --enable-referer-log    Enable logging of Referer header
  --disable-wccp          Disable Web Cache Coordination Protocol
  --enable-kill-parent-hack
                          Kill parent on shutdown
  --enable-snmp           Enable SNMP monitoring
  --enable-cachemgr-hostname[=hostname]
                          Make cachemgr.cgi default to this host
  --enable-arp-acl        Enable use of ARP ACL lists (ether address)
  --enable-htcp           Enable HTCP protocol
  --enable-ssl            Enable ssl gatewaying support using OpenSSL
  --with-openssl[=prefix]
                          Compile with the OpenSSL libraries. The path to
                          the OpenSSL development libraries and headers
                          installation can be specified if outside of the
                          system standard directories
  --enable-forw-via-db    Enable Forw/Via database
  --enable-cache-digests  Use Cache Digests
                          see http://www.squid-cache.org/FAQ/FAQ-16.html
  --enable-default-err-language=lang
                          Select default language for Error pages (see
                          errors directory) 
  --enable-err-languages="lang1 lang2.."
                          Select languages to be installed. (All will be
                          installed by default) 
  --with-coss-membuf-size COSS membuf size (default 1048576 bytes) 
  --enable-poll           Enable poll() instead of select().  Normally poll
                          is preferred over select, but configure knows poll
                          is broken on some platforms.  If you think you are
                          smarter than the configure script, you may enable
                          poll with this option.
  --disable-poll          Disable the use of poll().
  --disable-http-violations
                          This allows you to remove code which is known to
                          violate the HTTP protocol specification.
  --enable-ipf-transparent
                          Enable Transparent Proxy support for systems
                          using IP-Filter network address redirection.
  --enable-pf-transparent
                          Enable Transparent Proxy support for systems
                          using PF network address redirection.
  --enable-linux-netfilter
                          Enable Transparent Proxy support for Linux 2.4.
  --with-large-files      Enable support for large files (logs etc).
  --enable-large-cache-files
                          Enable support for large cache files (>2GB).
                          WARNING: on-disk cache format is changed by this option
  --with-build-environment=model
                          The build environment to use. Normally one of
                          POSIX_V6_ILP32_OFF32   32 bits
                          POSIX_V6_ILP32_OFFBIG  32 bits with large file support
                          POSIX_V6_LP64_OFF64    64 bits
                          POSIX_V6_LPBIG_OFFBIG  large pointers and files
                          XBS5_ILP32_OFF32       32 bits (legacy)
                          XBS5_ILP32_OFFBIG      32 bits with large file support (legacy)
                          XBS5_LP64_OFF64        64 bits (legacy)
                          XBS5_LPBIG_OFFBIG      large pointers and files (legacy)
                          default                The default for your OS
  --enable-leakfinder
                          Enable Leak Finding code.  Enabling this alone
                          does nothing; you also have to modify the source
                          code to use the leak finding functions.  Probably
                          Useful for hackers only.
  --disable-ident-lookups
                          This allows you to remove code that performs
                          Ident (RFC 931) lookups.
  --disable-internal-dns  This prevents Squid from directly sending and
                          receiving DNS messages, and instead enables the
                          old external 'dnsserver' processes.
  --enable-truncate       This uses truncate() instead of unlink() when
                          removing cache files.  Truncate gives a little
                          performance improvement, but may cause problems
                          when used with async I/O.  Truncate uses more
                          filesystem inodes than unlink..
  --disable-hostname-checks
                          Squid by default rejects any host names with
                          odd characters in their name to conform with
                          internet standards. If you disagree with this
                          you may use this switch to turn off any such
                          checks, provided that the resolver used by
                          Squid does not reject such host names.. This
                          may be required to participate in testbeds for
                          international domain names.
  --enable-underscores    Squid by default rejects any host names with _
                          in their name to conform with internet standards.
                          If you disagree with this you may allow _ in
                          hostnames by using this switch, provided that
                          the resolver library on the host where Squid runs
                          does not reject _ in hostnames...
  --enable-auth="list of auth scheme modules"
                          Build support for the list of authentication schemes.
                          The default is to build support for the Basic scheme.
                          See src/auth for a list of available modules, or
                          Programmers Guide section authentication schemes
                          for details on how to build your custom auth scheme
                          module
  --enable-auth-modules="list of helpers"
                          Backwards compability alias for --enable-basic-auth-helpers
  --enable-basic-auth-helpers="list of helpers"
                          This option selects which basic scheme proxy_auth
                          helpers to build and install as part of the normal 
                          build process. For a list of available
                          helpers see the helpers/basic_auth directory.
  --enable-ntlm-auth-helpers="list of helpers"
                          This option selects which proxy_auth ntlm helpers
                          to build and install as part of the normal build 
                          process. For a list of available helpers see
                          the helpers/ntlm_auth directory.
  --enable-digest-auth-helpers="list of helpers"
                          This option selects which digest scheme authentication
                          helpers to build and install as part of the normal build
                          process. For a list of available helpers see the
                          helpers/digest_auth directory.
  --enable-ntlm-fail-open Enable NTLM fail open, where a helper that fails one of the
                          Authentication steps can allow squid to still authenticate
                          the user.
  --enable-external-acl-helpers="list of helpers"
                          This option selects which external_acl helpers to
                          build and install as part of the normal build
                          process. For a list of available helpers see the
                          helpers/external_acl directory.
  --with-samba-sources=/path/to/samba-source-tree
                          Path where the correct Samba source files can be
                          found while building winbind helpers. (defaults to
                          use internal copies of the headers from Samba-2.2.7)
  --disable-unlinkd       Do not use unlinkd
  --enable-stacktraces    Enable automatic call backtrace on fatal errors
  --enable-x-accelerator-vary
                          Enable support for the X-Accelerator-Vary
                          HTTP header. Can be used to indicate
                          variance within an accelerator setup.
                          Typically used together with other code
                          that adds custom HTTP headers to the requests.
  --with-maxfd=N          Override maximum number of filedescriptors. Useful
                          if you build as another user who is not privileged
                          to use the number of filedescriptors you want the
                          resulting binary to support
   

Note

[1]

ANSI C è un linguaggio di programmazione

[2]

Bourne Shell (sh) è la più vecchia delle shell di sistema e prende il nome dal suo creatore, Stephen Bourne. Si tratta di una shell molto primitiva se paragonata con quelle più moderne e funzionali