记录一下使用chroot打包一个程序所运行的环境。先在本机上将它的依赖安装完毕,跑一遍检查是否有漏缺的包。没有的话将其mount挂载相应的文件夹之后打包该环境。然后放在一台没有任何依赖的环境中去跑,测验安装的依赖是否好使。
chroot是将根目录切到当前目录下。自己制作模拟环境比较麻烦,但是直接挂载系统文件显得文件太大。
在这期间遇到了很多问题
首先先在本机的chroot中能让程序跑起来。
但是可能刚开始环境打包的有问题,比如挂载的包里面少了依赖环境。
在另一个环境中解压后,架构必须一致才可以进去chroot
还会有很多的权限问题啊什么的。
还有缺失的软链接问题。导致程序编译不能通过。
以及免密登录的问题。
更多的学会的是遇到错误去哪里找。找到源头问题去解决。
配置免密:
#配置root用户免密登陆
#获取服务器ip地址
SEVERIP=$1
#获取该脚本所在地址
MYDIR=$(cd "$(dirname "$0")";pwd)
expect<<EOF
spawn ssh-keygen
expect {
"id_rsa):" { send "\r" ; exp_continue }
"no passphrase" { send "\r" ; exp_continue }
"again:" { send "\r" ; exp_continue }
"y/n" { send "y\r" ; exp_continue }
"SHA" { }
}
expect eof
EOF
sleep 1
cd ~/.ssh
cp id_rsa.pub authorized_keys
expect<<EOF
spawn ssh $SEVERIP
expect {
"yes/no" { send "yes\r" ; exp_continue }
"\$" { send "exit\r"; }
"$SEVERIP" {
expect {
"\$" { send "exit\r" }
}
}
}
expect eof
EOF