On Thu, Jun 15, 2023 at 12:15 PM gh via Cygwin wrote: > > Dear all, > > Sorry if this question was already answered somewhere in the FAQ. > > > > I am running a deprecated 32bits version, and want to switch to 64bits. > Install procedure is easy, but does not cover one thing : I > would like to preserve the list of packages I have installed, and minimize > the change of paths in my windows environment (did not > change anything for the last 10 years, so I don't want to dig into where are > things). > > > > Currently, cygwin is in C:\cygwin, which I have moved to C:\cygwin-bck. I > then want to install in the now almost empty C:\cygwin, > but copying there the necessary config files so that setup-x86_64.exe knows > which packages to download. > > > > Thanks in advance, > > > > Gilbert > Hi Gilbert,
No need to rename the directory as the Cygwin 64 bit will be installed in C:\Cygwin64 folder Attached the script that I use to reinstall my system on different computers. It can be adapted to duplicate the 32bit in a 64 bit installation Assuming your file list is not longer than 32K, this should work : chmod + x cyg-reinstall.sh sed -e "1d" /etc/setup/installed.db | sed -e "s/ .*$//" > filelist.txt ./cyg-reinstall.sh -f filelist.txt cp cyg-reinstall-x86.bat cyg-reinstall-x86_64.bat sed -i -e "s/setup-x86.exe/setup-x86_64.exe/" cyg-reinstall-x86_64.bat if the "filelist.txt" is too long you can split in multiple chunks, like: grep -v "^lib" filelist.txt > nolib-list.txt grep "^lib" filelist.txt > lib-list.txt I usually need to split mine, as my installation hit the 32K limit of command line wc -l *.txt 2608 filelist.txt 1297 lib-list.txt 1311 nolib-list.txt ls -1s *.txt 40K filelist.txt 20K lib-list.txt 20K nolib-list.txt Regards Marco
#!/bin/bash #Copyright (c) 2021, 2023 Marco Atzeri #All rights reserved. #Redistribution and use in source and binary forms, with or without #modification, are permitted provided that the following conditions are met: #1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. #2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. #3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by Marco Atzeri. #4. Neither the name of the Marco Atzeri nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. #THIS SOFTWARE IS PROVIDED BY MARCO ATZERI ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MARCO ATZERI BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS #SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Create a batch file to reinstall using setup-{ARCH}.exe # all packages or the ones reported as incomplete # or install from a list or remove from a list # If you hit the length limit of command line in bash or CMD # # https://devblogs.microsoft.com/oldnewthing/20031210-00/?p=41553 # https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/command-line-string-limitation # # the best way is to split the installation in multiples chunks 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" -o $1 == "-r" ] 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 | -r filelist ]" echo " create cyg-reinstall-{ARC}.bat from" echo " options" echo " -A : install All packages as reported by cygcheck" echo " -I : install Incomplete packages as reported by cygcheck" echo " -f : install packages in filelist (one per row)" echo " -r : remove packages in filelist (one per row)" 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" -o $1 == "-r" ] then awk 'BEGIN{printf(" -x ")} NR==1{printf $1}{printf ",%s", $1}' ${lista} >> cyg-reinstall-${A}.bat fi if [ $1 == "-I" -o $1 == "-A" -o $1 == "-f" ] then awk 'BEGIN{printf(" -P ")} NR==1{printf $1}{printf ",%s", $1} END { printf "\r\n pause "}' ${lista} >> cyg-reinstall-${A}.bat fi # execution permission for the script chmod +x cyg-reinstall-${A}.bat
-- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple