编译安装 pdsh

66 阅读2分钟

背景

在使用 deepspeed 进行多机训练的时候,会使用到 pdsh

至于为什么采用编译安装的方式,是因为我之前使用 apt/yum 安装的 pdsh,连 pdsh -V 都运行不起来,所以直接采用编译安装


编译安装

配置环境

# Debian/Ubuntu:  
sudo apt-get install -y autoconf automake libtool m4  
# RedHat/CentOS:  
sudo yum install -y autoconf automake libtool m4  

安装步骤

  1. 先把代码 clone 下来,git clone github.com/chaos/pdsh.…
  2. 执行 cd pdsh && autoreconf -fiv 命令,生成 configure
  3. 按照训练需求配置编译选项,我这里执行的命令是
# --prefix=/root/pdsh 安装到用户目录(避免系统权限问题),容器内我的用户名是 root,所以直接将代码 git clone 到 /root 目录下了  
# --with-ssh 强制启用 ssh 通信模块  
# --enable-static-modules 静态链接模块(避免动态库路径问题)  
# 还可以使用 --without-rsh 禁用不安全的rsh协议;以及 --disable-xml 禁用不需要的XML支持(减少依赖)  
./configure --with-ssh --enable-static-modules --prefix=/root/pdsh  
  1. 直接编译安装,执行 make && make install 命令,普通用户就行,因为安装到用户目录,所以不需要 sudo,如果你想安装到用户目录,比如 /usr/local 下,同时你当前使用的用户是普通用户,那么就需要 sudo 权限
  2. 将编译好的 pdsh 永久的添加到环境变量中,执行 echo 'export PATH=/root/pdsh/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
  3. 还需要配置这个环境变量,来设置强制使用 SSH 通信,执行 echo 'export PDSH_RCMD_TYPE=ssh' >> ~/.bashrc && source ~/.bashrc
  4. 验证是否安装成功
pdsh -V # 查看版本及模块,确认包含"ssh"  
pdsh -q -w localhost # 检查配置,应显示"Rcmd type: ssh"  
  1. 因为使用编译安装的方式,所以如果后续想要卸载,到时候直接进入 pdsh 代码路径里面,执行 make uninstall 卸载掉就好