• 软件版本信息

软件版本

CentOS Linux release 7.8.2003 (Core)

Python 3.6.8

pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

psql (PostgreSQL) 13.6

安装postgresql客户端

1. 配置yum源,安装依赖

# vim /etc/yum.repos.d/CentOS-Media.repo
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
gpgcheck=0
enabled=1

yum install gcc-c++ -y
yum install perl-ExtUtils-Embed -y
yum install readline-devel -y
yum install zlib-devel -y
yum install python-devel -y

2. 编译安装

编译安装world会编译安装所有组件

tar -xvf postgresql-13.6.tar.gz
./configure --prefix=/usr/local/pgsql13.6 --with-perl --with-python
make world && make install-world

ln -sf /usr/local/pgsql13.6 /usr/local/pgsql

3. 配置环境变量

在最后添加如下信息

# vim /etc/profile
MANPATH=/usr/local/pgsql/share/man:$MANPATH
LD_LIBRARY_PATH=/usr/local/pgsql/lib
PG_HOME=/usr/local/pgsql
PATH=$PATH:$HOME/bin:$PG_HOME/bin
export PATH PG_HOME LD_LIBRARY_PATH MANPATH
# source /etc/profile

Barman安装

下面是需要的所有包的信息,如果还有其他需要的包可以直接通过python官方下载​​https://pypi.org/search/​

# ls -lrt
total 5104
-rw-r--r-- 1 root root 11053 Feb 25 15:10 six-1.16.0-py2.py3-none-any.whl
-rw-r--r-- 1 root root 247702 Feb 25 15:10 python_dateutil-2.8.2-py2.py3-none-any.whl
-rw-r--r-- 1 root root 30872 Feb 25 15:10 argh-0.26.2-py2.py3-none-any.whl
-rw-r--r-- 1 root root 37734 Feb 25 15:10 argcomplete-2.0.0-py2.py3-none-any.whl
-rw-r--r-- 1 root root 5313 Feb 25 15:10 zipp-3.6.0-py3-none-any.whl
-rw-r--r-- 1 root root 26844 Feb 25 15:10 typing_extensions-4.1.1-py3-none-any.whl
-rw-r--r-- 1 root root 17978 Feb 25 15:10 importlib_metadata-4.8.3-py3-none-any.whl
-rw-r--r-- 1 root root 2953158 Feb 25 17:18 psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl
-rw-r--r-- 1 root root 1263676 Feb 25 17:20 barman-2.18.tar.gz

1. 软件依赖下载

  • 搜索软件包

Barman离线安装(一步到位)_python

  • 下载发行包

Barman离线安装(一步到位)_sql_02

  • 兼容信息

Barman离线安装(一步到位)_postgresql_03

确保软件版本与当前环境python及pip版本兼容,当前环境python为3.6版本,没有问题

  • 小彩蛋,提前备好的软件包

链接:​​https://pan.baidu.com/s/1ilBq8u5xYcf2o-JsbklZGA​​ 提取码:4qto

2. 安装barman相关依赖

依赖下载好,放在同一个目录,通过pip进行安装

# pip3 install *.whl
# pip3 list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
argcomplete (2.0.0)
argh (0.26.2)
importlib-metadata (4.8.3)
pip (9.0.3)
psycopg2-binary (2.8.6)
python-dateutil (2.8.2)
setuptools (39.2.0)
six (1.16.0)
typing-extensions (4.1.1)
zipp (3.6.0)

3. 安装barman

编译barman,编译前修改setup.py,可以确保软件顺利安装,主要为解决psycopg2的问题。

# tar -xvf barman-2.18.tar.gz

修改setup.py文件:
vim setup.py
修改前:
install_requires = [
"psycopg2 >= 2.4.2",
"python-dateutil",
"argcomplete",
]
修改后:
install_requires = [
"psycopg2-binary >= 2.4.2",
"python-dateutil",
"argcomplete",
]

# python3 setup.py build
# python3 setup.py install
# barman --version
# cp barman.conf /etc/
# cp -r barman.d/ /etc/

2.18 Barman by EnterpriseDB (www.enterprisedb.com)

4. 关于psycopg2

barman编译前修改setup.py中的依赖信息,将psycopg2修改为psycopg2-binary,关于这个操作,下面的连接做出了解释:
​​​https://timothyqiu.com/archives/psycopg2-warning/​

老版本中自带的预编译 wheel 二进制可能会造成崩溃问题,官方决定 psycopg2 从 2.8 版本开始将不再包含预编译二进制,必须通过编译安装。为此还作出了两个调整:

  • 2.7.4 ~ 2.8 之间为过渡期,使用 psycopg2 的预编译二进制时会生成警告
  • 新增了 psycopg2-binary 包,除了仍旧提供预编译二进制外,与 psycopg2 完全一致(即与老版本行为一致)。

开发人员的看法

  • 推荐 psycopg2-binary 实际上是个换汤不换药的解决方案,什么问题都没有解决;
  • 虽然 psycopg2-binary 的包名没变(还是 import psycopg2),但一些第三方库可能因此产生依赖问题;
  • 由于目前 Python 的包管理机制,psycopg2 和 psycopg2-binary 虽然可以共存,但删的时候会同时删掉,很滑稽。