問題描述
我在Ubuntu上安裝了sqlite3
軟件包,並且不支持readline。這意味著沒有命令曆史記錄,而readline提供的其他精美功能也給您提供。
這是配置還是包裝問題?是否有其他軟件包存檔可以為我提供開箱即用的readline支持?否則,我如何自己編譯sqlite3以確保它具有readline支持?
最佳答案
您可以隨時使用rlwrap:
rlwrap sqlite3 database.db
僅供參考,我剛剛檢查了我的安全蒼鷺安裝,其sqlite3確實具有readline支持。
次佳答案
我添加了另一個答案,因為這是google上“ ubuntu sqlite3 readline”的首次點擊:
android SDK將安裝自己的sqlite3
二進製版本。該二進製文件不提供readline
支持。如果您將Android SDK添加到路徑中,這可能會使您認為您不具有readline
支持,實際上,每個Ubuntu軟件包都是使用readline
支持編譯的。
另請參見此Ubuntu Bug Report,它描述了相同的情況。
第三種答案
-
從https://www.sqlite.org/download.html下載包含C源代碼的zip文件(sqlite-amalgamation-nnnnnnn.zip)
-
將其解壓縮以獲取shell.c,sqlite3.c和.h文件。
-
如果尚未安裝,請安裝libreadline和libncurses。在Ubuntu Linux上,通過運行以下命令進行安裝:sudo apt install libreadline-dev libncurses-dev
-
運行以下命令來構建:gcc -DSQLITE_ENABLE_FTS5 -DHAVE_READLINE shell.c sqlite3.c -lpthread -ldl -lm -lreadline -incurses -o sqlite3
注意:您需要-DHAVE_READLINE以及-lreadline和-inccurses才能獲得讀取行功能。
將sqlite3二進製文件複製到/usr /bin或添加到您的路徑。