Cygwin paketinde apt-get
Debian veya yum
redhat üzerinde benzer şekilde komut satırından bileşenler yüklememe izin veren bir araç var mı ?
Cygwin paketinde apt-get
Debian veya yum
redhat üzerinde benzer şekilde komut satırından bileşenler yüklememe izin veren bir araç var mı ?
Yanıtlar:
Ö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.
setup-x86.exe -q -P packagename1,packagename2
. Değil fantezi gibi apt-get
hatta apt-cyg
ama çoğu durumda hile yok. Ve bunu cmd.exe
(Cygwin'i kapattıktan sonra) da çalıştırabilirsiniz .
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,packagename2
GUI etkileşimi olmadan paketleri kurmak ('katılımsız kurulum modu').
(Kullanmanız gerektiği şekilde setup-x86.exe
veya gerektiği setup-x86_64.exe
gibi olduğunu unutmayın .)
Paket listesi için http://cygwin.com/packages/ adresine bakın .
setup-x86_64 --packages="openssh,python"
Daha uygun bir yükleyici apt-cyg
iç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-cyg
yüklü. Bazı paketlerin kurulumuna ilişkin birkaç örnek
apt-cyg install nano
apt-cyg install git
apt-cyg install ca-certificates
wget
ve apt-cyg
sorunsuz indirir . 404 hangi noktada ortaya çıkıyor?
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.exe
kullanı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.
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.exe
yaparsa 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 .
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.
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
.
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 .
Ayrıca bir komut satırı modu vardır . Ayrıca, yüklü tüm paketleri bir kerede yükseltmenize izin verir ( apt-get upgrade
Debian 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
sage
apt-cyg
geç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-cyg
yazarla (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.
İ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 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-cyg
bir 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-list
ve 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.ini
iç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).
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
wget
ya curl
da muhtemelen bunun için daha iyi bir araçtır. (Ve kişisel olarak, $PATH
yerine benim başka bir dizine /bin
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
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>>"