每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。
放弃不难,但坚持很酷~
Linux版本:CentOS Linux release 7.3.1611 (Core)
一、需求
最近在工作中需要postgresql + postgis的离线安装。安装有两种方式:
源码编译
rpm包安装
源码编译耗费时间长,缺乏编译环境且生成目录位置不详,所以选择使用rpm包安装。但是我们最终目的是rpm包离线安装,目前不知道安装postgresql + postgis所依赖的rpm包有哪些,并且从网上找rpm包容易引起版本冲突啊,怎么办呢?
办法总比问题多,接着往下看。
二、在线安装
通过下载外部repo源的安装方式,我这里暂且称之为在线安装。
我们首先要使用在线安装的方式,成功安装postgresql + postgis,然后再考虑如何获取相关依赖rpm包的问题。请看具体命令:
# 安装postgresql依赖的rpm包
rpm -ivh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# 安装postgis的依赖包
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
通过执行上述命令,在/etc/yum.repos.d/目录下会有以下几个文件:
pgdg-96-centos.repo
epel.repo
epel-testing.repo
三个文件含有postgresql + postgis的外部下载源。通过yum的方式来安装:
# 安装postgresql
yum install postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib postgresql96-devel
# 安装postGIS
yum install postgis24_96
安装成功。接下来就是要将postgresql + postgis依赖的rpm包收集起来,然后做一个yum本地源,就可以进行离线安装了。
三、收集依赖的rpm包
我们可以使用yum命令的--downloaddir参数及--downloadonly参数来将依赖的rpm包下载到本地。具体步骤如下:
首先需要将postgresql + postgis相关的包进行yum卸载,然后我们再install到本地
yum remove postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib postgresql96-devel postgis24_96
创建目录,指定rpm依赖包的存储目录。我们后续会用到httpd,所以我们先安装httpd服务。
yum install -y httpd
# httpd安装成功后,会自动创建/var/www/html/目录,我们将要下载的rpm依赖包放置到该目录下
mkdir /var/www/html/postgres
下载rpm依赖包
yum install --downloaddir=/var/www/html/postgres --downloadonly postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib postgresql96-devel postgis24_96
等下载完毕之后,rpm依赖包如下图所示:

然后我们再搭建yum本地源。
四、搭建yum本地源
下载createrepo工具
yum install -y createrepo
生成repodata目录
cd /var/www/html/postgres
createrepo .
ll repodata
删除之前在线安装时的repo文件
cd /etc/yum.repos.d
# 删除之前在线安装时的repo文件,以测试yum本地源是否搭建成功
rm -rf epel.repo epel-testing.repo pgdg-96-centos.repo
启动httpd服务
service httpd start
制作.repo文件
新建postgres.repo文件,并将其放入到/etc/yum.repos.d目录下。文件内容如下:
[postgres]
name=postgresql and postgis
baseurl=http://liuyzh2.xdata/postgres/
gpgcheck=0
enabled=1

五、yum安装
# 先卸载postgresql相关包
yum remove postgresql*
# 安装postgresql9.6 + postgis2.4
yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib postgresql96-devel postgis24_96
安装成功,如下图所示;

六、总结
总结一下:
我们首先下载了外部repo源,然后通过yum install的方式将需要的服务成功安装。
然后执行
yum install --downloaddir=/var/www/html/postgres --downloadonly postgresql96 postgis24_96 …
命令,这样就将postgresql96 postgis24_96 …
等所依赖的rpm包下载到了/var/www/html/postgres
目录下了。有了依赖的rpm包,就简单多啦。直接制作yum本地源,生成repo文件就行了。
长按下方二维码,关注更多精彩内容
码字不易,如果感觉本文对您有帮助,请点击右下角‘好看’支持一下,您的支持是我坚持写作最大的动力,谢谢!
如果您有疑问或想法,可点击阅读全文进行评论,作者会第一时间回复。
本文分享自微信公众号 - 大数据实战演练(gh_f942bfc92d26)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3610293/blog/4391078