Squid Web Cache Wiki

Squid Web Cache 文档

🔗 编译 Squid

🔗 我应该下载哪个文件来获取 Squid?

这取决于您选择尝试的 Squid 版本。当前发布的版本列表可以在 https://squid.org.cn/Versions/ 找到。每个版本都有一个发布包页面。通常您想要列为最新发布的版本包。

您必须下载一个形式为 squid-x.y.tar.gz 或 squid-x.y.tar.bz2 的源代码存档文件(例如,squid-2.6.STABLE14.tar.bz2)。

或者,Squid 的主要 WWW 网站 www.squid-cache.org 和 FTP 站点 ftp.squid-cache.org 也提供这些文件。

通常提供上下文差异文件用于升级到新版本。这些可以使用 patch 程序应用(可从 GNU FTP 站点 或您的发行版获取)。

🔗 是否有预编译的二进制文件可用?

参见 SquidFaq/BinaryPackages

🔗 如何编译 Squid?

在运行 make 之前,您必须自己运行 configure 脚本。我们建议您首先调用 ./configure –help 并记下您需要用来支持您打算使用的功能的配置选项。不要编译您认为不需要的功能。

% tar xzf squid-2.6.RELEASExy.tar.gz
% cd squid-2.6.RELEASExy
% ./configure --with-MYOPTION --with-MYOPTION2 etc
% make
% make check
% make install

默认情况下,Squid 会安装到 /usr/local/squid。如果您想安装到其他位置,请参阅 configure 的 –prefix 选项。

🔗 我需要哪种编译器?

您需要一个 C++ 编译器

如果您不确定您的系统的 C 编译器,GNU C 编译器是广泛可用的,并且几乎在所有操作系统中都有提供。它也经过 Squid 的良好测试。如果您的操作系统没有自带 GCC,您可以从 GNU FTP 站点 下载。除了 gccg++ 之外,您可能还想要或需要安装 binutils 包以及一些库,具体取决于您想要启用哪些功能集。

Clang 是 gcc 的一个流行替代品,尤其是在 BSD 系统上。它通常也能很好地用于构建 Squid。过去或现在经过测试的其他替代品包括 Intel 的 C++ 编译器和 Sun 的 SunStudio。Microsoft Visual C++ 是 Squid 开发人员的目标之一,但在撰写本文时(2014 年 4 月)仍然有相当大的距离。

:warning: 请注意,由于 clang 对原子操作的支持存在 bug,Squid 无法在 3.2 之前的 clang 版本上构建。

🔗 编译 Squid 还需要什么?

您将需要 automake 工具集来从 Makefiles 编译。

您需要 Perl 安装在您的系统上。

您选择启用的每个功能可能还需要额外的库或工具来构建。

了解完整 Squid 安装的依赖关系的简便方法是查看用于运行项目 CI/CD 的容器的 Dockerfile

🔗 如何交叉编译 Squid?

使用 ./configure 选项 –host 来指定 Squid 将安装的机器的交叉编译元组。 autotools 手册 有关于此及其他交叉配置选项的一些简单文档——特别是它们的确切含义是一个非常有用的细节。

此外,Squid 是使用几个自定义工具创建的,这些工具本身是在构建过程中创建的。这需要一个 C++ 编译器来生成可以在构建平台上运行的二进制文件。需要提供 HOSTCXX= 参数来指定该编译器的名称或路径。

🔗 如何应用补丁或 diff?

您需要 patch 程序。在应用补丁之前,您可能应该复制整个目录结构。例如,如果您从 squid-2.6.STABLE13 升级到 2.6.STABLE14,您将运行以下命令:

cp -rl squid-2.6.STABLE13 squid-2.6.STABLE14
cd squid-2.6.STABLE14
zcat /tmp/squid-2.6.STABLE13-STABLE14.diff.gz | patch -p1

:information_source: Squid-2 补丁需要 -p1 选项。

:information_source:
Squid-3 patches require the **-p0** option.

应用补丁后,您必须从头开始重新构建 Squid,即:

make distclean
./configure [--option --option...]
make
make install

如果您的 patch 程序出现错误或拒绝工作,您应该获取一个更新的版本,例如从 GNU FTP 站点

理想情况下,您应该使用您的操作系统附带的 patch 命令。

🔗 configure 选项

configure 脚本可以接受许多选项。最有用的是 –prefix,用于将 Squid 安装到不同的目录。默认安装目录是 /usr/local/squid/。要更改默认设置,您可以这样做:

