暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在ubuntu上安装postgresql相关依赖

今天在 ubuntu 22.04 上安装 postgresql 16.4 + postgis 3.5 的环境,将与 centos 上安装的依赖不同的地方整理出来,以便以后参考。

postgresql依赖

确保你的包列表是最新的:

sudo apt update

Development Tools组包含了许多开发工具,如gcc、make等。在Ubuntu上可以通过安装build-essential包来获得类似的工具:

sudo apt install -y build-essential

Legacy UNIX Compatibility组通常包含一些旧的UNIX工具和库。在Ubuntu上可以安装以下包来获得类似的功能:

sudo apt install -y libc6-dev libc6-dev-i386 libc6-dev-x32

在 CentOS 上,libicu-devel 提供了 ICU(International Components for Unicode)库的开发文件。在 Ubuntu 上,等效的包是 libicu-dev

sudo apt install -y libicu-dev

PostgreSQL 的 configure 脚本使用 pkg-config 来查找 ICU 库。如果 pkg-config 未安装,也会导致错误:

sudo apt install -y pkg-config
sudo apt install -y pkgconf

perl-ExtUtils-Embed 是一个 Perl 模块,用于将 Perl 嵌入到 C 程序中。在 Ubuntu 上,等效的包是 libperl-dev:

sudo apt install -y libperl-dev

在 CentOS 上,python3 是 Python 3 的运行时,python3-devel 是 Python 3 的开发文件(包括头文件和库)。在 Ubuntu 上,等效的包是 python3 和 python3-dev:

sudo apt install -y python3 python3-dev

msgfmt 是 GNU gettext 工具集的一部分,运行以下命令安装 gettext:

sudo apt install -y gettext

其他依赖:

sudo apt install -y bison flex libreadline-dev zlib1g-dev gcc g++

安装完成后,可以通过以下命令验证是否安装成功,例如:

dpkg -l | grep libicu-dev

postgis相关依赖

postgis及相关主要依赖均编译安装,此处apt安装的均为依赖的依赖。

postgis依赖proj,proj的依赖如下:

sudo apt install -y libxslt1-dev pkg-config libtiff-dev libcurl4-openssl-dev

postgis依赖geos,编译安装geos需安装一些依赖工具和开发库:

sudo apt install -y autoconf automake libtool
sudo apt install -y build-essential cmake

postgis依赖gdal,编译安装gdal需安装常见的依赖库:

sudo apt-get install -y build-essential libproj-dev libtiff-dev libcurl4-gnutls-dev libsqlite3-dev

gdal还需要libpq,在 Ubuntu 22.04 上,libpq 的开发包是 libpq-dev:

sudo apt install -y libpq-dev

postgis依赖libxml,在 Ubuntu 中,libxml2-devel 对应的包是 libxml2-dev

sudo apt install -y libxml2-dev

postgis依赖sfcgal,sfcgal需要cmkae编译,cmake需要安装openssl-devel,在 Ubuntu 中,openssl-devel 对应的包是 libssl-dev

sudo apt install -y libssl-dev

sfcgal还需要boost-devel 依赖包,在 Ubuntu 中,boost-devel 对应的包是 libboost-all-dev

sudo apt install -y libboost-all-dev

sfcgal还需要CGAL,GMP 是 CGAL 的依赖库之一,必须正确安装才能继续编译

sudo apt install -y libgmp-dev libmpfr-dev

sfcgal还需要libSFCGAL,否则加载 postgis_sfcgal-3.so 扩展时,无法找到其依赖的动态链接库 libSFCGAL.so.1:

sudo apt install libsfcgal-dev

postgis依赖Protobuf-C,需安装Protobuf-C 的编译器:

sudo apt install -y protobuf-c-compiler libprotobuf-c-dev

address_standardizer扩展需确保以下依赖库已安装:

sudo apt install libxml2-dev libproj-dev libgdal-dev

安装后如果可用扩展中未显示address_standardizer 和 address_standardizer_data_us,则需要重新安装postgis并在./configure加–with-address-standardizer,之后将文件拷贝到相应目录。
注:如果不知道拷贝到哪,在CREATE EXTENSION时会报相应路径未找到文件,我们根据提示复制到报错的路径下即可

cp /app/postgis-3.5.0/extensions/address_standardizer/*.control /usr/local/pg16/share/postgresql/extension
cp /app/postgis-3.5.0/extensions/address_standardizer/*.sql /usr/local/pg16/share/postgresql/extension
cp /app/postgis-3.5.0/extensions/address_standardizer/*.so /usr/local/pg16/lib/postgresql

其他OS操作

列出已安装软件类似于 rpm -qa:

dpkg-query -l |grep geos

找不到用户家目录:

su: warning: cannot change directory to /home/postgres: No such file or directory

解决办法如下。
创建postgres文件夹:

sudo mkdir /home/postgres

设置权限

sudo chmod 755 /home/postgres

初始化

sudo cp -a /etc/skel/. /home/postgres

如果用户默认shell不是bash则可以修改/etc/passwd,或执行:

chsh -s /bin/bash postgres
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论