Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

To search and download a package missed from Cygwin I need to run setup.exe GUI each time, click many times and do other boring things.

Is there a way to do the same from Cygwin's command line directly? Like apt-get tools do.

share|improve this question
1  
Excellent question! –  Luc M Nov 25 '10 at 1:08

6 Answers 6

up vote 26 down vote accepted

Take a look here:

Aside from the other things, it gives the following list of options to setup.exe:

Command Line Options:
 -A --disable-buggy-antivirus           Disable known or suspected buggy anti
                    virus software packages during execution.
 -C --categories                        Specify entire categories to install
 -D --download                          Download from internet
 -d --no-desktop                        Disable creation of desktop shortcut
 -h --help                              print help
 -K --pubkey                            Path to extra public key file (gpg format)
 -L --local-install                     Install from local directory
 -l --local-package-dir                 Local package directory
 -n --no-shortcuts                      Disable creation of desktop and start menu
                    shortcuts
 -N --no-startmenu                      Disable creation of start menu shortcut
 -O --only-site                         Ignore all sites except for -s
 -P --packages                          Specify packages to install
 -p --proxy                             HTTP/FTP proxy (host:port)
 -q --quiet-mode                        Unattended setup mode
 -r --no-replaceonreboot                Disable replacing in-use files on next
                    reboot.
 -R --root                              Root installation directory
 -S --sexpr-pubkey                      Extra public key in s-expr format
 -s --site                              Download site
 -U --keep-untrusted-keys               Use untrusted keys and retain all
 -u --untrusted-keys                    Use untrusted keys from last-extrakeys
 -X --no-verify                         Don't verify setup.ini signatures

So setup.exe -P <package name> should do the job. Don't have cygwin right here, so test it to confirm it works as expected.

To search for a package, per:

you can use cygcheck -p:

  cygcheck -p REGEXP
  ...
  -p, --package-query  search for REGEXP in the entire cygwin.com package
                       repository (requires internet connectivity)

which produces output like (example from above site):

$ cygcheck -p 'libexpat.*\.a'
Found 2 matches for 'libexpat.*\.a'.

expat-1.95.7-1            XML parser library written in C
expat-1.95.8-1            XML parser library written in C
share|improve this answer
6  
Caveat: if the update replaces cygwin1.dll, Cygwin programs will start to misbehave, and the Cygwin documentations recommend a reboot. So it's best to close all Cygwin programs, then run setup.exe directly from cmd (if you want to automate, use a batch file, not a shell script). –  Gilles Nov 25 '10 at 1:52
    
Thanks! Another thing I need is the ability to search, because I don't know yet what a package I want to download. Once I'll find the full list of packages I could grep it at least... –  Pavel Vlasov Nov 25 '10 at 12:18
    
See the edit for an example. –  icyrock.com Nov 25 '10 at 14:02

An alternate solution would be to use the apt-cyg script available on GitHub.

share|improve this answer

This performs an unattended upgrade of all cygwin components

cd C:\cygwin
wget -N http://cygwin.com/setup.exe
setup.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode

You should reboot after the upgrade is completed to prevent cygwin apps from misbehaving due to upgraded cygwin1.dll

--no-desktop Disable creation of desktop shortcut

--no-shortcuts Disable creation of desktop and start menu

--no-startmenu Disable creation of start menu shortcut

--quiet-mode Unattended setup mode

share|improve this answer
    
Would you mind expanding on the answer to explain what each command does? –  Raystafarian Jul 27 '13 at 1:32
1  
I believe now you may need setup-x86_64.exe or setup-x86.exe. –  drescherjm Jul 30 at 17:10

The location for Cygwin's setup seems to have changes and split. Now you need either

wget http://cygwin.com/setup-x86.exe

or

wget http://cygwin.com/setup-x86_64.exe
share|improve this answer

Expanding on @Johnny's answer http://superuser.com/a/624731/110335

The annoyance I faced were occasion prompts that the .ini file is from a newer version of Cygwin's setup.exe

I wrote myself the following script to self-update, and then update all that needs to, noninteractively.

cygwinSetup64.cmd