% cd squid-x.y.z
% ./configure --prefix=/some/other/directory/squid

某些操作系统要求将文件安装在特定位置。请参阅下面的特定于操作系统的说明,了解 ./configure 选项,这些选项对于正确进行这些安装是必需的。

输入

% ./configure --help

以查看所有可用选项。您将需要指定其中一些选项来启用或禁用特定功能。一些常用的选项包括:

--prefix=PREFIX         install architecture-independent files in PREFIX
                        [/usr/local/squid]
--enable-dlmalloc[=LIB] Compile & use the malloc package by Doug Lea
--enable-gnuregex       Compile GNUregex
--enable-xmalloc-debug  Do some simple malloc debugging
--enable-xmalloc-debug-trace
                        Detailed trace of memory allocations
--enable-xmalloc-statistics
                        Show malloc statistics in status page
--enable-async-io       Do ASYNC disk I/O using threads
--enable-icmp           Enable ICMP pinging and network measurement
--enable-delay-pools    Enable delay pools to limit bandwidth usage
--enable-useragent-log  Enable logging of User-Agent header
--enable-kill-parent-hack
                        Kill parent on shutdown
--enable-cachemgr-hostname[=hostname]
                        Make cachemgr.cgi default to this host
--enable-htpc           Enable HTCP protocol
--enable-forw-via-db    Enable Forw/Via database
--enable-cache-digests  Use Cache Digests
                        see https://squid.org.cn/Doc/FAQ/FAQ-16.html

这些选项对于 Squid-2 也常用,但在 Squid-3 中已成为默认值。

--enable-carp           Enable CARP support
--enable-snmp           Enable SNMP monitoring
--enable-err-language=lang
                        Select language for Error pages (see errors dir)

🔗 在 ... 上构建 Squid

🔗 BSD/OS 或 BSDI

:x: 已知问题

cache_cf.c: In function `parseConfigFile':
cache_cf.c:1353: yacc stack overflow before `token'
...

您可能需要升级您的 gcc 安装以使用更新的版本。使用 gcc -v 检查您的 gcc 版本。

如果它早于 2.7.2,您可能需要考虑升级。Gcc 2.7.2 非常老旧,支持范围不广。

🔗 CentOS

# You will need the usual build chain
yum install -y perl gcc autoconf automake make sudo wget

# and some extra packages
yum install libxml2-devel libcap-devel

# to bootstrap and build from bzr needs also the packages
yum install libtool-ltdl-devel

以下 ./configure 选项可以正确地将 Squid 安装到 CentOS 结构中。

  --prefix=/usr
  --includedir=/usr/include
  --datadir=/usr/share
  --bindir=/usr/sbin
  --libexecdir=/usr/lib/squid
  --localstatedir=/var
  --sysconfdir=/etc/squid

🔗 Debian, Ubuntu

Ubuntu 和 Debian 的许多版本都在我们的 BuildFarm 中经过例行构建和单元测试,并且已知可以正常编译。

