Ubuntu

在 Ubuntu 12.10 上更新 SVN 到 1.8.3 後的問題(使用 WANdisco 包)

  • April 2, 2014
apache2: Syntax error on line 203 of /etc/apache2/apache2.conf:
Syntax error on line 2 of /etc/apache2/mods-enabled/authz_svn.load:
Cannot load /usr/lib/apache2/modules/mod_authz_svn.so into server:
/usr/lib/apache2/modules/mod_authz_svn.so: undefined symbol: dav_svn_get_repos_path
Action 'configtest' failed.

當我嘗試重新啟動伺服器時,在 Ubunutu (12.10 Quantal) 上更新 SVN 後出現此錯誤。所有模組 dav、dav_svn 和 authz_svn 都在執行中。不幸的是,在我選擇的搜尋引擎中搜尋錯誤並沒有讓我更進一步。當通過瀏覽器訪問 svn 時,它仍然告訴版本是 1.7.5.x,當執行“svn help”時它顯示 1.8.3.x

再次降級到 1.7.5 後,我得到了這個:

Syntax error on line 203 of /etc/apache2/apache2.conf:
Syntax error on line 2 of /etc/apache2/mods-enabled/authz_svn.load: Cannot load
/usr/lib/apache2/modules/mod_authz_svn.so into server: libsvn_repos-1.so.0:
cannot open shared object file: No such file or directory

在 Ubuntu 12.04 中安裝自定義 Subversion 1.7 Apache 模組後,我遇到了類似的錯誤。模組必須按以下順序載入:dav -> dav_svn_module -> authz_svn_module,以便庫正確載入。libapache2-svn Ubuntu 軟體包似乎通過 .load 文件頂部的“Depends:”註釋來處理這個問題:

/etc/apache2/mods-available/dav_svn.load:

# Depends: dav
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so

/etc/apache2/mods-available/authz_svn.load

# Depends: dav_svn
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

根據我的經驗,我的自定義模組是根據這些依賴項啟用/禁用的,但是 Apache 仍然嘗試按字母順序載入 /etc/apache2/mods-enabled/*,因此首先載入 authz_svn.load 並出現上述錯誤。我不知道 libapache2-svn 包如何避免這個問題,而自定義模組卻沒有。

我通過完全刪除 mods-available/mods-enabled dav_svn.load 和 authz_svn.load 文件解決了這個問題。然後我把它放到 /etc/apache2/httpd.conf 中:

LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

顯然,訂單很重要。Apache 在啟用 mods 後載入 httpd.conf,所以現在 Apache 為我啟動。

引用自:https://serverfault.com/questions/540873