Linux

使用舊軟體包時遇到問題 - Debian jessie/Libdb

  • September 5, 2018

我一直試圖讓 squidguard 執行。這是由於 berkelydb ( libdb ) 的版本。

這是一個全新的 Debian jessie 伺服器安裝。沒有 gui,只有 ssh、build-essential 等。

從源安裝魷魚。沒問題。

試圖從 apt 安裝 squidgaurd。想安裝squid3,所以沒有。從原始碼安裝 squidguard。沒用。意識到錯誤的使用者。用正確的使用者重新編譯。沒有錯誤。

配置squidguard。用 squidguard -d 去測試配置並得到這個:

2015-10-29 18:41:10 [10707] New setting: dbhome: /usr/local/squidGuard/db
2015-10-29 18:41:10 [10707] New setting: logdir: /usr/local/squidGuard/log
BDB1565 DB->put: method not permitted before handle's open method
2015-10-29 18:41:10 [10707] sgDbUpdate: put: Invalid argument
2015-10-29 18:41:10 [10707] Going into emergency mode

Google了一下。看到 1.4 的問題與 berkelydb 4.6 之後的任何問題有關。

找到 libdb4.6 的 .deb。已安裝。同樣的失敗。用–with-db 重新編譯指向/usr/lib/libdb-4.6.so - 相同的失敗 用–with-db-lib 重新編譯指向/usr/lib/libdb-4.6.so - 相同的失敗 再次嘗試沒有.so 文件名。同樣的失敗。

接下來我想也許我錯過了什麼。所以我找到了squeeze backport儲存庫並嘗試從那裡重新安裝libdb4.6。

Reinstallation of libdb4.6 is not possible, it cannot be downloaded.
Reinstallation of libdb-dev is not possible, it cannot be downloaded.

在這一點上,我已經達到了我的 linux 技能的終點。我已經嘗試了各種搜尋組合,但沒有找到太多。

我打算嘗試 mysql 支持,但據我所知,它僅用於身份驗證。

我要麼喜歡:

To fix this and get it working
Find something other than squidguard that can do blacklists.

我知道這個問題已經很久了,但我一直在努力解決同樣的問題。

為了解決我做了以下事情:

下載 BerkeleyDB 並從原始碼編譯它。

tar -xzvf db-4.6.21.tar.gz

cd db-4.6.21

cd build_unix/

../dist/configure --prefix=/usr/local/berkeleydb

make

make install

echo "/usr/local/berkeleydb/lib/" >> /etc/ld.so.conf

ldconfig

再次編譯 SquidGuard:

./configure  --with-db=/usr/local/berkeleydb

核實:

squidGuard -v

SquidGuard: 1.4 Berkeley DB 4.6.21: (September 27, 2007)

squidGuard -d

2018-09-04 23:00:47 [7581] New setting: dbhome: /usr/local/squidGuard/db
2018-09-04 23:00:47 [7581] New setting: logdir: /usr/local/squidGuard/log
2018-09-04 23:01:01 [7581] squidGuard 1.4 started (1536112847.496)
2018-09-04 23:01:01 [7581] squidGuard ready for requests (1536112861.611)

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