Cygwin bileşenlerini komut satırından nasıl yüklerim?


178

Cygwin paketinde apt-getDebian veya yumredhat üzerinde benzer şekilde komut satırından bileşenler yüklememe izin veren bir araç var mı ?


2
Stack Overflow, programlama ve geliştirme soruları için bir sitedir. Bu soru konu dışı gibi görünüyor çünkü programlama veya geliştirme ile ilgili değil. Yardım Merkezi'nde hangi konular hakkında soru sorabilirim konusuna bakın . Belki Süper Kullanıcı sormak için daha iyi bir yer olurdu. Ayrıca bkz. Dev Ops ile ilgili soruları nereye gönderebilirim?
jww

7
@jww, Bu adanmışlar değil.
Pacerier

Yanıtlar:


102

Özellikle 'setup.exe' yükleyicisinde apt-get işlevini sunan bir araç yoktur. Bununla birlikte, Cygwin için ayrı olarak indirilebilen bir komut satırı paket yükleyicisi vardır, ancak tamamen kararlı değildir ve geçici çözümlere dayanmaktadır.

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

Bilinen sorunları görmek için projenin sorunlar sekmesine bakın.


Teşekkürler! Tam bilmek istediklerim. Acaba neden olgunlaşmıyorlar?
vy32

4
@ vy32: onları olgunlaştırmaya yardım etmedin mi? :) Kendilerini yazamazlar. Birisi onlar üzerinde çalışmalı. Kullanılabilirlikleri oldukça sınırlı olduğundan (şu anda Windows'ta kullanılmakta olan dosyaların üzerine yazmak için önce Cygwin'i kapatmanız gerekir, bu nedenle kapalı Cygwin'de herhangi bir paket yöneticisini yürütmek mümkün değildir :), ilgilenen birçok kişi yoktur.
David Ferenczy Rogožan

10
Başka bir cevap Gönderen: setup-x86.exe -q -P packagename1,packagename2. Değil fantezi gibi apt-gethatta apt-cygama çoğu durumda hile yok. Ve bunu cmd.exe(Cygwin'i kapattıktan sonra) da çalıştırabilirsiniz .
kqw

2
@Steve, Dawid'in cevabı “adaçayı” na geçtiğini söylüyor. stackoverflow.com/a/23143997/80772
eel ghEEz

3
Orijinal proje öldüğünden, bu (bu yorumun zamanı itibariyle) aktif çatala bakmanızı öneririm
Vladimir Panteleev

136

Cygwin'in kurulumu paketleri komut satırından yüklemek için komut satırı argümanlarını kabul eder .

örneğin setup-x86.exe -q -P packagename1,packagename2GUI etkileşimi olmadan paketleri kurmak ('katılımsız kurulum modu').

(Kullanmanız gerektiği şekilde setup-x86.exeveya gerektiği setup-x86_64.exegibi olduğunu unutmayın .)

Paket listesi için http://cygwin.com/packages/ adresine bakın .


5
Güzel! setup.exe artık setup-x86.exe olarak adlandırılıyor - veya işlemci bitlerine bağlı olarak bir değişken. Ayrıca paket listesi için buraya bakınız cygwin.com/packages
ErichBSchulz

2
Ayrıca, birden çok paket belirtmek için virgülle ayırın. ör. DOS'ta, yazınsetup-x86_64 --packages="openssh,python"
Michael Scheper

Belirli sürümleri kurmanın bir yolu yok gibi görünüyor.
CMCDragonkai

@jturney, Bu istikrarlı mı?
Pacerier

1
@ Pacer, Ne istediğini belli değil. Bu, güvenebileceğiniz bir kurulum özelliği olmalıdır.
jturney

134

Daha uygun bir yükleyici apt-cygiçin paket yöneticiniz olarak kullanmak isteyebilirsiniz . Onun sözdizimi benzer apt-get, bu bir artı. Bunun için yukarıdaki adımları izleyin ve ardından aşağıdaki adımlar için Cygwin Bash kullanın

wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin

Şimdi apt-cygyüklü. Bazı paketlerin kurulumuna ilişkin birkaç örnek

apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates

17
Açıkçası 64-bit pencereler için setup-x86_64.exe -q -P wget, tar, qawk, bzip2, subversion, vim kullanın.
Arun

3
Wget komutuna --no-check-certificate eklemek gerekiyor. Aksi takdirde mükemmel.
akauppi

Ve şimdi bir 404 (birkaç yönlendirmeden sonra)
Shadow

Sadece denedim wgetve apt-cygsorunsuz indirir . 404 hangi noktada ortaya çıkıyor?
sagunms

1
wget, cygwin ile varsayılan olarak yüklenmez, yani bunun manuel ve programlı olmayan bir kurulumla önyüklenmesi gerekir.

51

Cygwin için basit paket yöneticileri olarak kullanılabilen bazı komut dosyaları vardır. Ama bilmek önemlidir , çünkü ... ehm ... Windows yüzünden her zaman oldukça sınırlı olacaklar .

Paketleri kurmak veya kaldırmak iyidir, Cygwin için her paket yöneticisi bunu yapabilir. Ancak Windows, şu anda çalışan bir yürütülebilir dosyanın üzerine yazmanıza izin vermediğinden güncelleme bir acıdır. Bu nedenle, örneğin Cygwin DLL dosyasını veya şu anda çalışan yürütülebilir dosyayı içeren herhangi bir paketi Cygwin'in kendisinden güncelleyemezsiniz. Cygwin Kurulum sayfasında da bu not bulunmaktadır :

"Daha tam özellikli bir paket yöneticisine sahip olmamanın temel nedeni, bu tür bir programın Cygwin'in tüm POSIX işlevlerine tam erişime ihtiyaç duymasıdır. Ayrıca, Windows kullanımdaki yürütülebilir dosyaların üzerine yazılmasına kolayca izin vermiyor, bu nedenle bir paket yöneticisi DLL'yi kullanırken Cygwin DLL dosyasının yeni bir sürümünü yüklemek sorunlu. "

Cygwin'in kurulumu, kullanımda olan yürütülebilir dosyaların üzerine yazmak için Windows kayıt defterini kullanır ve bu yöntem Windows'un yeniden başlatılmasını gerektirir . Bu nedenle, paketleri güncellemeden önce tüm Cygwin işlemlerini kapatmak daha iyidir, bu nedenle değişiklikleri gerçekten uygulamak için bilgisayarınızı yeniden başlatmanız gerekmez. Yeni bir paketin kurulumu tamamen sorunsuz olmalıdır. Cygwin'in setup.exekullanımda olan dosyaların üzerine yazmak için herhangi bir yöntem uyguladığı dışında paket yöneticilerinin hiçbirini düşünmüyorum , bu yüzden bunların üzerine yazamazsa başarısız olur.


Cygwin için bazı paket yöneticileri:

apt-Cyg

Güncelleme : depo son zamanlarda telif hakkı sorunları ( DMCA yayından kaldırma ) nedeniyle devre dışı bırakıldı . Bu gibi görünen havuzun sahibinin üzerine DMCA yayından kaldırma bildirip kendi adında yeni bir proje depo ve oluşturulan Adaçayı (aşağıya bakın).

Benim için en iyisi. Çünkü en yenilerinden biri. Cygwin'leri kullanmaz setup.exe, ne setup.exeyaparsa onu tekrar uygular . Her iki platform için de doğru çalışır - x86 ve x86_64 . Az ya da çok ek özelliklere sahip çok sayıda çatal var. Örneğin, kou1okada çatal , gerçekten harika olan geliştirilmiş versiyonlardan biridir .

apt-cyg sadece bir kabuk betiğidir, kurulum yoktur. Sadece indirin (veya havuzu klonlayın), yürütülebilir yapın ve PATH'ye bir yere kopyalayın:

chmod +x apt-cyg # set executable bit
mv apt-cyg /usr/local/bin # move somewhere to PATH
# ...and use it:
apt-cyg install vim

Farklı özelliklere sahip çatallar da vardır .


adaçayı

Kabuk betiği olarak uygulanan başka bir paket yöneticisi. Denemedim ama aslında iyi görünüyor.

Bir depodaki paketleri arayabilir, bir kategorideki paketleri listeleyebilir, bağımlılıkları kontrol edebilir, paket dosyalarını listeleyebilir ve daha fazlasını yapabilir. Diğer paket yöneticilerinin sahip olmadığı özelliklere sahiptir.


Cyg-apt

Terk edilmiş orijinal çatal Cyg-aptiyileştirmeler ve hata düzeltmeleri ile. Oldukça fazla özelliği var ve Python'da uygulandı. Kurulum kullanılarak yapılır make.


Chocolatey'nin cyg-get'i

Cygwin'i yüklemek için Chocolatey kullandıysanız, Cygwin'insetup.exe PowerShell'de yazılmış basit bir paketleyici olan cyg-get paketini yükleyebilirsiniz .


Cygwin's setup.exe

Ayrıca bir komut satırı modu vardır . Ayrıca, yüklü tüm paketleri bir kerede yükseltmenize izin verir ( apt-get upgradeDebian tabanlı Linux'ta olduğu gibi).

Örnek kullanım:

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

Daha kolay kullanım için bir takma ad oluşturabilirsiniz, örneğin:

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

Ardından, örneğin Vim paketini aşağıdakilerle kurabilirsiniz:

cyg-get vim


3
sageapt-cyggeçen bir ya da iki yıl içinde en aktif katkıda bulunanların çatallarıdır (Steven Penny). Bu yılın başlarında orijinal apt-cygyazarla (Stephen Jungels) bir anlaşmazlık yaşadığı ve projeyi çatalladığında DMCA yayından kaldırma işlemini yayınladığı anlaşılıyor . Jungels (diğer adıyla Transcode) projenin orijinal yazarı olduğu için GitHub kısa bir süre sonra orijinal projeyi geri yükledi. Şu anda, her iki proje de mevcut - ancak orijinal projenin bölünmeden bu yana yeni bir kod güncellemesi olmadı. Gerçekten dağınık bir durum.
Anthony Geoghegan

setup-x86_64.exe -q --packages = bash, vim. Bu yaklaşım geçmişte bana yardımcı oldu. Sadece komut satırından çalıştırın ve sorunsuz çalışıyor.
TheWalkingData

9

İlk olarak yükleyiciyi şuradan indirin: adresten https://cygwin.com/setup-x86_64.exe (Windows 64bit), ardından:

# 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

Örneğin

# install vim
cygwin vim

# see other options
cygwin --help

Buna çok benzer bir yöntem kullanıyorum ve benim için gerçekten iyi çalışıyor, önceden yüklemek istediğiniz paketlerin adlarını bilmenizi sağlar ;-)
Gary Doublé

çok basit bir çözüm. sadece takma adı .bashrc'ye ekledi
Ach J

4

Buna benzer bir çözüm istedim apt-get --print-uris, ama ne yazık ki apt-cyg bunu yapmıyor. Aşağıdakiler, bağımlılıklarıyla yalnızca ihtiyacım olan paketleri indirmeme ve kurulum için hedefe kopyalamamı sağlayan bir çözümdür. Çıktısını apt-cygbir URI listesine ayıran bir bash betiği :

#!/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

Yukarıdaki, cygwin ayna köküne göre indirilmesi gereken paketlerin yollarını yazdırır ve önceden yüklenmiş olan paketleri atlar. Bunları indirmek için çıktıyı bir dosyaya yazdım cygwin-packages-listve wget kullandım:

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

Yükleyici daha sonra yerel bir önbellek dizininden yüklemek için kullanılabilir. Bunun çalışması setup.iniiçin önceki bir cygwin paket önbelleğinden indirilen dosyaları içeren dizine kopyalamam gerektiğini unutmayın (aksi takdirde yükleyici ne olduğunu bilmez).


4

Eski soru, ama yine de alakalı. Bugün benim için işe yarayan şey (26.06.2016).

Bash kabuğundan:

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

1
wgetya curlda muhtemelen bunun için daha iyi bir araçtır. (Ve kişisel olarak, $PATHyerine benim başka bir dizine /bin
Keith Thompson

3

Dawid Ferenczy'nin cevabı oldukça eksiksiz ancak neredeyse tüm seçeneklerini denedikten sonra Chocolatey'nin cyg-get'inin en azından olduğunu gördüm (en azından çalışabildiğim tek kişi).

Yüklemek istiyordum wget, adımlar şuydu:

choco install cyg-get

Sonra:

cyg-get wget

1

Genellikle bir paketi kurmadan önce tam adını bilmek gerekir:

# 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>>"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.