:warning: Linux 系统布局与 Squid 的默认设置有很大不同。以下 ./configure 选项是必需的,以便将 Squid 安装到 Debian / Ubuntu 标准文件系统位置:`

    --prefix=/usr \
    --localstatedir=/var \
    --libexecdir=${prefix}/lib/squid \
    --datadir=${prefix}/share/squid \
    --sysconfdir=/etc/squid \
    --with-default-user=proxy \
    --with-logdir=/var/log/squid \
    --with-pidfile=/var/run/squid.pid

当然,还有您可能需要的任何自定义配置选项。

:x: 对于 Debian Jesse (8)、Ubuntu Oneiric (11.10) 或更早的 squid3 包;上述 squid 标签应附加 3

:x: 请记住,这些只是默认设置。通过修改 squid.conf,您可以将日志指向正确的路径,而无需变通方法或打补丁。

一如既往,要支持您想构建的功能,可能需要额外的库。可以使用以下命令安装默认的包依赖项:

aptitude build-dep squid

这只需要您的 sources.list 包含 deb-src 仓库以获取源包信息。发行版包不支持的功能将需要进行调查以发现依赖包并进行安装。

:information_source: 通常请求的是 libssl-dev 以支持 SSL。

:warning: 但是,请注意 Squid-3.5 与 OpenSSL v1.1+ 不兼容。从 Debian Squeeze 或 Ubuntu Zesty 开始,必须改用 libssl1.0-dev 包。这在 Squid-4 包中已解决。

🔗 Fedora

最简单的重建 RPM 二进制包的方法是安装 fedpkg 工具。

yum install fedpkg

克隆包

fedpkg clone -a squid

然后使用 fedpkg mockbuild 重建包。

cd squid
fedpkg mockbuild

🔗 FreeBSD, NetBSD, OpenBSD

通常您只需要 通用构建说明

但是,如果您希望将 Squid 的补丁与您的其他 FreeBSD 包的补丁集成,最简单的方法可能是从 Ports 集合安装 Squid。截至 FreeBSD 12.2,可用的端口是:

安装 squid-4:

cd /usr/ports/www/squid
make install clean

🔗 Windows

新的 configure 选项

更新的 configure 选项

不支持的 configure 选项

🔗 使用 Cygwin 编译

:warning: 本节需要重写。它在编译 Squid 方面内容很少,而关于安装的内容很多。

要编译 Squid,您需要完全安装 Cygwin。

Cygwin 环境的使用与许多 Unix/Linux 环境非常相似,并且必须安装 -devel 版本的库。

:information_source: 默认情况下,Squid 会安装到 /usr/local/squid。如果您想安装到其他位置,请参阅 configure 的 –prefix 选项。

现在,添加一个新 Cygwin 用户 - 请参阅 Cygwin 用户指南 - 并将其映射到 SYSTEM,或者创建一个新的 NT 用户和一个匹配的 Cygwin 用户,它们将成为 squid 的运行用户。

如果您使用 CYGWIN=ntsec,请阅读关于权限的 squid FAQ。

完成后运行

squid -z

如果成功,请尝试:

squid -N -D -d1

Squid 应该会启动。检查是否有任何错误。如果一切看起来都很好,尝试通过 squid 浏览。

现在,配置 cygrunsrv 以您选择的用户名作为服务运行 Squid。您可能需要在此处检查权限。

🔗 使用 MinGW 编译

要使用 MinGW 环境编译 squid,必须安装 MSYS、MinGW 和 msysDTK 包。必须单独下载一些额外的库和工具。

:information_source: 3.2+ 版本需要更新的 4.6 或更高版本的 libdb。

在构建具有 SSL 支持的 Squid 之前,需要执行一些操作(在以下示例中,OpenSSL 安装在 C:\OpenSSL,MinGW 安装在 C:\MinGW)。

像往常一样解压源代码存档并运行 configure。

以下是 Windows 的推荐最小选项:

Squid-3: (需要 Squid-3.5 或更高版本,请参见下面的移植工作部分)

--prefix=c:/squid
--enable-default-hostsfile=none

然后像往常一样运行 make 和 install。

Squid 将安装到 c:\squid。如果您想安装到其他位置,请更改 configure 的 –prefix 选项。

完成后运行

squid -z

如果成功,请尝试:

squid -N -D -d1

现在,要将 Squid 运行为 Windows 系统服务,请运行 squid -n,这将创建一个名为“Squid”的自动启动服务。要启动它,请从命令提示符运行 net start squid 或使用服务管理工具。

请务必查看提供的发行说明以获取任何特定于版本的详细信息。

🔗 RedHat, RHEL

以下 ./configure 选项可以将 Squid 正确安装到 RedHat 结构中。

  --prefix=/usr
  --includedir=/usr/include
  --datadir=/usr/share
  --bindir=/usr/sbin
  --libexecdir=/usr/lib/squid
  --localstatedir=/var
  --sysconfdir=/etc/squid

🔗 其他平台

请告知我们您已成功构建 squid 的其他平台。无论成功与否。

请检查 Squid 已知可以编译的 平台页面

如果您遇到的问题未在上文列出且有解决方案,请通过电子邮件发送给我们 squid-dev,告知您正在尝试的操作、您的 Squid 版本以及您遇到的问题。

🔗 编译 Squid 时看到很多警告。

警告通常不会引起太大担忧,并且对于设计用于跨多个平台运行的软件来说很常见。Squid 3.2 及更高版本应该可以构建而不会产生任何警告;我们投入了大量精力使代码真正具有可移植性。

🔗 未定义的引用:__inet_ntoa

您可能安装了 bind 8.x。

更新:该版本的 bind 现在已正式废弃,并且已知存在严重的基础设施漏洞。应尽快将其升级到 bind 9.x 或替换。

回到 FAQ 索引

导航: 网站搜索网站页面分类🔼 向上