我编写了一个脚本,连同其他任务一起连接到一个远程服务器,并提取所有已安装软件包的列表并安装它们,如下所示:
echo -e "\e[36m#===# Getting list of packages to install #===#\e[0m" $ssh root@$srv 'rpm -qa --queryformat "%{NAME}\n" >/tmp/sw.lst' $scp root@$srv:/tmp/sw.lst /tmp/ np=`cat /tmp/sw.lst |wc -l` echo -e "\e[36m#===# $np Packages are going to be installed! #===#\e[0m" /usr/bin/xargs yum -y install < /tmp/sw.lst
我的问题是,当它通过列表运行时,它跳过了默认安装来的很多包,我试图保存那个时间,这是可能的吗?
我只是做一个
ssh root@$srv 'rpm -qa' | xargs yum -y install
去喝杯咖啡什么的,因为要find解决办法
你仍然需要做一些比较两台机器rpm -qa
和sorting它,运行像SvWbuild议的comm
技巧,最后使用该列表进行yum安装…
为什么不把这个数字呢?
或者更好的是,为什么不把所有箱子连接起来的冻结回购,然后启动新的装置(使用鞋匠/工头/太空行走/你有什么)? 然后你会知道从一开始就安装的每个软件包,每个系统看起来都是一样的(或者相似的)? 为了保持系统的同步,我会使用木偶,并指定应该在那里安装的软件包列表… – 然后,这种情况不会出现在第一位; 既然你想用这个节省时间,我想你做了很多…
我无法知道在操作系统设置期间是否检测到此软件包已安装,并且此列表可能因安装时select的选项而异。
解决方法:
man sort
) 使用comm
只显示不在这两个文件中的行
comm prodinstall.txt baseinstall.txt -2 -3 > install.txt
install.txt
将只包含不在基本安装中的软件包。