Cygwin'den kaçırılmış bir paketi aramak ve indirmek için her seferinde setup.exe GUI'yi çalıştırmalı, birçok kez tıklamalı ve başka sıkıcı şeyler yapmalıyım.
Aynısını doğrudan Cygwin'in komut satırından yapmanın bir yolu var mı? Apt-get tools gibi.
Cygwin'den kaçırılmış bir paketi aramak ve indirmek için her seferinde setup.exe GUI'yi çalıştırmalı, birçok kez tıklamalı ve başka sıkıcı şeyler yapmalıyım.
Aynısını doğrudan Cygwin'in komut satırından yapmanın bir yolu var mı? Apt-get tools gibi.
Yanıtlar:
Buraya bir göz atın:
Diğer şeylerin yanı sıra, aşağıdaki seçeneklerin listesini verir 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
Öyleyse setup.exe -P <package name>
işi yapmalı. Cygwin burada yok, bu yüzden beklendiği gibi çalıştığını onaylamak için test edin.
Paket aramak için:
kullanabilirsiniz cygcheck -p
:
cygcheck -p REGEXP
...
-p, --package-query search for REGEXP in the entire cygwin.com package
repository (requires internet connectivity)
Bu gibi çıktı üretir (yukarıdaki siteden örnek):
$ 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
grep
... en azından ...
Bu, tüm cygwin bileşenlerini katılımsız bir yükseltme gerçekleştirir
cd C:\cygwin
wget -N https://cygwin.com/setup-x86.exe
setup-x86.exe --no-desktop --no-shortcuts --no-startmenu --quiet-mode
Yükseltme tamamlandıktan sonra cygwin uygulamalarının yükseltilmiş cygwin1.dll nedeniyle hatalı çalışmasını önlemek için yeniden başlatmanız gerekir.
--no-desktop Masaüstü kısayolu oluşturmayı devre dışı bırak
--no-shortcuts Masaüstü ve başlat menüsünün oluşturulmasını devre dışı bırak
--no-startmenu Başlat menüsü kısayolu oluşturmayı devre dışı bırak
--quiet-mode Katılımsız kurulum modu
zsh: command not found: setup.exe
, ancak kurulum exe burada.
no-shortcuts
neden no-desktop
ve neden ihtiyacınız olacak no-startmenu
?
Alternatif bir çözüm GitHub’ta mevcut olan apt-cyg
betiği kullanmak olacaktır .
Cygwin'in kurulumunun yeri değişmiş ve bölünmüş görünüyor. Şimdi ikisine de ihtiyacın var
wget http://cygwin.com/setup-x86.exe
veya
wget http://cygwin.com/setup-x86_64.exe
bin\wget.exe --timestamping http://www.cygwin.com/setup-x86_64.exe && start setup-x86_64.exe
, o zaman bat dosyası başlatır (yani --timestamping yaptığı da budur) ben her zaman en son yükleyiciyi çalıştırın ve yeni bir sürüm aslında olmadığını sadece kurulumunu indirmek emin olarak,
Yükleyici verir komut satırından (onu yükseltilmiş kabuk , lütfen):
setup-x86.exe --root c:\cygwin -q --upgrade-also
64 bit sürümü için:
setup-x86_64.exe --root c:\cygwin -q --upgrade-also
Detaylar:
c:\cygwin
CygWin'in kök kurulum dizini ile değiştirin .net stop sshd
OpenSSH yüklediyseniz).-q
zorunlu değildir.GUI (DOS kabuğu) veya hatta uzak konsolda (SSH veya telnet) ile çalışır. PowerShell'de test edilmedi (biri mi yaptı?).
Doğru güncelleme çıktısı örneği :
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
Güncelleme sırasında, aşağıdaki gibi sorunlarınız varsa :
The following DLLs couldn't be rebased due to errors:
/usr/bin/cygcrypt-0.dll
veya:
The following DLLs couldn't be rebased because they were in use:
/usr/bin/cygcrypt-0.dll
veya:
ReBaseImage (/usr/bin/cygcrypt-0.dll) failed with last error = 6
... sonra kurulumdan sonra yeniden yüklemeniz gerekir:
1.- Tüm CygWin kabuğunu, programlarını ve servislerini kapatın.
2.- c:\CygWin\bin\ash.exe
Yönetici olarak aç (yükseltilmiş).
3.- Çalıştır /bin/rebaseall
.
setup-86[_x64].exe -B
geçerli kullanıcı olarak çalıştırmak için. Gerekirse cygrunsrv dosyasını bir windows servisi olarak kurmak için yükseltebilirsiniz.
Bu ihtiyacı bir süre önce de hissettim. Yükleyici dosyasını indirilmiş halde tutardım, böylece yüklemeyi çalıştırabilirdim, ancak zaman zaman Cygwin'in güncelleneceği gibi, yükleyici dosyası güncel olmazdı. Otomatik olarak yükselten, yükleyiciyi indiren ve katılımsız bir yükseltme gerçekleştiren bir Powershell betiği oluşturdum. Masaüstümde oturmasını sağladım ve sadece sağ tıklayıp "Powershell ile Çalıştır" seçeneğine tıklayabilir ve tüm Cygwin paketlerimin yerinde yükseltilmesini gerçekleştirir. İhtiyaç duyulan tek kullanıcı etkileşimi UAC ve "Devam etmek için herhangi bir tuşa basın" komutunu en sonda görün. Komut satırından da çalıştırılabilir, ancak komut dosyası olduğu gibi.
Kodu bir süredir burada bulundurdum: http://pastebin.com/wMRctAuL
Aşağıdan kopyaladım. Birkaç StackOverflow Q & As da yardımıyla yazdım. :) Çalıştırmak için tek yapmanız gereken makinenizde yerel Powershell scriptlerini etkinleştirmek . Tamamen Windows'a özgü bir çözüm.
# Get the ID and security principal of the current user account
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)
# Get the security principal for the Administrator role
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
# Check to see if we are currently running "as Administrator"
if ($myWindowsPrincipal.IsInRole($adminRole)) {
# We are running "as Administrator" - so change the title and background color to indicate this
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)"
$Host.UI.RawUI.BackgroundColor = "DarkBlue"
clear-host
}
else {
# We are not running "as Administrator" - so relaunch as administrator
# Create a new process object that starts PowerShell
$newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";
# Specify the current script path and name as a parameter
$newProcess.Arguments = $myInvocation.MyCommand.Definition;
# Indicate that the process should be elevated
$newProcess.Verb = "runas";
# Start the new process
[System.Diagnostics.Process]::Start($newProcess);
# Exit from the current, unelevated, process
exit
}
# Run your code that needs to be elevated here
(new-object System.Net.WebClient).DownloadFile('http://cygwin.com/setup-x86_64.exe','setup-x86_64.exe')
if (!$?) {
Write-Host "Something wrong happened when downloading the Cygwin installer."
Write-Host -NoNewLine "Press any key to continue..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
exit
}
$p = Start-Process .\setup-x86_64.exe -ArgumentList "--upgrade-also --quiet-mode" -wait -NoNewWindow -PassThru
if ($p.ExitCode -ne 0) {
Write-Host "Cygwin setup failed with an error!"
}
Remove-Item .\setup-x86_64.exe
Write-Host -NoNewLine "Press any key to continue..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Johnny'nin yanıtını genişletmek https://superuser.com/a/624731/110335
Karşılaştığım sıkıntı, .ini dosyasının Cygwin'in setup.exe dosyasının daha yeni bir sürümünden geldiğini soruyordu.
Kendimi güncellemek için kendime şu senaryoyu yazdım ve sonra da tüm gerekli olmayan bir biçimde güncellemek için.
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
Katılımsız yükseltme
https://cygwin.com/faq.html#faq.setup.cli
setup-x86.exe -q -g
Anlamı:
Command Line Options:
-q --quiet-mode Unattended setup mode
-g --upgrade-also also upgrade installed packages
Aşağıdaki içerikle "cygwin-update.bat" gibi bir toplu iş dosyası oluşturun ve yolunuza koyun:
@echo off
"%~dp0\gnubin\wget.exe" --no-check-certificate https://www.cygwin.com/setup-x86_64.exe -O C:\cygwin64\setup-x86_64.exe
cd /d C:\cygwin64
setup-x86_64.exe -q -g
cygwin1.dll
, Cygwin programları kötü davranmaya başlar ve Cygwin belgeleri yeniden başlatılmasını önerir. Bu nedenle en iyisi tüm Cygwin programlarını kapatmak, sonrasetup.exe
doğrudan çalıştırmanızcmd
(otomatikleştirmek istiyorsanız, bir kabuk betiği değil bir toplu iş dosyası kullanmak).