创建不用执行sudo可绿色的PostgreSQL

创建不用执行sudo可绿色的PostgreSQL

原文键接

感谢原文作者给出的精彩方法

PostgreSQL安装的时候(仅指Linux和MacOSX),往往会安装系统目录中,这样做有几点不方便。

  1. 安装多个版本的时候会冲突,尤其是想安装测试版或不同的小版本的时候。
  2. 安装路径散落在系统的好几个目录中,记起来不方便。
  3. 因为安装到了系统目录,我们有时候需要用sudo执行或者需要用su 切换到postgres用户权限下去执行。

尤其是pg的开发人员,可能需要安装不同的版本,或者要自己统计不同的时间的测试版,如何快速在的不同的测试版之间进行启停数据库,有没有好办法解决这两个问题呢?

下面我们演示在Mac OS X 和Linux下解决这些问题的办法。
在Mac OS X下(译者亲测 10.11.4)

> cd /tmp
> mkdir pg-build
> wget 下载对应的源码包
> cd postgresql源码目录中
> ./configure --prefix=/tmp/pg-build
> make
> make install

在ubuntu下(译者亲测ubuntu16.04)

> cd /tmp
> mkdir pg-build
> wget 下载对应的源码包
> cd postgresql源码目录中
> ./configure --prefix=/tmp/pg-build --disable-rpath
> export LD_RUN_PATH='$ORIGIN/../lib'
> make
> make install

然后,我们对编译的动态支持库文件进行谳整引用重定位
在Mac OS X下

find /tmp/pg-build/bin -type f | \
  xargs -L 1 install_name_tool -change \
  /tmp/pg-build/lib/libpq.5.dylib \
  '@executable_path/../lib/libpq.5.dylib'

然后就可以了。

> cd $HOME
> cp -R /tmp/pg-build pg
> mkdir data
> ./pg/bin/initdb data
> ./pg/bin/pg_ctl -D data start

现在,你的pg就运行起来了,并且你可以把这个目录任意改名,放到你自己的任意目录,都可以运行了。 我一般测试多个版本的pg,都在自己的目录下建立pg931,pg943,pg952,pg6b1这样的目录,想用哪个用哪个。很方便。

为了自动化的实现这个功能,我写了一个小脚本,可以很方便的编译、运行不同时期源码的数据库。代码很短,自己根据自己的需要改改,放到自己的PATH目录下,就会很方便了。

[git-hub] https://github.com/lvbuwei/mypgscript

时间: 2024-11-02 09:27:24

创建不用执行sudo可绿色的PostgreSQL的相关文章

中标-代码执行sudo -S命令不成功的问题

问题描述 代码执行sudo -S命令不成功的问题 C++写的程序 想要使用sodu创建一个文件: system("echo 密码 | sudo -S touch /opt/testfile"); 这一句话在我的机器上运行是可以的(双击可执行程序),但拿到别的linux系统(中标麒麟)上,双击可执行程序就没有创建文件,用QProcess也不行, 把这句话写成脚本,在程序中把参数传给脚本运行也不行 但是在终端运行这个命令是可以的, 在终端运行这个可执行程序也可以. 就是图形界面下双击运行不

Linux下普通用户执行sudo命令不需要密码问题的解决

环境:VirtualBox4.1 + RedHat Linux 6 + Putty0.62 问题:当普通 用户执行sudo命令时,会提示你输入当前用户的密码.使用这个命令目的就是为 了安全.方便,每次输入密码就会显得麻烦.所以提供如下的解决办法.只需要 以前的基础上添加NOPASSWD就行. 解决: 1.添加可以执行root命 令的用户,详情参考XXX is not in the sudoers file解决. 2.在以前的 基础上添加代码 user_name ALL=(ALL) NOPASSW

Linux下如何不输入密码执行sudo命令

