CygwinのコマンドラインからCygwinをアップデートするには?

cygwin updates

検索してCygwinから逃したパッケージをダウンロードするには、私はsetup.exe GUIを毎回実行する必要があり、何度もクリックして、他の退屈なことを行う

Cygwinのコマンドラインから直接同じことをする方法はありますか?apt-get toolsがやっているような

  80  Pavel Vlasov  2010-11-25


ベストアンサー

こちらをご覧ください

他のことはさておき、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

42  icyrock.com  2010-11-25


これにより、すべてのCygwinコンポーネントの64ビット用の無人アップグレードが実行されます

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

これにより、32 ビット用のすべての cygwin コンポーネントの無人アップグレードが実行されます

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

cygwin1.dllのアップグレードによるCygwinアプリの誤動作を防ぐため、アップグレード完了後に再起動する必要があります

  • --no-desktop デスクトップショートカットの作成を無効にする
  • --no-shortcuts デスクトップとスタートメニューの作成を無効にする
  • --no-startmenu スタートメニューのショートカットの作成を無効にする
  • --quiet-mode 無人設定モード

25  Johnny  2013-07-26


別の解決策としては、GitHub にある apt-cyg スクリプト を使うこともできます

10  Chris Charabaruk  2010-12-10


Cygwinのセットアップの場所は変更と分割があるようです。これでどちらかが必要になりました

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

or

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

7  Skip Huffman  2014-06-16


インストーラではコマンドラインから許可しています(elevated shellをお願いします)

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

64ビット版の場合

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

Details:

  • c:\cygwinをCygWinのルートインストールディレクトリに置き換えてください
  • CygWin のシェルやプログラムを閉じることを提案します (例: OpenSSH をインストールしている場合は net stop sshd)
  • パラメータ -q は必須ではありません

GUI(DOSシェル)やリモートコンソール(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

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

…インストール後にリベースする必要があります

1. – CygWinのシェル、プログラム、サービスをすべて閉じる。 2. – 管理者(昇格)としてc:\CygWin\bin\ash.exeを開く。 3. – /bin/rebaseallを実行

5  Sopalajo de Arrierez  2014-12-07


拡大して @Johnny さんの回答を見る https://superuser.com/a/624731/110335

私が直面したイライラは、.iniファイルがCygwinのsetup.exeの新しいバージョンからのものであることを確認するプロンプトが表示されることでした

私は以下のスクリプトを自分で書いて自己更新し、必要なものはすべて非インタラクティブに更新します

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

1  Marcos  2014-10-30


私も少し前にこの必要性を感じました。以前はインストーラファイルをダウンロードしたままにしておいて、それを実行してインストールしていましたが、時々 Cygwin が更新されると、インストーラファイルが古くなってしまうことがありました。結局、自動昇降してインストーラをダウンロードし、無人アップグレードを実行する Powershell スクリプトを作成することにしました。これをデスクトップに置いて、右クリックして “Run with Powershell” を実行するだけで、すべての Cygwin パッケージをその場でアップグレードしてくれます。必要なユーザー操作は、UACと最後に “Press any key to continue “というプロンプトだけです。ただのスクリプトなので、コマンドラインからも実行できます

久々にここにコードをアップしてみました。http://pastebin.com/wMRctAuL

以下にコピーしました。いくつかのStackOverflowのQ&Asの助けを借りて書きました。)これを実行できるようにするには、ローカルの 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  Ben Richards  2016-05-04


Unattended upgrade

Cygwin FAQ
setup-x86.exe -q -g

Meaning:

Command Line Options:
-q --quiet-mode                   Unattended setup mode
-g --upgrade-also                 also upgrade installed packages

0  KIM Taegyoon  2016-04-11


以下の内容の「cygwin-update.bat」などのバッチファイルを作成し、パスに入れます

@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

0  Dean Householder  2018-04-03


自分がやろうとすることをサポートする方法はないようです

MSYS2 をチェックしてみてはいかがでしょうか。これはより良い開発サポートを提供していますが (msys の cmake は MSVC を使ったコマンドラインビルドをサポートしており、最新の cmake や gcc などの頻繁なビルドツールのアップデートを提供しています)、シンボリックリンクのサポートはありません (これは cygwin 上では偽装されています)。そこでは、pacboy updateを呼び出すか、pacmanを直接使うだけです。しかし、セッションの実行時にも似たような問題があります: ベースシステムのコンポーネントが更新された場合、実行中のシェルを即座に終了するように要求されます

0  user1050755  2020-04-06


タイトルとURLをコピーしました