コマンドラインからcygwinコンポーネントをインストールするにはどうすればよいですか?


178

コマンドラインからコンポーネントをインストールできるapt-get、Debianまたはyumredhatと同様のCygwinパッケージにツールはありますか?


2
Stack Overflowは、プログラミングと開発に関する質問のためのサイトです。この質問はプログラミングや開発に関するものではないため、トピックから外れているようです。ヘルプセンターのここ質問できるトピックを参照してください。おそらく、スーパーユーザーの方が良いでしょう。また、Dev Opsに関する質問
jww

7
@jww、これはデボップではありません。
パセリエ2017年

回答:


102

「setup.exe」インストーラには、apt-getの機能を提供するツールはありません。ただし、個別にダウンロードできるCygwinのコマンドラインパッケージインストーラーがありますが、完全に安定しているわけではなく、回避策に依存しています。

apt-cyg:http ://github.com/transcode-open/apt-cyg

プロジェクトの「問題」タブをチェックして、既知の問題を確認してください。


ありがとう!私が知りたかったことだけ。なぜ成熟していないのかしら?
vy32

4
@ vy32:あなたがそれらを成熟させるのを助けなかったので?:)彼らは自分自身を書くことはできません。誰かがそれらに取り組む必要があります。また、その使いやすさは非常に限られているため(Windowsで現在使用中のファイルを上書きするには、最初にCygwinを閉じる必要があるため、閉じたCygwinでパッケージマネージャーを実行することはできません)、関心のある人は多くありません。
David FerenczyRogožan2014

10
別の答えから:setup-x86.exe -q -P packagename1,packagename2。ない空想のようにapt-get、あるいはapt-cygそれは、ほとんどの場合、トリックを行います。cmd.exe(Cygwinを閉じた後)からこれを実行することもできます。
kqw

2
@Steve、Dawidの答えは、それが「賢者」に移行したと言っています。 stackoverflow.com/a/23143997/80772
eel ghEEz

3
元のプロジェクトが死んでいるので、(このコメントの時点で)これを確認することをお勧めします:github.com/kou1okada/apt-cyg
Vladimir Panteleev

136

Cygwinのセットアップは、コマンドライン引数を受け入れ、コマンドラインからパッケージをインストールします。

たとえばsetup-x86.exe -q -P packagename1,packagename2、GUIの対話なしでパッケージをインストールする場合(「無人セットアップモード」)。

setup-x86.exeまたはを使用する必要があることに注意してくださいsetup-x86_64.exe。)

パッケージリストについては、http://cygwin.com/packages/を参照してください


5
いいね!setup.exeは現在、setup-x86.exeまたはCPUビットに応じたバリアントと呼ばれています。パッケージリストについては、こちらもご覧くださいcygwin.com/packages
ErichBSchulz 2014年

2
また、複数のパッケージを指定するには、パッケージをコンマで区切ります。例:DOSでは、次のように入力しますsetup-x86_64 --packages="openssh,python"
Michael Scheper '19年

特定のバージョンを設定する方法がないようです。
CMCDragonkai 2016年

@jturney、これは安定していますか?
パセリエ2017年

1
@Pacerier、あなたが何を求めているのかは不明です。これは、信頼できる安全なセットアップ機能です。
jturney 2017年

134

より便利なインストーラーの場合は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

17
64ビットウィンドウの場合は、setup-x86_64.exe -q -P wget、tar、qawk、bzip2、subversion、vimを使用してください。
アルン

3
wgetコマンドに--no-check-certificateを追加する必要があります。そうでなければ、素晴らしい。
akauppi 2014年

そして今、それは404です(いくつかのリダイレクトの後)
シャドウ14

試したところwgetapt-cyg問題なくダウンロードされました。404はどの時点で表示されますか?
sagunms 2014

1
wgetは、デフォルトではcygwinでインストールされません。つまり、これは手動の非プログラムインストールでブートストラップする必要があります。

51

Cygwinの単純なパッケージマネージャーとして使用できるスクリプトがいくつかあります。しかし、知っていることは重要です。なぜなら、...ええと... Windowsのため、それらは常に非常に制限されることです。

パッケージのインストールまたは削除は問題ありません。Cygwinの各パッケージマネージャーがそれを実行できます。しかし、Windowsでは現在実行中の実行可能ファイルを上書きできないため、更新は面倒です。したがって、Cygwin DLLや、Cygwin自体から現在実行中の実行可能ファイルを含むパッケージを更新することはできません。Cygwinのインストールページにもこのメモがあります。

「よりフル機能のパッケージマネージャーがない理由は、そのようなプログラムがCygwinのすべてのPOSIX機能へのフルアクセスを必要とするためです。ただし、最初に存在するようなCygwinフリー環境で提供することは困難です。さらに、Windowsは使用中の実行可能ファイルの上書きを簡単に許可しないため、パッケージマネージャーがDLLを使用しているときに新しいバージョンのCygwin DLLをインストールすると問題が発生します。」