作为ubuntu等桌面系统,默认登录的帐号是没有root权限的,为了提升权限来执行任务,我们一般用到sudo+命令来执行,但是不难发现我们一般都要输入密码.那么有没有什么方法可以让我们执行sudo的时候不输入密码呢?当然有咯.那就是对sudoers文件进行修改. 如何修改sudoers?直接修改/etc/sudoers么?不,那样子修改很容易造成权限错乱.奶牛手动修改的时候,由于对于格式并不是那么了解,所以编辑的时候报错很多次,因此不建议用直接修改法.我们可以用visudo来进行编辑. 进入终端

spring对象-spring让一个对象的创建不用new了

问题描述 spring让一个对象的创建不用new了 是什么对象不用new了.aop有是什么东西.网上说的不容易理解.希望大神能给通俗的讲讲.谢谢. 解决方案 IOC(DI)简单地说就是,调用类对某一接口实现类的依赖关系又第三方(容器或者协作类)注入.举个例子 控制即是对于接口B的控制权 反转即是这种控制权从A上移除,转交到D里 调用类A对接口B的实现类C的依赖由第三方D类来提供. 这个解释够浅显了吧!!! 解决方案二: C++用new和不用new创建类对象C++用new和不用new创建类对象区别

ubuntu-Ubuntu10.04 执行sudo apt-get update时无法连接

问题描述 Ubuntu10.04 执行sudo apt-get update时无法连接 我的系统是Ubuntu10.04,网络连接正常.在执行sudo apt-get update 时出现出现无法连接的问题:部分截屏如下 : 请各位帮个忙,实在不知道怎么整么了? 解决方案 sudo apt-get updatesudo apt-get updateubuntu执行sudo apt-get update时出现"Hash校验和不符" 解决方案二: 对应的源访问不了了,你需要添加新的repo

Java并发编程示例(一):线程的创建和执行_java

开门见山 在IT圈里,每当我们谈论并发时,必定会说起在一台计算机上同时运行的一系列线程.如果这台电脑上有多个处理器或者是一个多核处理器,那么这时是实实在在的"同时运行":但是,如果计算机只有一个单核处理器,那么这时的"同时运行"只是表象而已. 所有的现代操作系统全部支持任务的并发执行.你可以边听音乐,边上网看新闻,还不耽误首发电子邮件.我们可以说,这种并发是 进程级并发 .在进程内部,我也可以看到有许许多多的并发任务.我们把运行在一个进程里面的并发任务称 线程. 和

执行sudo的时候不用输入密码

  我们在执行很多需要高级权限的操作时,都需要用 sudo 来以 root 身份执行,这时候系统会要求你输入当前管理员的密码以验明正身.这个虽然是很有必要的安全策略,但是在私人电脑上这个步骤显然有些多余,我们可以用下面的方法来省略这个验证,打开 terminal: sudo vi /etc/sudoers 当然也可以使用任何一个你觉得顺手的编辑器编辑这个文件.在里面找到对应你要改的用户名,比如说 gkp 的那行,修改为: gkp ALL=(ALL) NOPASSWD:ALL 这样的格式,保存退出

oracle 包,函数,过程,块的创建和执行及在java中执行(转)

  SQL> create or replace procedure sp_guocheng1 is--如果有这个名字就替换  2  begin--执行部分  3  insert into guocheng values('liyifeng','liyifeng');  4  end;  5  /  --执行的意思 Procedure created     显示错误SQL> show error;Errors for PROCEDURE LIYIFENG.SP_GUOCHENG1: LINE

Windows Server 2008创建定时执行任务计划(全天候)

如我们点击创建任务,然后 点击常规 然后 在触发器中,点击新建 在打开的新建触发器中如下图所示 然后 我们可以设置每日,具体如下图所示 保存后任务会自动启动,待运行时间一到立即执行,经测试,即使服务器在开始时间后启动任务也可以自动启动. 补充说明 [1].细心的你可能发现触发器开始任务有个"启动时",能不能设置启动后每1分钟执行任务,持续时间无期限来实现一样的功能呢?答案是可以,但这么设置服务器必须重启一次才会生效,所以强烈推荐使用上面的方法.