一、源碼獲取
1.源碼路徑可從官網直接下載對應版本的代碼,此爲官網下載地址https://www.postgresql.org/ftp/source/,我採用的是此路徑。
2.可從gituhub倉庫克隆下來,克隆命令爲
git clone git://git.postgresql.org/git/postgresql.git
源碼的目錄(11.5版本)如下:
二、requirements
官方源碼包:
1. GNU make >= 3.80,可通過make --version查看版本(有時make也被gmake名稱代替),若沒有,請安裝。
2.ISO/ANSI C編譯器,C89及其之後版本,可通過如下相關命令之一查看
cc -v
gcc -v
clang -v
3.GNU Readline庫,有時又命名爲libedit,libreadline,沒有該庫可以在安裝“configure”中設置“--without-readline”選項,後面會提及。
4.zlib 壓縮庫,以上兩個依賴庫一般存在於/usr/lib下,同樣可以設置“-without-zlib”。
Git克隆源碼:
如果是通過git下來的源碼,除以上要求,還需要:
1. Flex >=2.5.31
2. Bison>=1.875
3. Perl >=5.8.3
三、安裝(可自行參照源碼包裏的INSTALL,裏面有官方詳細講解)
1.運行configure檢查系統環境。
可以選擇在configure執行
./configure
也可單獨新建一個文件夾然後在該目錄下運行configure(推薦這種方式,因爲安裝過程中會新生成一些文件,後面可刪除)
mkdir build_dir
cd build_dir
// build_dir裏運行configure
運行部分截圖如下:
2.make編譯。
在編譯階段可有多種選項選擇(例如上文提到的缺失庫情況),若有相關要求,自行參照INSTALL文件配置選項。
通常,make語句即可。
make
運行截圖如下,若成功,最後一句話應該爲“All of PostgreSQL successfully made. Ready to install.”
若需要安裝說明文檔(HTML and man pages)和contrib模塊,可以執行以下語句
make world
3.迴歸檢驗(可跳過此步)
運行命令
make check
運行截圖
4.安裝
運行命令
make install
部分截圖
若在前面編譯階段選了make world命令,此處可執行以下命令安裝說明文檔。
make install-world
部分截圖
ok,到此postgresql已經安裝成功了!安裝目錄在/usr/local/pgsql。但是,要想安心使用,還需要後面的配置步驟。
四、配置
1.共享庫配置
postgresql裏提供了一些庫函數以供調用,它們在/usr/localpgsql/lib下,如下所示:
需要配置環境變量LD_LIBRARY_PATH。可選擇在shell命令行("sh", "ksh","bash", "zsh")輸入以下命令:
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
若是 "csh" or "tcsh",則輸入:
setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
但以上命令僅僅使LD_LIBRARY_PATH存活在shell生存期,關閉命令行,也就失效。因此,可以寫到系統環境配置/etc/profile或用戶環境配置~/.bash_profile文件中去(推薦後者)。輸入以下命令:
vim ~/.bash_profile
在打開文件中添加上述兩行命令代碼:
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
2.環境變量配置
postgresql安裝於/usr/local/pgsql下,爲了使用方便,應該爲其配置環境變量。同上麪包配置一樣,爲了長期生效,應將環境變量配置於文件中,執行以下命令:
vim ~/.bash_profile
在文件中添加以下代碼:
PATH=$PATH:/usr/local/pgsql/bin
如果安裝了說明文檔,再添加兩行代碼:
MANPATH=/usr/local/pgsql/share/man:$MANPATH
export MANPATH
3.檢查配置
退出當前shell,重開命令臺,輸入命令,檢查配置是否都正確。
export -p
五、使用數據庫
1.需要爲PostgreSQL server配置一個用戶
若在linux下,可以使用以下命令(配置一個名爲postgres的用戶):
adduser postgres
在root模式下:
root# mkdir /usr/local/pgsql/data
root# chown postgres /usr/local/pgsql/data
root# su - postgres
但是,由於Mac os沒有adduser命令,其添加用戶通過dscl命令。
sudo dscl . -create /Users/postgres
通過以下命令,可查看是否成功
dscl . -list /Users
不過,我用戶添加成功之後,問題來了,當我使用以下命令
sudo chown postgres /usr/local/pgsql/data
報錯如下:
沒辦法,我只能把當前電腦使用用戶slp進行chown命令(還望知道該問題原因的大佬能留言告訴一下,謝謝):
sudo slp postgres /usr/local/pgsql/data
su - slp
2. 用戶定權之後,執行initdb語句:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
其中-D指向了數據的存儲地址爲/usr/local/pgsql/data下。
3.開啓服務器
- 以前臺方式開啓:
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
運行如圖:
- 以後臺方式運行:
sudo nohup /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data </dev/null >>server.log 2>&1 </dev/null &
4. 創建數據庫
createdb testdb
5.連接數據庫
psql testdb
運行如圖:
ok,先記錄到這吧