Cygwinから逃したパッケージを検索してダウンロードするには、毎回setup.exe GUIを実行し、何度もクリックして、他の退屈なことをする必要があります。
Cygwinのコマンドラインから直接同じことをする方法はありますか? apt-getツールのように。
ここで見てみましょう:
他のものとは別に、それは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
これはすべての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無人セットアップモード
別の解決策はGitHubで入手可能な apt-cyg
スクリプト を使うことです。
Cygwinの設定の場所は変更され分割されているようです。今、あなたはどちらかが必要です
wget http://cygwin.com/setup-x86.exe
または
wget http://cygwin.com/setup-x86_64.exe
インストーラはコマンドラインからそれを許可します( 昇格されたShell 、お願いします):
setup-x86.exe --root c:\cygwin -q --upgrade-also
64ビット版の場合:
setup-x86_64.exe --root c:\cygwin -q --upgrade-also
詳細:
c:\cygwin
をCygWinのルートインストールディレクトリに置き換えます。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
または
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.- admin(管理者)としてc:\CygWin\bin\ash.exe
を開きます。
3. - /bin/rebaseall
を実行します。
私はこの必要性を少し前に感じました。以前はインストーラファイルをダウンロードしたままにしてインストールするだけでしたが、Cygwinが更新されるとインストーラファイルが古くなることがありました。自動昇格してインストーラをダウンロードし、無人アップグレードを実行するPowershellスクリプトを作成しました。私はそれを私のデスクトップに置いて、右クリックして "Run with 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")
無人アップグレード
https://cygwin.com/faq.html#faq.setup.cli
setup-x86.exe -q -g
意味:
Command Line Options:
-q --quiet-mode Unattended setup mode
-g --upgrade-also also upgrade installed packages
@ 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
以下の内容で "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