Cygwin保存软件包选择以供以后重新安装 [英] Cygwin save package selections for later reinstall
问题描述
我想知道是否有一种方法可以保存cygwin的当前软件包选择,以便以后重新安装或移植到其他系统上。
I was wondering if there is a way to save the current package selections for cygwin for a later reinstall or porting on a different system.
这样做真的很棒:
- 运行命令以导出现有系统上已安装软件包的列表
- 以诸如
setup-x86_64.exe --list list.txt之类的方式将该列表传递给另一个系统上的安装程序
- run a command to export a list of installed packages on an existing system
- pass the list to the installer on another system in a way such as
setup-x86_64.exe --list list.txt
我不认为设置有这样的切换,所以即使是任何类型的脚本或批处理,
I don't think the setup has such a switch, so even any type of script or batch working in this direction would be just fine.
由于所需软件包的数量非常多,因此应无人看管,才能将其视为一个好的解决方案!
Since the number of needed packages is very high, it should be unattended in order to consider it as a good solution!
完成这种快速重新安装的最佳方法是什么?
推荐答案
cygcheck
提供了已安装软件包的列表。 设置
不接受列表选项,但您可以使用 -P
The list of installed packages is available with cygcheck
. Setup
does not accept a list option but you can specific the list with -P
以下代码与 -A
选项一起使用时,将创建
a精心制作的 cyg-reinstall-$ {Arch } .bat
批处理文件以安装系统中现有的所有
软件包。
The following code, when used with -A
option will create
a crafted cyg-reinstall-${Arch}.bat
batch file to install all
packages existing in a system.
#!/bin/bash
# Create a batch file to reinstall using setup-{ARCH}.exe
# all packages reported as incomplete
print_error=1
if [ $# -eq 1 ]
then
if [ $1 == "-I" ]
then
lista=$(mktemp)
cygcheck -c | grep "Incomplete" > $lista
print_error=0
fi
if [ $1 == "-A" ]
then
lista=$(mktemp)
cygcheck -cd | sed -e "1,2d" > $lista
print_error=0
fi
fi
if [ $# -eq 2 ]
then
if [ $1 == "-f" ]
then
lista=$2
print_error=0
fi
fi
# error message if options are incorrect.
if [ $print_error -eq 1 ]
then
echo -n "Usage : " $(basename $0)
echo " [ -A | -I | -f filelist ]"
echo " create cyg-reinstall-{ARC}.bat from"
echo " options"
echo " -A : All packages as reported by cygcheck"
echo " -I : incomplete packages as reported by cygcheck"
echo " -f : packages in filelist (one per raw)"
exit 1
fi
if [ $(arch) == "x86_64" ]
then
A="x86_64"
else
A="x86"
fi
# writing header
echo -n -e "setup-${A}.exe " > cyg-reinstall-${A}.bat
# option -x remove and -P install
# for re-install packages we need both
if [ $1 == "-I" ]
then
awk 'BEGIN{printf(" -x ")} NR==1{printf $1}{printf ",%s", $1}' ${lista} >> cyg-reinstall-${A}.bat
fi
awk 'BEGIN{printf(" -P ")} NR==1{printf $1}{printf ",%s", $1} END { printf "\r\n pause "}' ${lista} >> cyg-reinstall-${A}.bat
# execution permission for the script
chmod +x cyg-reinstall-${A}.bat
这篇关于Cygwin保存软件包选择以供以后重新安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!