Cygwinのセットアップでは、Windowsレジストリを使用して、使用中の実行可能ファイルを上書きします。この方法では、Windowsを再起動する必要があります。したがって、パッケージを更新する前にすべてのCygwinプロセス閉じることをお勧めします。これにより、変更を実際に適用するためにコンピューターを再起動する必要がなくなります。新しいパッケージのインストールは、まったく手間がかからないはずです。Cygwinのsetup.exe実装以外のパッケージマネージャーは、使用中のファイルを上書きするメソッドを実装していないと思います。ファイルを上書きできない場合は、失敗するだけです。


Cygwin用のいくつかのパッケージマネージャー:

apt-cyg

更新:著作権の問題のため、最近リポジトリが無効になりました(DMCA削除)。それはのように見える、リポジトリの所有者が上DMCAテイクダウンを発行した彼自身のリポジトリと呼ばれる新しいプロジェクトを作成セージを(怒鳴る参照します)。

私にとって最高のもの。それは最新のものの1つだからです。これはCygwinのを使用せずsetup.exe、何をsetup.exe行うかを再実装しています。x86およびx86_64の両方のプラットフォームで正しく動作します。多かれ少なかれ追加の機能を持つ多くのフォークがあります。たとえば、kou1okadaフォークは改善されたバージョンの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

捨てられたオリジナルのフォーク cyg-apt改善とバグ修正。かなり多くの機能があり、Pythonで実装されています。インストールはを使用して行われmakeます。


Chocolatey's cyg-get

Chocolateyを使用してCygwinをインストールした場合は、パッケージcyg-getをインストールできます。これは、実際にsetup.exeはPowerShellで記述されたCygwinの単純なラッパーです。


Cygwinのsetup.exe

コマンドラインモードもあります。さらに、インストールされているすべてのパッケージを一度アップグレードできます(apt-get upgradeDebianベースのLinuxの場合と同様)。

使用例:

setup-x86_64.exe -q --packages=bash,vim

使いやすいエイリアスを作成できます。次に例を示します。

alias cyg-get="/cygdrive/d/path/to/cygwin/setup-x86_64.exe -q -P"

次に、たとえば、次のコマンドでVimパッケージをインストールできます。

cyg-get vim


3
sageapt-cyg過去1〜2年で最もアクティブな貢献者(Steven Penny)によるフォークです。今年の初め、彼は元のapt-cyg作者(Stephen Jungels)と意見の相違があり、プロジェクトを分岐したときにDMCA削除通知を発行したようです。Jungels(別名Transcode)がプロジェクトの原作者であることは確かなので、GitHubはすぐに元のプロジェクトを復元しました。現在、両方のプロジェクトが利用可能です。ただし、元のプロジェクトは分割以降、新しいコードの更新はありません。本当に厄介な状況です。
Anthony Geoghegan

setup-x86_64.exe -q --packages = bash、vim。このアプローチは、過去に私を助けてきました。コマンドラインから実行するだけでスムーズに動作します。
TheWalkingData 2017年

9

最初に、https//cygwin.com/setup-x86_64.exe(Windows 64ビット)でインストーラーをダウンロードしてから、次の手順を実行します。

# 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

私はこれと非常によく似た方法を使用していますが、インストールするパッケージの名前を事前に知っていれば、それは私にとって非常にうまく機能します;-)
GaryDoubléFeb

非常にシンプルなソリューション。エイリアスを.bashrcに追加しました
Ach J

4

私はこれと同様の解決策を求めていましたapt-get --print-urisが、残念ながらapt-cygはこれを行いません。以下は、必要なパッケージとその依存関係のみをダウンロードして、ターゲットにコピーしてインストールできるようにするソリューションです。次に、出力を解析してapt-cygURIのリストを作成する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-listwgetを使用しました。

mirror=http://cygwin.mirror.constant.com/
uris=$(for line in $(cat cygwin-packages-list); do echo "$mirror$line"; done)
wget -x $uris

その後、インストーラーを使用して、ローカルキャッシュディレクトリからインストールできます。これが機能するためにsetup.iniは、以前のcygwinパッケージキャッシュからダウンロードしたファイルのあるディレクトリにコピーする必要があったことに注意してください(そうしないと、インストーラーは何が何であるかわかりません)。


4

古い質問ですが、まだ関連があります。今日(16/16/26)、私にとってはうまくいきました。

bashシェルから:

lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
install apt-cyg /bin

1
wgetまたはcurlおそらくこれのためのより良いツールです。(そして個人的には、$PATHではなく自分の別のディレクトリにインストールし/binます。)
Keith Thompson

3

Dawid Ferenczyの答えはかなり完全ですが、彼のほとんどすべてのオプションを試した後、Chocolateyのcyg-getが最良であることがわかりました(少なくとも、私が作業できる唯一のもの)。

インストールしたかっwgetたのですが、手順は次のとおりです。

choco install cyg-get

次に:

cyg-get wget

1

通常、パッケージをインストールする前に、正確な名前を知る必要があります。

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