在 Mint17 上从源代码构建“apache2”后找不到“a2dissite”和“a2ensite”

在 Mint17 上从源代码构建“apache2”后找不到“a2dissite”和“a2ensite”

建成后Apache2 http 服务器从源头(2.4.23)我没有a2dissitea2ensite命令。

配置为:

./configure --with-included-apr --prefix=/usr/local/apache2

当我跑步时:

whereis apache2

我得到:

apache2: /etc/apache2 /usr/local/apache2

which apache2什么也没显示,也许需要一些符号链接到/usr/bin? http://localhost工作正常。

源版本信息:

/usr/local/apache2/bin/apachectl -v Server version: Apache/2.4.23 (Unix) Server built: Nov 1 2016 22:52:26

Linux版本:

linux mint 17
3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 

答案1

我猜您是从 Apache Software Foundation 提供的源代码构建的。脚本a2en...(和支持配置)是特定于 Debian 的;你会在相应的目录中找到源代码Debian 存储库

从源代码构建httpd服务器并且仍然能够使用a2ensite等的最佳选择是使用 Debian 源代码包:

sudo apt-get install devscripts dpkg-dev build-essential
sudo apt-get build-dep apache2
dget http://httpredir.debian.org/debian/pool/main/a/apache2/apache2_2.4.23-5.dsc
cd apache2-2.4.23
dpkg-buildpackage -us -uc

前两个命令安装构建所需的软件包apache2;然后dget下载并解压源包,dpkg-buildpackage构建它并生成一系列可以像往常一样.deb手动安装的包。dpkg

如果该build-dep行不起作用,则以下内容等效于apache2

sudo apt-get install debhelper lsb-release libaprutil1-dev libapr1-dev libpcre3-dev zlib1g-dev libnghttp2-dev libssl-dev perl liblua5.2-dev libxml2-dev autotools-dev gawk dh-systemd

答案2

不要将事物符号链接到/usr/bin.这是一个非常糟糕的主意,你不应该这样做。

为什么?因为大部分/usr,包括/usr/bin,都是为包管理器保留的。任何不是包管理器的东西,包括你,都不应该接触那里的东西。

/usr/local存在是为了提供安装本地编译的软件的地方。通常,您将提供/usr/local作为前缀,而不是/usr/local/apache2. (顺便说一句,前缀是 bin 路径、库路径等的前缀。因此,例如 Apache 的命令行工具将进入$PREFIX/bin,其库将进入$PREFIX/lib/apache2,等等。)

问题的解决方案是添加/usr/local/apache2/bin到 shell 用于查找二进制文件的路径列表中。这通常被称为$PATH或简称为“您的路径”​​,并且可以使用如下命令进行更改:

export PATH="/usr/local/apache2/bin:$PATH"

您可以将其放入 shell 的启动文件之一中以使其永久化。

话虽如此,我怀疑你仍然找不到a2ensitea2dissite。如果我没记错的话,这两个命令都是由 Debian 开发人员添加的,然后由 Mint 继承。因此,它们不包含在上游 Apache 源代码中。斯蒂芬·基特的很好的答案将告诉您如何获取这些命令。

相关内容