سؤال كيفية تحديث Cygwin من سطر الأوامر في Cygwin؟


للبحث وتنزيل حزمة فوتت من Cygwin ، أحتاج إلى تشغيل setup.exe GUI في كل مرة ، انقر فوق عدة مرات وقم بأشياء مملة أخرى.

هل هناك طريقة لفعل نفس الشيء من سطر الأوامر في Cygwin مباشرة؟ مثل أدوات apt-get.


69
2017-11-25 00:51


الأصل




الأجوبة:


ألقِ نظرة هنا:

وبصرف النظر عن الأشياء الأخرى ، فإنه يعطي قائمة الخيارات التالية 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

وبالتالي setup.exe -P <package name> يجب القيام بهذه المهمة. ليس لديك cygwin هنا ، لذا اختبره للتأكد من أنه يعمل كما هو متوقع.

للبحث عن حزمة ، لكل:

يمكنك استخدام cygcheck -p:

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

التي تنتج مخرجات مثل (مثال من الموقع أعلاه):

$ 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

39
2017-11-25 01:14



التحذير: إذا كان التحديث يستبدل cygwin1.dll، سيبدأ برنامج Cygwin يسيء التصرف ، وتوصي وثائق Cygwin إعادة تشغيل الكمبيوتر. لذلك من الأفضل إغلاق جميع برامج Cygwin ، ثم تشغيلها setup.exe مباشرة من cmd (إذا كنت ترغب في التشغيل التلقائي ، استخدم ملف دفعي ، وليس برنامج نصي shell). - Gilles
شكر! شيء آخر أحتاجه هو القدرة على البحث ، لأنني لا أعرف حتى الآن ما هي الحزمة التي أريد تنزيلها. بمجرد العثور على قائمة كاملة من الحزم يمكنني grep على الأقل ... - Pavel Vlasov
انظر التعديل على سبيل المثال. - icyrock.com


هذا يؤدي ترقية غير مراقب لكافة مكونات cygwin

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

يجب إعادة التمهيد بعد اكتمال الترقية لمنع تطبيقات cygwin من سوء التصرف بسبب ترقية cygwin1.dll

- لا سطح المكتب تعطيل إنشاء اختصار سطح المكتب

- لا يوجد اختصارات تعطيل إنشاء سطح المكتب وقائمة البداية

--no-startmenu تعطيل إنشاء اختصار قائمة البدء

- وضع الإعداد وضع غير المراقب


21
2017-07-26 22:34



هل تمانع في التوسع في الإجابة لشرح ما يفعله كل أمر؟ - Raystafarian
أعتقد الآن أنك قد تحتاج إلى setup-x86_64.exe أو setup-x86.exe. - drescherjm
على 2.9 cygwin ، أحصل zsh: command not found: setup.exe، ولكن إكس الإعداد هنا. - Timo
إذا كنت تستخدم no-shortcuts لماذا تحتاج أيضا no-desktop و no-startmenu؟ - Hashim
مفيدة للغاية ، لم أكن أعرف أبدا عن هذا. يمكنك حتى تحديد الحزم التي تريد تثبيتها ، وهي عبارة عن موفر زمني. نرى هنا على سبيل المثال: gist.github.com/piotrpolak/c616455f1da8dfc2d4e101afbfdcdc8d - Sridhar-Sarnobat


حل بديل سيكون استخدام apt-cyg النصي متاح على جيثب.


10
2017-12-10 23:09



لا يدعم ترقية cygwin نفسها ، على ما أعتقد. - thoni56
ThomasNilsson لماذا تعتقد ذلك؟ - André Chalella
منذ أن تقوم بتشغيله من shell باستخدام cygwin1.dll. طبعا انت استطاع استخدام قذيفة أخرى ... - thoni56
كان السؤال "الحقيقي" ليس التحديث ، ولكن "كيفية تثبيت حزمة واحدة دون استخدام واجهة المستخدم الإعداد" ، وهذا هو الجواب الحقيقي ... حقا ، هو الكثير أفضل من الإعداد -p كن كوز ، فإنه سوف يقول لك ما لا تضع إيمانك عمياء في الإعداد - THESorcerer


يبدو أن موقع إعداد Cygwin له تغييرات وانقسام. الآن تحتاج إما

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

أو

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

5
2018-06-16 11:44





ال المثبت يسمح من سطر الأوامر (قذيفة مرتفعة، رجاء):

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

لإصدار 64 بت:

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

تفاصيل:

  • يحل محل c:\cygwin مع دليل تثبيت جذر CygWin الخاص بك.
  • يُقترح إغلاق أي قشرة أو برنامج CygWin (أي: net stop sshd إذا قمت بتثبيت OpenSSH).
  • المعلمة -q ليست إلزامية.

يعمل عبر واجهة المستخدم الرسومية (DOS shell) أو حتى على وحدة التحكم عن بعد (SSH أو telnet). لم تختبر على PowerShell (شخص ما؟).

مثال من تحديث التحديث الصحيح:

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

إذا كان لديك ، أثناء التحديث مسائل مثل هذه:

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

أو:

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

أو:

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

... ثم يجب عليك rebase بعد التثبيت:

1.- أغلق كل CygWin shell والبرامج والخدمات.
2.- مفتوح c:\CygWin\bin\ash.exe كمشرف (مرتفع).
3.- تشغيل /bin/rebaseall.


2
2017-12-07 16:36



يعمل لدي. شكر. تحتاج إلى تنزيل أحدث ملف setup-x86.exe أو setup-x86_64.exe أولاً. وباستخدام كمد تشغيل كمسؤول - Marslo


شعرت بهذه الحاجة منذ فترة. اعتدت على الاحتفاظ بملف المثبت الذي تم تنزيله حتى أتمكن من تشغيله فقط للتثبيت ، ولكن أحيانًا مع تحديث Cygwin ، يصبح ملف المثبت قديمًا. انتهى بي الأمر بإنشاء برنامج نصي Powershell الذي يرفع تلقائيًا ، وينزل برنامج التثبيت ، ويدير ترقية غير مراقب. أنا أجلس على سطح المكتب الخاص بي ، ويمكن فقط انقر بزر الماوس الأيمن و "تشغيل مع Powershell" ، وسوف تؤدي ترقية في نفس المكان من جميع الحزم Cygwin بلدي. التفاعل الوحيد المستخدم مطلوب لـ UAC و المطالبة "اضغط أي مفتاح للمتابعة" في النهاية. يمكن تشغيله من سطر الأوامر أيضًا ، على الرغم من أنه مجرد نص برمجي.

لقد تلقيت الرمز هنا لفترة من الوقت: http://pastebin.com/wMRctAuL

أنا نسخها أدناه. أنا كتبت ذلك بمساعدة عدد قليل من الأسئلة و StackOverflow كذلك. :) كل ما عليك القيام به لتكون قادرة على تشغيله هو تمكين Powershell البرامج النصية المحلية على جهازك. إنه حل متكامل لـ Windows.

# 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")

1
2018-05-04 15:34





توسيع على الإجابة @ جوني https://superuser.com/a/624731/110335

كان انزعاج واجهت مطالبات مناسبة أن ملف .ini هو من إصدار أحدث من setup.exe Cygwin ل

كتبت نفسي البرنامج النصي التالي للتحديث الذاتي ، ومن ثم تحديث كل ما يحتاج إليه ، بشكل غير متزامن.

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

0
2017-10-30 14:40