在 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 原始碼中。史蒂芬·基特的很好的答案將告訴您如何取得這些命令。

相關內容