我想按照以下说明使用源代码分发安装 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 将所有内容安装在单个目录树中,该目录树由--prefix
to指定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
也许就是这样……