为阅读/修改postgresql内核做准备工作

本文介绍如何在Ubuntu虚拟机上搭建PostgreSQL内核开发环境,包括安装依赖、配置及编译步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:一门课程的大作业内容是学习/修改postgresql内核,今天把开发环境搭好了,在此记录下,以备环境重建及他人查阅。


参考资料:

1. postgresql官方安装手册:http://www.postgresql.org/docs/9.3/static/installation.html

2. postgresql git仓库:

    2.1 官方:http://git.postgresql.org/git/postgresql.git

    2.2 GitHub: https://github.com/postgres/postgres

    2.3 git oschina: http://git.oschina.net/pythonshell/postgresql (国内访问github很慢,官方的还可以,但都没有用国内的git oschina快,所以我做了一个镜像)


准备工作:

1. 安装Ubuntu虚拟机(我第一次调试是在archlinux下)

2. 确认安装所有的依赖

    2.1 flex

    2.2 bison

    2.3 make ( Ubuntu 内make就是gmake)

    2.4 readline和zlib没有默认安装,而且编译也不是强制要求的,所以我这里就忽略不要了。

3. 下载源码:

    $ git clone http://git.oschina.net/pythonshell/postgresql

4. 在用户目录下新建编译目录

    $ mkdir postgresql_9.3.5_build

3. configure

    $ cd postgresql_9.3.5_build

    $ /home/pythonshell/postgresql/configure --without-readline --without-zlib --prefix=/home/pythonshell/pgsql/

4. 开始编译

    $ make

5. 编译好了之后,先检查

    $ make check

6. 检查通过后,再把程序安装到用户目录下的pgsql下。

    $ make install


后续还有安装后的工作需要做,待补充。

### 一、PostgreSQL的注册与安装概述 PostgreSQL 是一种开源的关系型数据库管理系统,广泛应用于企业级应用开发。以下是 PostgreSQL 的注册和安装过程,涵盖从依赖环境配置到服务启动的完整流程[^1]。 --- ### 二、环境准备 在安装 PostgreSQL 之前,需要确保操作系统满足其运行需求,并完成以下准备工作: 1. **安装依赖环境** 使用包管理工具安装必要的编译工具和库文件。例如,在 Ubuntu 系统中,可以运行以下命令: ```bash sudo apt update && sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison ``` 这些依赖项是编译 PostgreSQL 源码所必需的[^2]。 2. **调整内核系统参数** 根据 PostgreSQL 的性能需求,修改系统的内核参数。可以通过编辑 `/etc/sysctl.conf` 文件来实现: ```bash fs.file-max = 6815744 kernel.shmmax = 17179869184 kernel.shmall = 4194304 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65535 net.core.somaxconn = 65535 ``` 修改完成后执行 `sysctl -p` 使配置生效[^1]。 --- ### 三、安装步骤 #### 1. 下载并解压源码文件 从官方下载页面获取最新版本的 PostgreSQL 源码压缩包,并将其解压到指定目录: ```bash wget https://ftp.postgresql.org/pub/source/v17/postgresql-17.tar.gz tar -xzvf postgresql-17.tar.gz cd postgresql-17 ``` #### 2. 配置编译参数 使用 `./configure` 脚本设置安装路径和其他选项。例如: ```bash ./configure --prefix=/opt/postgresql --with-libraries=/usr/lib --with-includes=/usr/include ``` 其中 `--prefix` 参数指定了安装路径[^2]。 #### 3. 编译与安装 执行以下命令完成编译和安装: ```bash make -j$(nproc) make install ``` `-j$(nproc)` 参数用于加速编译过程,根据 CPU 核心数自动分配任务[^2]。 #### 4. 创建用户并修改权限 为 PostgreSQL 创建专用用户(如 `postgres`),并设置相关权限: ```bash sudo adduser --system --no-create-home --group --disabled-password --disabled-login postgres sudo mkdir /var/lib/postgresql sudo chown -R postgres:postgres /var/lib/postgresql ``` #### 5. 初始化数据库 切换到 `postgres` 用户并初始化数据库集群: ```bash sudo su - postgres /opt/postgresql/bin/initdb -D /var/lib/postgresql/data ``` #### 6. 配置环境变量 为 `postgres` 用户添加环境变量,便于后续操作。编辑 `~/.bashrc` 文件,添加以下内容: ```bash export PATH=/opt/postgresql/bin:$PATH export PGDATA=/var/lib/postgresql/data ``` 然后执行 `source ~/.bashrc` 使配置生效[^3]。 #### 7. 启动服务 使用以下命令启动 PostgreSQL 服务: ```bash pg_ctl -D /var/lib/postgresql/data start ``` 或者通过 `systemd` 管理服务: ```bash sudo cp /opt/postgresql/share/systemd/postgresql.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable postgresql sudo systemctl start postgresql ``` #### 8. 注册用户与数据库 创建新的数据库和用户以支持应用程序连接: ```bash createdb ent-portal-db psql ent-portal-db -c "CREATE USER scc WITH PASSWORD 'scc';" ``` 上述命令将创建一个名为 `ent-portal-db` 的数据库以及用户名为 `scc` 的用户[^3]。 --- ### 四、常见问题解决 1. **无法连接到 PostgreSQL 服务** 确保服务已正确启动,并检查防火墙规则是否允许访问端口(默认为 5432)。 2. **权限不足错误** 确认 `postgres` 用户对数据目录具有完全控制权,并且环境变量配置正确。 3. **日志文件丢失** 根据实际需求设置日志存储路径(如 `/var/log/postgresql`),并在 `postgresql.conf` 中启用日志记录功能[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值