如何跟踪 PostgreSQL 安装期间创建的目录?

如何跟踪 PostgreSQL 安装期间创建的目录?

我想按照以下说明使用源代码分发安装 PostgreSQL(在运行 Ubuntu 14.04.2 LTS 的服务器上)http://www.postgresql.org/docs/current/static/installation.html

说明告诉我,如果我想在以后撤消安装(无论出于何种原因),我可以使用 make uninstall 来执行此操作,但我必须记住,这不会删除安装期间创建的任何目录。

跟踪安装过程中创建的所有新目录的最简单方法是什么? 大致如下:

  • 这是安装之前的所有目录(和子目录)的列表(tree可能吗?)。
  • 这是安装后所有目录(和子目录)的列表(tree可能吗?)。
  • 这是 1 和 2 之间的区别(diff可能吗?)。

答案1

首先,为什么不直接安装apt.postgresql.org


如果您从源代码安装,就不必担心make uninstall

PostgreSQL 将所有内容安装在单个目录树中,该目录树由--prefixto指定configure。使用尚未包含任何内容的唯一前缀。这样,如果您想删除 PostgreSQL 安装,只需删除该目录及其所有内容即可。

我通常:

sudo mkdir /opt/postgresql94
sudo chown $USER /opt/postgresql94
./configure --prefix=/opt/postgresql94
make
make -C contrib
make install
make -C contrib install

这使我无需Makefile以 root 身份运行即可安装。

如果我想删除它我只需sudo rm -r /opt/postgresql94

要使用已安装的二进制文件,我可以执行以下操作:

export PATH=/opt/postgresql94/bin:$PATH

或将其添加到我的.bash_profile

您可以直接运行二进制文件,例如

/opt/postgresql94/bin/psql

initdb这对和不起作用pg_ctl因此在实践中它没那么有用。

答案2

也许通知通知是要走的路……:

https://lwn.net/Articles/604686/

这不是观察文件系统活动的最简单方法 - 但在我看来,这是用户可达到的可编写脚本的最低级别。

尤其是这个fschange命令很有帮助。根据

http://stefan.buettcher.org/cs/fschange/index.html

支持的可监视命令有:

The event types supported by fschange are:

    MOUNT device mountpoint   (when a new file system is mounted)
    UMOUNT mountpoint   (when a file system is unmounted)
    UMOUNT_REQ mountpoint   (when umount has been called but failed due to file system activity, i.e. open files etc.)
    WRITE filename from to   (after a file has been changed and closed; the latter is important because it helps us reduce the number of events generated)
    TRUNCATE filename newfilesize   (after a successful call to truncate)
    RENAME oldpath newpath   (after a file or directory has been renamed or moved)
    UNLINK filename   (when a file has been removed)
    CHMOD filename newfilemode
    CHOWN filename newuser newgroup
    CREATE filename   (after a new file has been created)
    MKDIR dirname
    RMDIR dirname 

也许就是这样……

相关内容