原文鍵接
感謝原文作者給出的精彩方法
postgresql安裝的時候(僅指linux和macosx),往往會安裝系統目錄中,這樣做有幾點不方便。
安裝多個版本的時候會衝突,尤其是想安裝測試版或不同的小版本的時候。
安裝路徑散落在系統的好幾個目錄中,記起來不方便。
因為安裝到了系統目錄,我們有時候需要用sudo執行或者需要用su 切換到postgres使用者許可權下去執行。
尤其是pg的開發人員,可能需要安裝不同的版本,或者要自己統計不同的時間的測試版,如何快速在的不同的測試版之間進行啟停資料庫,有沒有好辦法解決這兩個問題呢?
下面我們演示在mac os x 和linux下解決這些問題的辦法。
在mac os x下(譯者親測 10.11.4)
> cd /tmp
> mkdir pg-build
> cd postgresql原始碼目錄中
> ./configure --prefix=/tmp/pg-build
> make
> make install
在ubuntu下(譯者親測ubuntu16.04)
> cd /tmp
> mkdir pg-build
> cd postgresql原始碼目錄中
> ./configure --prefix=/tmp/pg-build --disable-rpath
> export ld_run_path='$origin/../lib'
> make
> make install
然後,我們對編譯的動態支援庫檔案進行讞整引用重定位
在mac os x下
find /tmp/pg-build/bin -type f | \
xargs -l 1 install_name_tool -change \
/tmp/pg-build/lib/libpq.5.dylib \
'@executable_path/../lib/libpq.5.dylib'
然後就可以了。
> cd $home
> cp -r /tmp/pg-build pg
> mkdir data
> ./pg/bin/initdb data
> ./pg/bin/pg_ctl -d data start
現在,你的pg就執行起來了,並且你可以把這個目錄任意改名,放到你自己的任意目錄,都可以執行了。 我一般測試多個版本的pg,都在自己的目錄下建立pg931,pg943,pg952,pg6b1這樣的目錄,想用哪個用哪個。很方便。
為了自動化的實現這個功能,我寫了乙個小指令碼,可以很方便的編譯、執行不同時期原始碼的資料庫。**很短,自己根據自己的需要改改,放到自己的path目錄下,就會很方便了。
[git-hub]
sudo命令不用密碼的方法
通常我們並不以root身份登入,但是當我們執行某些命令 command 時需要用到root許可權,我們通常都是用 sudo command 來執行command。由於使用ubuntu,所以經常都都用sudo,而使用sudo時,又得輸入密碼,所以我就尋找sudo不輸入密 碼的方法。前陣子google了...
docker取消sudo執行
docker為什麼要用sudo執行?docker的守護執行緒繫結的是unix socket,這個套接字預設屬於root使用者。docker服務程序都是以root賬戶執行的。解決方法 建立docker使用者組,把當前使用者加入到docker使用者組裡面。這樣就可以直接執行docker命令了。sudo ...
php 呼叫 sudo 不執行問題
第一種方式 exec cmd,str,result echo result result if result 0 print r str 沒有輸出結果 第二種方式 output shell exec usr bin sudo usr bin whoami 2 1 echo output output...