Cygwinパッケージには、Debianのapt-get
やredのyum
のようなコマンドラインからコンポーネントをインストールするためのツールがありますか?
Apt-getの機能を提供する 'setup.exe'インストーラには特にツールはありません。ただし、Cygwin用のコマンドラインパッケージインストーラは別にダウンロードできますが、完全に安定しているわけではなく、回避策に依存しています。
apt-cyg: http://github.com/transcode-open/apt-cyg
プロジェクトの問題タブをチェックして、既知の問題を確認してください。
より便利なインストーラのために、あなたはあなたのパッケージマネージャとしてapt-cyg
を使いたいかもしれません。その構文はプラスであるapt-get
に似ています。これを行うには、上記の手順に従ってから、Cygwin Bashを使用して以下の手順に従ってください。
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
apt-cyg
がインストールされました。ここにいくつかのパッケージをインストールするいくつかの例があります
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
Cygwinの設定は コマンドライン引数 を受け付け、コマンドラインからパッケージをインストールします。
例えばGUIを介さずにパッケージをインストールするためのsetup-x86.exe -q -P packagename1,packagename2
(「無人セットアップモード」)。
(必要に応じてsetup-x86.exe
またはsetup-x86_64.exe
を使用する必要があることに注意してください。)
パッケージリストについては http://cygwin.com/packages/ を参照してください。
Cygwin用の単純なパッケージマネージャとして使用できるスクリプトがいくつかあります。しかし、...ええと... Windowsのせいで、それらは常に非常に制限付きになることを知っておくことは重要です。
パッケージのインストールや削除は問題ありません、Cygwinの各パッケージマネージャがそれを行うことができます。しかし、Windowsでは現在実行中の実行可能ファイルを上書きできないため、更新は面倒です。ですから、更新することはできません。 Cygwin DLL、またはCygwin自体から現在実行中の実行可能ファイルを含むパッケージ。 Cygwinインストール ページにもこのメモがあります。
「よりフル機能のパッケージマネージャを持たないことの基本的な理由は、そのようなプログラムがCygwinのPOSIX機能のすべてにフルアクセスする必要があることです。しかし、Cygwinを含まない環境で提供するのは難しいです。さらに、Windowsは使用中の実行ファイルの上書きを容易に許可していないので、パッケージマネージャがDLLを使用している間に新しいバージョンのCygwin DLLをインストールするのは問題があります。」
CygwinのセットアップはWindowsレジストリを使用して実行中の実行可能ファイルを上書きし、この方法で{Windowsの再起動が必要を実行します。そのため、パッケージを更新する前にすべてのCygwinプロセスを閉じるをお勧めします。したがって、実際に変更を適用するためにコンピュータを再起動する必要はありません。新しいパッケージのインストールは面倒なことが全くないはずです。 Cygwinのsetup.exe
以外のパッケージマネージャが、使用中のファイルを上書きする方法を実装しているとは思わないので、上書きできなければ失敗するだけです。
更新:リポジトリは著作権の問題で最近無効にされています( DMCA削除 )。それは のように見える リポジトリの所有者は 彼自身の リポジトリにDMCA削除を発行し、 Sage という新しいプロジェクトを作成しました(下記参照)。
私にとって最高のもの。それは最新のものだからです。 Cygwinのsetup.exe
を使用するのではなく、むしろsetup.exe
が実行することを再実装します。両方のプラットフォーム - x86 と x86_64 の両方で正しく動作します。多かれ少なかれ追加機能を持つフォークがたくさんあります。たとえば、kou1okada fork は改善されたバージョンの1つです。これは非常に優れています。
apt-cyg は単なるシェルスクリプトです。インストールは行われません。それをダウンロードする(あるいはリポジトリのクローンを作成する)だけで、実行可能にしてPATHのどこかにコピーするだけです。
chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim
さまざまな機能を備えた たくさんのフォーク もあります。
シェルスクリプトとして実装された別のパッケージマネージャ。私は試していませんでしたが、実際は良さそうです。
リポジトリ内のパッケージの検索、カテゴリ内のパッケージの一覧表示、依存関係のチェック、パッケージファイルの一覧表示などを実行できます。他のパッケージマネージャにはない機能があります。
放棄されたオリジナルのフォーク cyg-apt 改良とバグ修正。それは非常に多くの機能を持っており、それはPythonで実装されています。インストールはmake
を使用して行われます。
CygwinをインストールするためにChocolateyを使用した場合は、パッケージ cyg-get をインストールできます。これは、実際にはPowerShellで書かれたCygwinのsetup.exe
を囲む単純なラッパーです。
また、 コマンドラインモード もあります。さらに、({apt-get upgrade
}がDebianベースのLinuxの場合と同じように)すべてのインストール済みパッケージを一度にアップグレード _することができます。
使用例
setup-x86_64.exe -q --packages=bash,vim
簡単に使用できるようにエイリアスを作成できます。たとえば、
alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"
そうすると、例えば Vim packageと一緒にインストールすることができます。
cyg-get vim
まず、インストーラをダウンロードします。 https://cygwin.com/setup-x86_64.exe (Windows 64bit)、それから:
# move installer to cygwin folder
mv C:/Users/<you>/Downloads/setup-x86_64.exe C:/cygwin64/
# add alias to bash_aliases
echo "alias cygwin='C:/cygwin64/setup-x86_64.exe -q -P'" >> ~/.bash_aliases
source ~/.bash_aliases
# add bash_aliases to bashrc if missing
echo "source ~/.bash_aliases" >> ~/.profile
例えば.
# install vim
cygwin vim
# see other options
cygwin --help
古い質問ですが、それでも関連性があります。これが今日私のために働いていたものです(6/26/16)。
Bashシェルから:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin
私はapt-get --print-uris
のようなこれに対する解決策を望みました、しかし残念ながらapt-cygはこれをしません。以下は私が必要としているパッケージのみをそれらの依存関係と共にダウンロードし、それらをインストールのためにターゲットにコピーすることを可能にする解決策です。これはapt-cyg
の出力をURIのリストに解析するbashスクリプトです。
#!/usr/bin/bash
package=$1
depends=$( \
apt-cyg depends $package \
| Perl -ne 'while ($x = /> ([^>\s]+)/g) { print "$1\n"; }' \
| sort \
| uniq)
depends=$(echo -e "$depends\n$package")
for curpkg in $depends; do
if ! grep -q "^$curpkg " /etc/setup/installed.db; then
apt-cyg show $curpkg \
| Perl -ne '
if ($x = /install: ([^\s]+)/) {
print "$1\n";
}
if (/\[prev\]/) {
exit;
}'
fi
done
上記は、cygwinミラールートを基準にして、ダウンロードが必要なパッケージのパスを表示します。すでにインストールされているパッケージは省略されます。それらをダウンロードするために、私は出力をファイルcygwin-packages-list
に書き、それからwgetを使いました。
mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris
その後、インストーラを使ってローカルキャッシュディレクトリからインストールすることができます。これがうまくいくためには、私は以前のcygwinパッケージのキャッシュからsetup.ini
をダウンロードしたファイルがあるディレクトリにコピーする必要がありました(そうでなければインストーラは何が何なのかわかりません)。
Dawid Ferenczyの答えは非常に完成していますが、ほとんどすべてのオプションを試したところ、 Chocolateyのcyg-get が最良であることがわかりました(少なくとも私が仕事に就ける唯一の選択肢)。
wget
をインストールしたいのですが、手順は次のとおりです。
choco install cyg-get
その後:
cyg-get wget
通常、パッケージをインストールする前に、正確な名前を知っておく必要があります。
# define a string to search
export to_srch=Perl
# get html output of search and pick only the cygwin package names
wget -qO- "https://cygwin.com/cgi-bin2/package-grep.cgi?grep=$to_srch&Arch=x86_64" | \
Perl -l -ne 'm!(.*?)<\/a>\s+\-(.*?)\:(.*?)<\/li>!;print $2'
# and install
# install multiple packages at once, note the
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com -P "<<chosen_package_name>>"