CygwinのコマンドラインからCygwinを更新する方法


73

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

Cygwinのコマンドラインから直接同じことを行う方法はありますか?apt-getツールのように。

回答:


40

ここを見てください:

他のものとは別に、次のオプションのリストを提供します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

9
警告:更新プログラムが置き換えられた場合cygwin1.dll、Cygwinプログラムは誤動作を開始し、Cygwinのドキュメントでは再起動が推奨されます。したがって、すべてのCygwinプログラムを閉じてsetup.exeから直接実行するcmdことをお勧めします(自動化する場合は、シェルスクリプトではなくバッチファイルを使用します)。
ジル

ありがとう!もう1つ必要なのは、ダウンロードするパッケージがまだわからないため、検索できることです。私は私ができるパッケージの完全なリスト見つけるたらgrep、それ少なくとも...
パベルVlasov

例については、編集を参照してください。
icyrock.com

22

これにより、すべての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無人セットアップモード


それぞれのコマンドが何をするのかを説明するために答えを広げてくれませんか?
レイスタファリアン

9
今、setup-x86_64.exeまたはsetup-x86.exeが必要になると思います。
drescherjm 14

cygwin 2.9ではzsh: command not found: setup.exeが表示されますが、setup exeはここにあります。
ティモ

あなたが使用している場合はno-shortcuts、なぜあなたはまた、必要があるだろうno-desktopno-startmenu
ハシム

とても助かりました。これについては知りませんでした。インストールするパッケージを指定することもできます。これは時間の節約になります。例についてはこちらをご覧ください:gist.github.com/piotrpolak/c616455f1da8dfc2d4e101afbfdcdc8d
Sridhar Sarnobat

10

別の解決策は、GitHubで利用可能なapt-cygスクリプトを使用することです。


3
cygwin自体のアップグレードはサポートしていません。
thoni56

@ThomasNilssonなぜあなたはそれを思いますか?
アンドレチャレラ

1
cygwin1.dllを使用してシェルから実行するので。もちろん、あなたは可能性が ...別のシェルを使用する
thoni56

「本当の」質問は更新されませんでしたが、「セットアップUIを使用せずに1つのパッケージをインストールする方法」であり、これが本当の答えです...本当に、セットアップよりもずっと良いですセットアップに盲目的にあなたの信仰を置くだけではありません
-THESorcerer

7

Cygwinのセットアップの場所は、変更および分割されているようです。今、あなたはどちらかが必要です

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

または

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

setup.batにコンテンツが含まれており、bin\wget.exe --timestamping http://www.cygwin.com/setup-x86_64.exe && start setup-x86_64.exe常に最新のインストーラーを実行し、実際に新しいバージョンがある場合にのみインストーラーをダウンロードします(これが--timestampingの動作です)。その後、batファイルが起動します
hanshenrik

4

インストーラができますコマンドライン(からそれを上昇シェル、してください):

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

64ビットバージョンの場合:

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

詳細:

  • c:\cygwinCygWinのルートインストールディレクトリに置き換えます。
  • CygWinシェルまたはプログラムをすべて閉じることをお勧めします(つまりnet stop sshd、OpenSSHをインストールした場合)。
  • パラメーター-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

または:

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

...次に、インストール後にリベースする必要があります。

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


1
私のために働く。ありがとう。最初に最新のsetup-x86.exeまたはsetup-x86_64.exeをダウンロードする必要があります。cmd Run As Administrator
-Marslo

2
すべてのユーザーにインストールしない場合(つまり、cygwin rootがadminに書き込みを要求する場合)、セットアップを管理者として、または--rootで実行する理由はほとんどありません。setup-86[_x64].exe -B現在のユーザーとして実行します。必要に応じて、後で昇格してcygrunsrvをWindowsサービスとしてインストールできます。
カウバート

1

少し前に、この必要性も感じました。以前はインストーラーファイルをダウンロードしたままにしていたので、実行するだけでインストールできましたが、Cygwinが更新されると、インストーラーファイルが古くなることがありました。最終的に、自動昇格、インストーラーのダウンロード、無人アップグレードの実行を行うPowershellスクリプトを作成しました。デスクトップに置いて、右クリックして「Powershellで実行」するだけで、すべてのCygwinパッケージのインプレースアップグレードが実行されます。必要なユーザーインタラクションは、UACと最後に「続行するには任意のキーを押してください」というプロンプトのみです。ただし、スクリプトであるため、コマンドラインからも実行できます。

私はしばらくここにコードを持っています:http : //pastebin.com/wMRctAuL

以下にコピーしました。StackOverflowのいくつかのQ&Aを使用して作成しました。:)それを実行するためにあなたがしなければならないのは、あなたのマシンでローカルの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")

0

@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


0

次の内容の「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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.