如何使用configure脚本安装PBS
如何使用configure脚本安装PBS
- 0. 禁用SELinux
OpenPBS不支持SELinux。启用SELinux后,初始启动失败 数据存储权限错误。您也可以定义适当的策略,但它是 超出了本指南的范围。
- 1. 安装构建PBS所需的必备软件包
对于CentOS-8系统,应该配置并启用powertools hwloc-devel和libedit-devel包的Repo。
以root用户运行以下命令:
dnf install -y dnf-plugins-core
dnf config-manager --set-enabled powertools
dnf install -y gcc make rpm-build libtool hwloc-devel \
libX11-devel libXt-devel libedit-devel libical-devel \
ncurses-devel perl postgresql-devel postgresql-contrib python3-devel tcl-devel \
tk-devel swig expat-devel openssl-devel libXext libXft \
autoconf automake gcc-c++ cjson-devel
对于CentOS-7系统,您应该以root身份运行以下命令:
yum install -y gcc make rpm-build libtool hwloc-devel \
libX11-devel libXt-devel libedit-devel libical-devel \
ncurses-devel perl postgresql-devel postgresql-contrib python3-devel tcl-devel \
tk-devel swig expat-devel openssl-devel libXext libXft \
autoconf automake gcc-c++
对于openSUSE系统,您应该以root身份运行以下命令:
zypper install gcc make rpm-build libtool hwloc-devel \
libX11-devel libXt-devel libedit-devel libical-devel \
ncurses-devel perl postgresql-devel postgresql-contrib python3-devel tcl-devel \
tk-devel swig libexpat-devel libopenssl-devel libXext-devel \
libXft-devel fontconfig autoconf automake gcc-c++ cJSON-devel
对于Debian系统,你应该以root身份运行以下命令:
apt-get install gcc make libtool libhwloc-dev libx11-dev \
libxt-dev libedit-dev libical-dev ncurses-dev perl \
postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
automake g++ libcjson-dev
对于Ubuntu-18.04系统,您应该以root用户运行以下命令:
apt install gcc make libtool libhwloc-dev libx11-dev \
libxt-dev libedit-dev libical-dev ncurses-dev perl \
postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
automake g++
对于Ubuntu-24.04系统,您应该以root用户运行以下命令:
apt install gcc make libtool libhwloc-dev libx11-dev \
libxt-dev libedit-dev libical-dev ncurses-dev perl \
postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
automake g++ libcjson-dev
对于使用MacPorts的macOS系统,您应该以root身份运行以下命令:
port install autoconf automake libtool pkgconfig \
expat hwloc libedit libical openssl postgresql14 python310 \
swig-python tcl tk xorg-libX11 xorg-libXt
- 2. 安装运行PBS所需的软件包。除了 对于下面的命令,您还应该安装一个文本编辑器 您的选择(vim、emacs、gedit等)
对于CentOS系统,您应该以root身份运行以下命令:
yum install -y expat libedit postgresql-server postgresql-contrib python3 \
sendmail sudo tcl tk libical chkconfig cjson
对于openSUSE系统,您应该以root身份运行以下命令:
zypper install expat libedit postgresql-server postgresql-contrib python3 \
sendmail sudo tcl tk libical1 libcjson1
对于Debian (jessie)系统,你应该以root身份运行以下命令:
apt-get install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
sudo tcl tk libical1a
对于Debian (stretch)系统,你应该以root身份运行以下命令:
apt-get install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
sudo tcl tk libical2
对于Debian (buster)系统,您应该以root身份运行以下命令:
apt-get install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
sudo tcl tk libical3 libcjson1
对于Ubuntu-18.04系统,您应该以root用户运行以下命令:
apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
sudo tcl tk libical3 postgresql-server-dev-all
对于Ubuntu-24.04系统,您应该以root用户运行以下命令:
apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \
sudo tcl tk libical3 postgresql-server-dev-all
对于使用MacPorts的macOS系统,您应该以root身份运行以下命令:
port install expat libedit libical openssl postgresql14-server python310 \
tcl tk
- 3. 以普通(非root)用户身份打开终端,解包PBS Tarball,并CD到包目录
tar -xpvf openpbs-20.0.0.tar.gz
cd openpbs-20.0.0
- 4. 生成配置脚本和Makefiles。(见下文附注1)
./autogen.sh
- 5. 显示可用的构建参数
./configure --help
- 6. 为您的环境配置构建。你可以使用 参数如下所示。(见下文附注2)
对于CentOS和Debian系统,您应该运行以下命令 命令:
./configure --prefix=/opt/pbs
对于openSUSE系统(参见下面的注释3),您应该运行 下面的命令:
./configure --prefix=/opt/pbs --libexecdir=/opt/pbs/libexec
对于使用MacPorts的macOS系统,您应该运行以下命令:
export CPATH=/opt/local/include/postgresql14:/opt/local/include
export LIBRARY_PATH=/opt/local/lib/postgresql14:/opt/local/lib
./configure --with-swig=/opt/local --with-tcl=/opt/local
如果PTL需要与PBS一起安装,请使用该选项
“——enable-ptl"(见下文附注5)
例如:/configure——prefix=/opt/pbs——enable-ptl
- 7. 通过运行“make”构建PBS。(见下文附注4)
make
- 8. 配置sudo以允许您的用户帐户以以下方式运行命令 根。请参阅在线手册页面,了解sudo、sudoers和 visudo。
- 9. 安装PBS。使用sudo命令以root用户运行该命令
sudo make install
- 10. 通过执行安装后脚本配置PBS
sudo /opt/pbs/libexec/pbs_postinstall
- 11. 编辑/etc/pbs.conf配置PBS服务 应该开始了。如果只安装PBS 对于一个系统,您应该更改PBS_START_MOM的值 从0到1。如果您使用vi作为编辑器,则可以这样做 运行:
sudo vi /etc/pbs.conf
- 12. 必须修改某些文件权限以添加SUID权限
sudo chmod 4755 /opt/pbs/sbin/pbs_iff /opt/pbs/sbin/pbs_rcp
- 13. 启动PBS服务
sudo /etc/init.d/pbs start
- 14. 所有配置的PBS服务现在都应该正在运行。更新 您的PATH和MANPATH变量通过寻找适当的 PBS配置文件或注销和重新登录
对于Bourne shell(或类似的)运行以下命令:
. /etc/profile.d/pbs.sh
对于C shell(或类似的)运行以下命令:
source /etc/profile.d/pbs.csh
- 15. 现在应该能够运行PBS命令来提交 以及查询任务。下面是一些例子。
bash$ qstat -B
Server Max Tot Que Run Hld Wat Trn Ext Status
---------------- ----- ----- ----- ----- ----- ----- ----- ----- -----------
host1 0 0 0 0 0 0 0 0 Active
bash$ pbsnodes -a
host1
Mom = host1
ntype = PBS
state = free
pcpus = 2
resources_available.arch = linux
resources_available.host = host1
resources_available.mem = 2049248kb
resources_available.ncpus = 2
resources_available.vnode = host1
resources_assigned.accelerator_memory = 0kb
resources_assigned.mem = 0kb
resources_assigned.naccelerators = 0
resources_assigned.ncpus = 0
resources_assigned.vmem = 0kb
resv_enable = True
sharing = default_shared
license = l
bash$ echo "sleep 60" | qsub
0.host1
bash$ qstat -a
host1:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
0.host1 mike workq STDIN 2122 1 1 -- -- R 00:00
bash$
--------------------------------------------------------------------
- 注:
注1:如果修改配置。Ac或调整任何文件上的时间戳 都是自动生成的,您需要重新生成它们 重新运行autogen.sh。
注意2:建议创建一个简单的shell脚本来调用 根据您的环境使用适当的选项进行配置。这 过程中使用相同的参数调用configure 随后的调用。如果您已经运行了configure,则可以 通过运行"; /config.status";重新生成所有的makefile。 配置文件的前几行。状态将显示选项 在运行configure时指定的。如果你设置了环境 变量,如CFLAGS,最好将其作为参数 配置(例如:/configure CFLAGS="- 0 -g&quo
注3:openSUSE rpm包将%_libexecdir扩展为/opt/pbs/lib 而不是/opt/pbs/libexec,这会导致post- 安装脚本。提供要配置的——libexecdir值 重写此行为。
注意4:您需要使用POSIX(或接近POSIX) make。GNU使 在这方面工作得很好;BSD make没有。如果你是 如果有任何类型的构建问题,您的make应该是一个素数 可疑的。已经花费了巨大的努力来提供适当的 依赖生成和生成文件,而不依赖任何 posix功能。通过一个简单的调用,构建应该可以正常工作 然而,通过使用各种make标志来使事情复杂化 并不能保证有效。不要惊讶,如果第一件事 make所做的就是再次调用configure。
注意5:PTL安装在PBS所在的父目录中 安装。例如,如果您指定了install prefix=/opt/pbs,那么 您可以在/opt/ PTL目录下找到PTL安装。你可能需要 退出并从终端登录PATH和PYTHONPATH进行更新。
使用valgrind与PBS。
-------------------------------------
下面是检测PBS代码中的内存错误/泄漏的一组步骤。
1. 安装valgrind开发包。
yum install valgrind-devel (zypper for OpenSUSE).
2. 以一种valgrind可以使用的方式编译Python,如下所示:
./configure --prefix=<installdir> --without-pymalloc --with-pydebug --with-valgrind
make; make install
3. 使用特殊的python并在调试模式下编译PBS,如下所示:
./configure --prefix=<installdir> --with-python=<python-dir> CFLAGS="-g -DPy_DEBUG -DDEBUG -Wall -Werror"
4. 在valgrind下运行pbs daemons。
a)检测内存错误(不是泄漏)运行pbs daemons,如下所示:
export LD_LIBRARY_PATH=/opt/pbs/pgsql/lib:/opt/pbs/lib:$LD_LIBRARY_PATH
valgrind --tool=memcheck --log-file=/tmp/val.out /opt/pbs/sbin/pbs_server.bin
b)使用提供的泄漏抑制文件valgrind来检测内存泄漏。供应如下:
export LD_LIBRARY_PATH=/opt/pbs/pgsql/lib:/opt/pbs/lib:$LD_LIBRARY_PATH
valgrind --tool=memcheck --log-file=/tmp/val.out --suppressions=./valgrind.supp --leak-check=full --track-origins=yes /opt/pbs/sbin/pbs_server.bin