今天在 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




