Hello,
No one expressed a specific interest in my cygwin-without-autoit schemes,
but I guess I'll let you all know how it worked out anyway :)
First here's a summary:
1. run setup.exe interactivly
a) select install from local directory
b) select next
c) select cancel
d) copy the file structure you find in $CYGWIN_ROOT to a safe location.
2. run setup.exe interactivly
a) select download from network
b) follow the instructions in the GUI until you
have download the files you want to a local directory
c) in a subdirectory of the download directory find setup.ini
e) edit your setup.ini, replacing any category name that doesn't have
"Base" in it with the category name "Base"
Now you can make a batch script(note:2 below) to work with Unattended, that copies
the saved file structure from summary item 1.d, to your target root directory,
changing /etc/setup/last-cache to point to the repository in your Unattended %Z% drive,
then run setup.exe with the -q flag and using -R to point it at your target
root directory.
Now an explanation:
My procedure is still a little crufty, and it relies on some undocumented
behavior of Cygwin's setup.exe installation application, but I still prefer
it to using point-n-click-o-mation. To recap you can
run setup.exe -q for a silent install. Use -R to specify Cygwin's soon to
be root directory. Now the weird parts . . . By default cygwin wants to
download from the internet and install a basic set of utilities; worse it
doesn't have a default mirror selected, so you can't run setup.exe at all
without some tricks. Here is the procedure I followed to allow an unattended
install with no AutoIt:
First I used setup.exe to download the packages I was interested in, as
described on the Unattended web site. Whatever you choose as a source of
files for setup.exe by default it will only install packages from the Base
Category -- even in silent mode. At the same time, there is no command line
option to control which packages get installed. This is an obvious problem,
how do we trick it? It knows what category a packages belongs by looking
in a file named setup.ini(3), which it keeps in its file cache. So that
setup.exe will think everything is part of the Base category you can just
search setup.ini for lines like this(4):
category: Editors
and make them like this:
category: Base
Now before we run setup.exe, we still need a way to tell it to install from a
local directory. As you run setup.exe it starts putting files into your Cygwin-
root-to-be(1). If you cancel and start up again, it remembers your previous
choices, made through the GUI, by saving them in files in /etc/setup and by
reading events out of /var/log/setup.log! The all important decision about where
to install from is read from a line in the log like:
2004/02/02 08:29:40 source: network install
I haven't experimented enough to know what a minimal log file would look like, so
I just used one I created by running setup.exe to the point where I select an
install from a local directory, click next, then cancel. I then retrieve the
/var/log/setup.log file, and save it for later use.
If /etc/setup/last-action contains the string "Install" cygwin will be in install
mode (that's actually it'd default anyway), and it reads /etc/setup/last-cache
to decide where to store downloaded files. Thus, to pass those defaults to
setup.exe when I run from Unattended I just pre-populate the target root directory
with an /etc/setup/ with the right contents.
(1) After a partial run of setup.exe in interactive mode my cygwin root contains
the following files:
/etc/setup/last-action
/etc/setup/last-cache
/etc/setup/last-connection
/etc/setup/last-mirror
/etc/setup/timestamp
/var/log/setup.log
/var/log/setup.log.full
(2) My cygwin.bat looks like this:
set CYGWIN_ROOT=C:\cygwin
todo.pl "%Z%\packages\cygwin\setup.exe -q -R %CYGWIN_ROOT%"
todo.pl "xcopy /S %Z%\packages\cygwin\skel %CYGWIN_ROOT%\ "
(3) After downloading from http://mirrors.kernel.org/ using cygwin/pkgs as a file cache
setup.exe created the following file structure in ./pkgs:
cygwin/pkgs/
cygwin/pkgs/http%3a%2f%2fmirrors.kernel.org%2fsources.redhat.com%2fcygwin
cygwin/pkgs/http%3a%2f%2fmirrors.kernel.org%2fsources.redhat.com%2fcygwin/release
... release has lots of subdirectories containing packages ...
cygwin/pkgs/http%3a%2f%2fmirrors.kernel.org%2fsources.redhat.com%2fcygwin/setup.ini
(4) This is what entries from setup.ini look like:
@ vim
sdesc: "Vi IMproved - enhanced vi editor"
category: Base
requires: cygwin terminfo libncurses7 libiconv2
version: 6.2.098-1
install: release/vim/vim-6.2.098-1.tar.bz2 2967923 33bf949dc538038f63af0c87f5bf37d6
source: release/vim/vim-6.2.098-1-src.tar.bz2 4715007
dc7723d78166829d9a8a566c3543591c
[prev]
version: 6.2-3
install: release/vim/vim-6.2-3.tar.bz2 2216868 de773831f76bc255f2ef10285f0b50d5
source: release/vim/vim-6.2-3-src.tar.bz2 3284103 fb2523b96ffc7a5c1214ad9929f9a59a
@ w32api
sdesc: "Win32 API header and library import files"
category: Libs
version: 2.4-1
install: release/w32api/w32api-2.4-1.tar.bz2 960732
74a15fb7be821f73e43fbd415aef0422
source: release/w32api/w32api-2.4-1-src.tar.bz2 808115
11952ad58b9c309ee8e881f80876f714
[prev]
version: 2.3-1
install: release/w32api/w32api-2.3-1.tar.bz2 908529
a98c83018b20cb82e179f4c1a580a182
source: release/w32api/w32api-2.3-1-src.tar.bz2 760509
09aa9f22ec0938f7bcfdddd633c4a9ab
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id56&alloc_id438&op=click
_______________________________________________
unattended-info mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/unattended-info