rk3399 安装 postgresql(交叉编译)

6 篇文章 1 订阅
3 篇文章 1 订阅

平台

  1. rk3399
  2. ubuntu 16.04 x64

SDK路径

/data/project/rockchip/rk3399/src

Ubuntu 安装 postgres

1. 添加 GPG 密钥:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

2. 添加源

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

3. 安装 PostgreSQL

sudo apt update
sudo apt install postgresql postgresql-contrib

4. 查看服务状态

service postgresql status

源码安装

交叉编译

1. zlib

build.sh
#! /bin/bash

if [ ! -f ./zlib-1.2.11.tar.xz ]
then
        wget https://udomain.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.xz
fi

tar xvf zlib-1.2.11.tar.xz

chmod +x run.sh
cp run.sh  zlib-1.2.11/

cd zlib-1.2.11
./run.sh
run.sh
#! /bin/bash

SDK_PATH=/data/project/rockchip/rk3399/src

COMPILER_PATH=$SDK_PATH/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin

SYS_LIB_DIR=$SDK_PATH/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr

export PATH=$PATH:$COMPILER_PATH

export CC=aarch64-linux-gnu-gcc

INSTALL_PATH=`pwd`/../zlib_install
mkdir $INSTALL_PATH

mkdir build
cd build
../configure --prefix=$INSTALL_PATH

make
make install

ls $INSTALL_PATH

cp -rvf $INSTALL_PATH/* $SYS_LIB_DIR/
编译
chmod a+x *.sh
./build.
输出
$ ls zlib_install/
include  lib  share

$ file zlib_install/lib/libz.so.1.2.11 
zlib_install/lib/libz.so.1.2.11: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=17de7def7a1de0ac43de7820027ac2f81a60f9cf, not stripped

2. openssl

build.sh
#! /bin/bash

if [ ! -f openssl-1.1.1d.tar.gz ]
then
        wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
fi

chmod +x run.sh
tar xvf openssl-1.1.1d.tar.gz
cp run.sh openssl-1.1.1d
cd openssl-1.1.1d
./run.sh
run.sh
#! /bin/bash

SDK_PATH=/data/project/rockchip/rk3399/src

ARM_CROSS_TOOL=$SDK_PATH/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin

SYS_LIB_DIR=$SDK_PATH/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr

export PATH=$PATH:$ARM_CROSS_TOOL

OUT_TARGET=`pwd`/../openssl_arm
mkdir -p $OUT_TARGET

vcom=aarch64-linux-gnu

export CC="$vcom"-gcc
export CPP="$vcom"-g++
export AR="$vcom"-ar
export LD="$vcom"-ld
export RANLIB="$vcom"-ranlib

#LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
#export LDFLAGS

./config \
no-asm \
shared \
--prefix=$OUT_TARGET


#delete MakeFile -m64
sed -i "s/-m64/ /g" Makefile

make
make install

echo "the output files is in $OUT_TARGET"

cp -rvf $OUT_TARGET/* $SYS_LIB_DIR/
echo "$SYS_LIB_DIR"
echo "finish"
编译
chmod a+x *.sh
./build.sh
输出
$ ls openssl_arm/
bin  include  lib  share  ssl

$ file openssl_arm/bin/openssl 
openssl_arm/bin/openssl: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=fef4c4864ddf42221507a4a90ff5d198fa97a554, not stripped

3. postgresql

build.sh
#! /bin/bash

if [ ! -f postgresql-11.2.tar.gz ]
then
        wget https://ftp.postgresql.org/pub/source/v11.2/postgresql-11.2.tar.gz
fi

tar xvf postgresql-11.2.tar.gz
chmod +x run.sh

cp run.sh postgresql-11.2
cd postgresql-11.2
./run.sh

run.sh
#! /bin/bash

SDK_PATH=/data/project/rockchip/rk3399/src

ARM_CROSS_TOOL=$SDK_PATH/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin

SYS_LIB_DIR=$SDK_PATH/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr

export PATH=$PATH:$ARM_CROSS_TOOL

OUT_TARGET=`pwd`/../postgresql_arm
mkdir -p $OUT_TARGET

vcom=$ARM_CROSS_TOOL/aarch64-linux-gnu

export CC="$vcom"-gcc
export CXX="$vcom"-g++
export AR="$vcom"-ar
export LD="$vcom"-ld
export RANLIB="$vcom"-ranlib

HOST_PREFIX=aarch64-linux-gnu

mkdir build
cd build

../configure \
        --host=$HOST_PREFIX \
        --prefix=$OUT_TARGET \
        --without-readline \
        --with-openssl \
        --with-zlib


make -j12
make install
echo "finish"
编译
chmod a+x *.sh
./build.sh
输出
$ ls postgresql_arm/
bin  include  lib  share

$ file postgresql_arm/bin/postgres 
postgresql_arm/bin/postgres: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=d107734a3436dbe0872a3ae803f97ae428dc1a46, with debug_info, not stripped

安装包

将 上述输出文件 zlib_install,openssl_arm,postgresql_arm 复制到install_postgres

mkdir install_postgres

cp -rvf zlib_install install_postgres/
cp -rvf openssl_arm install_postgres/
cp -rvf postgresql_arm install_postgres/

postgres.rc

将postgres启动脚本复制到安装包文件中

cp postgresql-11.2/contrib/start-scripts/linux  install_postgres/postgres.rc 

postgres.service

systemctl的service

[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

install.sh

#! /bin/bash

OPENSSH=./openssl_arm
ZLIB=./zlib_install
POSTGRES=./postgresql_arm

TARGET_PATH=/usr

POSTGRES_INSTALL=$TARGET_PATH/local/pgsql

sudo cp -rvf $OPENSSH/* $TARGET_PATH
sudo cp -rvf $ZLIB/* $TARGET_PATH

sudo groupadd postgres
sudo useradd -s /bin/bash -g postgres postgres
sudo passwd postgres <<EOF
postgres
postgres
EOF

sudo mkdir -p $POSTGRES_INSTALL/data
sudo mkdir -p $POSTGRES_INSTALL/log

sudo chown postgres:postgres $POSTGRES_INSTALL/data
sudo chown postgres:postgres $POSTGRES_INSTALL/log

sudo cp -rvf $POSTGRES/lib $TARGET_PATH/
sudo cp -rvf $POSTGRES/include $TARGET_PATH/
sudo cp -rvf $POSTGRES/* $POSTGRES_INSTALL/

sudo ./init.sh

init.sh

#! /bin/bash

SERVICE_FILE=/etc/init.d/postgresql


POSTGRES_PATH=/usr/local/pgsql
POSTGRES_BIN=$POSTGRES_PATH/bin
POSTGRES_DATA=$POSTGRES_PATH/data

function create_init(){
        sudo cp postgres.rc  $SERVICE_FILE
}


LINK_FILE=S98postgresql
create_link(){
        chmod 755 $SERVICE_FILE
        if [ -d /etc/rc5.d ] ;then
                sudo ln -s $SERVICE_FILE /etc/rc0.d/K02postgresql
                sudo ln -s $SERVICE_FILE /etc/rc1.d/K02postgresql
                sudo ln -s $SERVICE_FILE /etc/rc2.d/K02postgresql
                sudo ln -s $SERVICE_FILE /etc/rc3.d/S98postgresql
                sudo ln -s $SERVICE_FILE /etc/rc4.d/S98postgresql
                sudo ln -s $SERVICE_FILE /etc/rc5.d/S98postgresql
        else
                sudo ln -s $SERVICE_FILE /etc/init.d/K02postgresql
                sudo ln -s $SERVICE_FILE /etc/init.d/K02postgresql
                sudo ln -s $SERVICE_FILE /etc/init.d/K02postgresql
                sudo ln -s $SERVICE_FILE /etc/init.d/S98postgresql
                sudo ln -s $SERVICE_FILE /etc/init.d/S98postgresql
                sudo ln -s $SERVICE_FILE /etc/init.d/S98postgresql
fi

}

install_rc_service(){

        if [ ! -f "$SERVICE_FILE" ]
        then
                create_init
                create_link
        fi
}
install_system_service(){

        sudo cp postgres.service /etc/systemd/system/
        sudo systemctl daemon-reload
        sudo systemctl start postgres.service
        sudo systemctl enable postgres.service
}

###########################################################################
su - postgres -c "/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data"
su - postgres -c "/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data > /usr/local/pgsql/log/logfile 2>&1 &"

if [ $# -eq 0 ]
then
        install_rc_service
else
        install_system_service
fi

uninstall.sh

#! /bin/bash

TARGET_PATH=/usr

POSTGRES_INSTALL=$TARGET_PATH/local/pgsql

sudo rm -rvf $POSTGRES_INSTALL
sudo userdel -r postgres

sudo rm /etc/init.d/postgres

if [ -d /etc/rc5.d ]
then
        sudo rm /etc/rc0.d/K02postgresql
        sudo rm /etc/rc1.d/K02postgresql
        sudo rm /etc/rc2.d/K02postgresql
        sudo rm /etc/rc3.d/S98postgresql
        sudo rm /etc/rc4.d/S98postgresql
        sudo rm /etc/rc5.d/S98postgresql
else
        sudo rm /etc/init.d/K02postgresql
        sudo rm /etc/init.d/K02postgresql
        sudo rm /etc/init.d/K02postgresql
        sudo rm /etc/init.d/S98postgresql
        sudo rm /etc/init.d/S98postgresql
        sudo rm /etc/init.d/S98postgresql
fi

if [ -f /etc/systemd/system/postgres.service ]
then
        sudo systemctl stop postgres.service
        sudo systemctl disable postgres.service
        sudo systemctl daemon-reload
        sudo rm /etc/systemd/system/postgres.service
fi

打包安装包

install_postgres$ ls
init.sh  install.sh  openssl_arm  postgresql_arm  postgres.rc  postgres.service  uninstall.sh  zlib_install

$ cd ../
$ tar zcvf install_postgres.tar.gz install_postgres

rk3399中解压

tar xvf install_postgres.tar.gz

安装

cd install_postgres
sudo ./install.sh 

测试

z@z:~/install_postgres$ sudo ps -aux | grep postgres
postgres  2389  0.2  0.8 159864 17388 ?        S    02:20   0:00 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
postgres  2397  0.0  0.1 159864  3640 ?        Ss   02:20   0:00 postgres: checkpointer   
postgres  2398  0.0  0.1 159864  3640 ?        Ss   02:20   0:00 postgres: background writer   
postgres  2399  0.0  0.1 159864  3640 ?        Ss   02:20   0:00 postgres: walwriter   
postgres  2400  0.0  0.2 160272  5604 ?        Ss   02:20   0:00 postgres: autovacuum launcher   
postgres  2401  0.0  0.1  14780  2728 ?        Ss   02:20   0:00 postgres: stats collector   
postgres  2402  0.0  0.2 160160  4036 ?        Ss   02:20   0:00 postgres: logical replication launcher   
z         2417  0.0  0.0   4456   636 pts/0    S+   02:21   0:00 grep --color=auto postgres
z@z:~/install_postgres$ su postgres
Password: 
postgres@z:/home/z/install_postgres$ /usr/local/pgsql/bin/psql 
psql (11.2)
Type "help" for help.

postgres=# \l  
                              List of databases
   Name    |  Owner   | Encoding | Collate |  Ctype  |   Access privileges   
-----------+----------+----------+---------+---------+-----------------------
 postgres  | postgres | UTF8     | C.UTF-8 | C.UTF-8 | 
 template0 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
 template1 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
(3 rows)

postgres=# \q  
postgres@z:/home/z/install_postgres$ 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值