@echo on
cd /d e:\cygwin
move /y cygwinSetup-x86_64.exe   setup-x86_64.exe
wget --progress=dot -S -N  http://cygwin.com/setup-x86_64.exe
move /y  setup-x86_64.exe cygwinSetup-x86_64.exe 

cygwinSetup-x86_64.exe   --no-desktop --no-shortcuts --no-startmenu --quiet-mode
share|improve this answer

The installer allows it from command line (elevated shell, please):

setup-x86.exe --root c:\cygwin -q --upgrade-also

for 64 bits version:

setup-x86_64.exe --root c:\cygwin -q --upgrade-also

Details:

  • Replace c:\cygwin with your CygWin's root installation directory.
  • Suggested to close any CygWin shell or program (i.e: net stop sshd if you installed OpenSSH).
  • The parameter -q is not mandatory.

Works via GUI (DOS shell) or even on remote console (SSH or telnet). Not tested on PowerShell (someone did?).

Example of correct updating output:

G:\Instalac\CygWin\v2.852>Starting cygwin install, version 2.852
User has backup/restore rights
Current Directory: g:\Instalac\CygWin\Packages
Could not open service McShield for query, start and stop. McAfee may not be installed, or we don't have access.
root: c:\cygwin system
Selected local directory: g:\Instalac\CygWin\Packages
net: Direct
Loaded cached mirror list
get_url_to_membuf http://cygwin.com/mirrors.lst
getUrlToStream http://cygwin.com/mirrors.lst
site: http://ftp.hawo.stw.uni-erlangen.de/cygwin/
get_url_to_membuf http://ftp.hawo.stw.uni-erlangen.de/cygwin/x86/setup.bz2
getUrlToStream http://ftp.hawo.stw.uni-erlangen.de/cygwin/x86/setup.bz2
get_url_to_membuf http://ftp.hawo.stw.uni-erlangen.de/cygwin/x86/setup.bz2.sig
getUrlToStream http://ftp.hawo.stw.uni-erlangen.de/cygwin/x86/setup.bz2.sig
Changing gid back to original
Visited: 122 nodes out of 4415 while creating dependency order.
Dependency order of packages: _autorebase base-cygwin cygwin _update-info-dir libgcc1 libiconv2 libintl8 alternatives libattr1 li
bgmp10 coreutils libstdc++6 terminfo libncursesw10 libreadline7 bash findutils sed base-files libuuid1 libblkid1 libsmartcols1 zl
ib0 util-linux bashdb zlib-devel binutils libbz2_1 bzip2 libffi6 libp11-kit0 libtasn1_6 p11-kit p11-kit-trust ca-certificates cry
pt libmpfr4 gawk editrights libpcre1 grep libsigsegv2 diffutils csih cygrunsrv popt libpopt0 cygutils cygwin-devel dash file liba
tomic1 libcloog-isl4 libgomp1 libisl10 libmpc3 libquadmath0 libssp0 w32api-headers w32api-runtime windows-default-manifest gcc-co
re libexpat1 liblzma5 libdb4.8 libgdbm4 libopenssl100 libsqlite3_0 libcharset1 libiconv libintl-devel libuuid-devel python gdb li
bargp getent groff gzip hostname info ipc-utils libncurses10 less libapr1 libiodbc2 libmysqlclient18 libcom_err2 libkrb5support0
libk5crypto3 libkrb5_3 libgssapi_krb5_2 libsasl2_3 libopenldap2_4_2 perl openssl libpq5 libaprutil1 libedit0 libproxy1 libneon27
libpipeline1 libserf1_0 login lynx make man-db mintty nano ncurses openssh procps psmisc rebase run screen subversion xz tar tzco
de vim-minimal which zsh
Changing gid to Administrators
Ending cygwin install

If, during update, you had issues like these:

The following DLLs couldn't be rebased due to errors:
  /usr/bin/cygcrypt-0.dll

or:

The following DLLs couldn't be rebased because they were in use:
  /usr/bin/cygcrypt-0.dll

or:

ReBaseImage (/usr/bin/cygcrypt-0.dll) failed with last error = 6

...then you must rebase after installation:

1.- Close all CygWin shell, programs and services.
2.- Open c:\CygWin\bin\ash.exe as admin (elevated).
3.- Run /bin/rebaseall.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.