PostgreSQL安裝roaringbitmap插件

DB version: PostgreSQL 12.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
OS: CentOS Linux release 7.7.1908 (Core)
roaringbitmap: roaringbitmap-0.5
roaringbitmap插件github地址: https://github.com/ChenHuajun/pg_roaringbitmap

作者github地址里的安裝過程寫的比較簡(jiǎn)單长踊,一路碰到不少坑,記錄下來(lái)供參考屡律。

目錄
一嘴纺、安裝前環(huán)境確認(rèn)
二大磺、源碼下載
三给郊、依賴安裝
四菩浙、roaringbitmap make && make install
五迎罗、create extension 并測(cè)試
六睬愤、roaringbitmap函數(shù)測(cè)試
七、遇到的問題

一纹安、安裝前環(huán)境確認(rèn)

1.查看當(dāng)前安裝的pg尤辱,確保只有一個(gè)版本存在

[root@localhost ~]# rpm -qa|grep postgr
postgresql12-12.3-5PGDG.rhel7.x86_64
postgresql12-server-12.3-5PGDG.rhel7.x86_64
postgresql12-libs-12.3-5PGDG.rhel7.x86_64

2.確認(rèn)當(dāng)前環(huán)境變量配置

-bash-4.2$ cat ~/.bash_profile 
[ -f /etc/profile ] && source /etc/profile

export PGHOME=/usr/pgsql-12/
export PGDATA=/var/lib/pgsql/12/data
export PGPORT=5432
export PGUSER=postgres
export PGHOST=127.0.0.1
export PATH=$PATH:$PGHOME/bin

# If you want to customize your settings,
# Use the file below. This is not overridden
# by the RPMS.
[ -f /var/lib/pgsql/.pgsql_profile ] && source /var/lib/pgsql/.pgsql_profile

3.確認(rèn)postgres主機(jī)賬號(hào)已設(shè)置密碼

[root@localhost soft]# passwd postgres
Changing password for user postgres.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

4.確認(rèn)postgres主機(jī)賬號(hào)已添加至sudoers文件中

[root@localhost soft]# vi /etc/sudoers
## 添加下面postgres這行,保存退出厢岂,因?yàn)槭侵蛔x文件光督,保存退出用 :wq!
## Allow root to run any commands anywhere
root            ALL=(ALL)       ALL
postgres        ALL=(ALL)       ALL    ##  新增此行
二、源碼下載
[root@localhost soft]# git clone https://github.com/ChenHuajun/pg_roaringbitmap.git
Cloning into 'pg_roaringbitmap'...
remote: Enumerating objects: 134, done.
remote: Counting objects: 100% (134/134), done.
remote: Compressing objects: 100% (71/71), done.
remote: Total 292 (delta 73), reused 117 (delta 58), pack-reused 158
Receiving objects: 100% (292/292), 422.63 KiB | 148.00 KiB/s, done.
Resolving deltas: 100% (161/161), done.

# 更改用戶組
[root@localhost soft]# chown -R postgres:postgres pg_roaringbitmap

三咪笑、依賴安裝

1.安裝 llvm-toolset-7-clang >= 4.0.1

yum install centos-release-scl-rh -y 
yum install llvm-toolset-7-clang -y

2.安裝 llvm5.0-devel >= 5.0

[root@localhost soft]# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
[root@localhost soft]# rpm -Uvh epel-release*rpm
[root@localhost soft]# yum install llvm5.0-devel -y

3.安裝postgresql12-devel

[root@localhost pg_roaringbitmap]# yum install postgresql12-devel  -y
四可帽、roaringbitmap make && make install

1.make (warning不用理會(huì),沒有error即可)

[root@localhost ~]# su - postgres
-bash-4.2$ cd /u01/soft/pg_roaringbitmap/
-bash-4.2$ make
make: pg_config: Command not found
make: *** No targets.  Stop.
-bash-4.2$ ls
benchmark     LICENSE          META.json                    roaringbitmap--0.2.sql       roaringbitmap--0.5.sql  roaringbitmap.h          roaring.c
CHANGELOG.md  Makefile         README.md                    roaringbitmap--0.3--0.4.sql  roaringbitmap.c         roaring_buffer_reader.c  roaring.h
expected      Makefile_native  roaringbitmap--0.2--0.3.sql  roaringbitmap--0.4--0.5.sql  roaringbitmap.control   roaring_buffer_reader.h  sql
-bash-4.2$ vi Makefile
PG_CONFIG =/usr/pgsql-12/bin/pg_config    ## 修改這行窗怒,后面把絕對(duì)路徑加上

-bash-4.2$ make
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -std=c99 -Wno-error=maybe-uninitialized -Wno-declaration-after-statement -I. -I./ -I/usr/pgsql-12/include/server -I/usr/pgsql-12/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include  -c -o roaringbitmap.o roaringbitmap.c
In file included from roaringbitmap.h:26:0,
                 from roaringbitmap.c:1:
roaring.h:317:16: warning: no previous prototype for ‘binarySearch’ [-Wmissing-prototypes]
 inline int32_t binarySearch(const uint16_t *array, int32_t lenarray,
                ^
roaring.h:1518:13: warning: no previous prototype for ‘a(chǎn)rray_container_contains’ [-Wmissing-prototypes]
 inline bool array_container_contains(const array_container_t *arr,
             ^
roaring.h:1567:17: warning: no previous prototype for ‘a(chǎn)rray_container_minimum’ [-Wmissing-prototypes]
 inline uint16_t array_container_minimum(const array_container_t *arr) {
... 省略部分信息
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -shared -o roaringbitmap.so roaringbitmap.o -L/usr/pgsql-12/lib  -Wl,--as-needed -L/usr/lib64/llvm5.0/lib  -L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-12/lib',--enable-new-dtags  
/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2  -I. -I./ -I/usr/pgsql-12/include/server -I/usr/pgsql-12/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2  -I/usr/include -flto=thin -emit-llvm -c -o roaringbitmap.bc roaringbitmap.c

2.make install(如果此步驟缺少后面的四行輸出則會(huì)遇到后面的報(bào)錯(cuò)3)

-bash-4.2$ sudo make install 
[sudo] password for postgres: 
/usr/bin/mkdir -p '/usr/pgsql-12/lib'
/usr/bin/mkdir -p '/usr/pgsql-12/share/extension'
/usr/bin/mkdir -p '/usr/pgsql-12/share/extension'
/usr/bin/install -c -m 755  roaringbitmap.so '/usr/pgsql-12/lib/roaringbitmap.so'
/usr/bin/install -c -m 644 .//roaringbitmap.control '/usr/pgsql-12/share/extension/'
/usr/bin/install -c -m 644 .//roaringbitmap--0.5.sql .//roaringbitmap--0.2.sql .//roaringbitmap--0.2--0.3.sql .//roaringbitmap--0.4--0.5.sql .//roaringbitmap--0.3--0.4.sql  '/usr/pgsql-12/share/extension/'
/usr/bin/mkdir -p '/usr/pgsql-12/lib/bitcode/roaringbitmap'
/usr/bin/mkdir -p '/usr/pgsql-12/lib/bitcode'/roaringbitmap/
/usr/bin/install -c -m 644 roaringbitmap.bc '/usr/pgsql-12/lib/bitcode'/roaringbitmap/./
cd '/usr/pgsql-12/lib/bitcode' && /usr/lib64/llvm5.0/bin/llvm-lto -thinlto -thinlto-action=thinlink -o roaringbitmap.index.bc roaringbitmap/roaringbitmap.bc
五映跟、create extension 并測(cè)試
-bash-4.2$ psql -c "create extension roaringbitmap"
CREATE EXTENSION

-bash-4.2$ make installcheck
/usr/pgsql-12/lib/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/usr/pgsql-12/bin'    --dbname=contrib_regression roaringbitmap
(using postmaster on 127.0.0.1, port 5432)
============== dropping database "contrib_regression" ==============
NOTICE:  database "contrib_regression" does not exist, skipping
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test roaringbitmap                ... ok          283 ms

=====================
 All 1 tests passed. 
=====================
六、roaringbitmap函數(shù)測(cè)試

見github地址

七扬虚、遇到的問題

報(bào)錯(cuò)1:未配置環(huán)境變量以及未安裝 postgresql12-devel 開發(fā)包

-bash-4.2$ make
bash: make: command not found...
-bash-4.2$ /usr/bin/make 
Makefile:14: /usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk: No such file or directory
make: *** No rule to make target `/usr/pgsql-12/lib/pgxs/src/makefiles/pgxs.mk'.  Stop.

報(bào)錯(cuò)2:未安裝依賴包 llvm5.0-devel >= 5.0 和 llvm-toolset-7-clang >= 4.0.1

[root@localhost pg_roaringbitmap]# yum install postgresql12-devel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
Resolving Dependencies
--> Running transaction check
---> Package postgresql12-devel.x86_64 0:12.3-5PGDG.rhel7 will be installed
--> Processing Dependency: llvm5.0-devel >= 5.0 for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Processing Dependency: llvm-toolset-7-clang >= 4.0.1 for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Processing Dependency: libicu-devel for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Running transaction check
---> Package libicu-devel.x86_64 0:50.2-4.el7_7 will be installed
--> Processing Dependency: libicu(x86-64) = 50.2-4.el7_7 for package: libicu-devel-50.2-4.el7_7.x86_64
---> Package postgresql12-devel.x86_64 0:12.3-5PGDG.rhel7 will be installed
--> Processing Dependency: llvm5.0-devel >= 5.0 for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Processing Dependency: llvm-toolset-7-clang >= 4.0.1 for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Running transaction check
---> Package libicu.x86_64 0:50.2-3.el7 will be updated
---> Package libicu.x86_64 0:50.2-4.el7_7 will be an update
---> Package postgresql12-devel.x86_64 0:12.3-5PGDG.rhel7 will be installed
--> Processing Dependency: llvm5.0-devel >= 5.0 for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Processing Dependency: llvm-toolset-7-clang >= 4.0.1 for package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64
--> Finished Dependency Resolution
Error: Package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64 (pgdg12)
           Requires: llvm5.0-devel >= 5.0
Error: Package: postgresql12-devel-12.3-5PGDG.rhel7.x86_64 (pgdg12)
           Requires: llvm-toolset-7-clang >= 4.0.1
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

報(bào)錯(cuò)3.make install 步驟不完整導(dǎo)致報(bào)錯(cuò) Float8GetDatum

-bash-4.2$ /usr/pgsql-12/bin/psql  -c "create extension roaringbitmap"
ERROR:  could not load library "/usr/pgsql-12/lib/roaringbitmap.so": /usr/pgsql-12/lib/roaringbitmap.so: undefined symbol: Float8GetDatum
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末努隙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子辜昵,更是在濱河造成了極大的恐慌荸镊,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堪置,死亡現(xiàn)場(chǎng)離奇詭異躬存,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舀锨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門岭洲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人坎匿,你說(shuō)我怎么就攤上這事盾剩±准ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵告私,是天一觀的道長(zhǎng)屎暇。 經(jīng)常有香客問我,道長(zhǎng)驻粟,這世上最難降的妖魔是什么根悼? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮格嗅,結(jié)果婚禮上番挺,老公的妹妹穿的比我還像新娘。我一直安慰自己屯掖,他們只是感情好玄柏,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贴铜,像睡著了一般粪摘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绍坝,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天徘意,我揣著相機(jī)與錄音,去河邊找鬼轩褐。 笑死椎咧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的把介。 我是一名探鬼主播勤讽,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拗踢!你這毒婦竟也來(lái)了脚牍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巢墅,失蹤者是張志新(化名)和其女友劉穎诸狭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體君纫,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驯遇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蓄髓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妹懒。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖双吆,靈堂內(nèi)的尸體忽然破棺而出眨唬,到底是詐尸還是另有隱情,我是刑警寧澤好乐,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布匾竿,位于F島的核電站,受9級(jí)特大地震影響蔚万,放射性物質(zhì)發(fā)生泄漏岭妖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一反璃、第九天 我趴在偏房一處隱蔽的房頂上張望昵慌。 院中可真熱鬧,春花似錦淮蜈、人聲如沸斋攀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)淳蔼。三九已至,卻和暖如春裁眯,著一層夾襖步出監(jiān)牢的瞬間鹉梨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工穿稳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留存皂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓逢艘,卻偏偏與公主長(zhǎng)得像旦袋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子埋虹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361