मैं कमांड लाइन से साइबरविन घटकों को कैसे स्थापित करूं?


178

क्या सिग्विन पैकेज में apt-getडेबियन yumपर या रेडहैट पर समान उपकरण है जो मुझे कमांड लाइन से घटकों को स्थापित करने की अनुमति देता है?


2
स्टैक ओवरफ्लो प्रोग्रामिंग और विकास के सवालों के लिए एक साइट है। यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद सुपर यूजर पूछने के लिए बेहतर जगह होगी। यह भी देखें कि मैं देव ऑप्स के बारे में प्रश्न कहां से पोस्ट करूं?
19/07 पर jww

7
@jww, यह डेप्स नहीं है।
पचेरियर

जवाबों:


102

विशेष रूप से 'setup.exe' इंस्टॉलर में कोई उपकरण नहीं है जो apt-get की कार्यक्षमता प्रदान करता है। हालांकि, साइगविन के लिए एक कमांड-लाइन पैकेज इंस्टॉलर है जिसे अलग से डाउनलोड किया जा सकता है, लेकिन यह पूरी तरह से स्थिर नहीं है और वर्कअराउंड पर निर्भर करता है।

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

ज्ञात समस्याओं को देखने के लिए प्रोजेक्ट के लिए समस्याएँ टैब देखें।


धन्यवाद! बस मैं वही जानना चाहता था। मुझे आश्चर्य है कि वे परिपक्व क्यों नहीं हैं?
v32 32

4
@ vy32: क्योंकि आपने उन्हें परिपक्व बनाने में मदद नहीं की? :) वे खुद नहीं लिख सकते। किसी को उन पर काम करना होगा। और चूंकि उनकी प्रयोज्यता काफी सीमित है (वर्तमान में विंडोज़ पर उपयोग में आने वाली फ़ाइलों को अधिलेखित करने के लिए आपको पहले साइग्विन को बंद करना होगा, इसलिए बंद साइगविन :) में किसी भी पैकेज मैनेजर को निष्पादित करना संभव नहीं है, बहुत से लोगों की दिलचस्पी नहीं है।
डेविड फेरेंस्की रोगोजान

10
एक और उत्तर से: setup-x86.exe -q -P packagename1,packagename2। के रूप में apt-getया यहाँ तक कि फैंसी के रूप में नहीं , apt-cygलेकिन यह ज्यादातर मामलों में चाल करता है। और आप इसे cmd.exe(सिग्विन को बंद करने के बाद) से भी चला सकते हैं ।
kqw

2
@ सचे, दाउद का जवाब है कि यह "ऋषि" में चला गया। stackoverflow.com/a/23143997/80772
eel ghEEz

3
चूंकि मूल परियोजना मर चुकी है, मैं सुझाव देता हूं कि इसे देखें (इस टिप्पणी के समय के अनुसार) सक्रिय कांटा: github.com/kou1okada/apt-cyg
व्लादिमीर पेंटेलेव

136

सिगविन का सेटअप कमांड-लाइन से पैकेज स्थापित करने के लिए कमांड-लाइन तर्क स्वीकार करता है ।

जैसे setup-x86.exe -q -P packagename1,packagename2किसी भी जीयूआई बातचीत ( 'पहुंच से बाहर सेटअप मोड') के बिना पैकेज इंस्टॉल करने।

(ध्यान दें कि आपको उपयुक्त setup-x86.exeया setup-x86_64.exeउपयुक्त उपयोग करने की आवश्यकता है ।)

पैकेज सूची के लिए http://cygwin.com/packages/ देखें ।


5
अच्छा! setup.exe को अब setup-x86.exe कहा जाता है - या सीपीयू बिट्स पर निर्भर करता है। पैकेज सूची के लिए यहां भी देखें cygwin.com/packages
ErichBSchulz

2
इसके अलावा, कई पैकेजों को निर्दिष्ट करने के लिए, उन्हें अल्पविराम से अलग करें। उदाहरण के लिए, डॉस में, टाइप करेंsetup-x86_64 --packages="openssh,python"
माइकल शेपर

वहाँ विशिष्ट संस्करणों की स्थापना का एक तरीका नहीं लगता है।
CMCDragonkai

@jturney, क्या यह स्थिर है?
पचेरियर

1
@ स्पेसर, यह स्पष्ट नहीं है कि आप क्या पूछ रहे हैं। यह सेटअप की एक विशेषता होनी चाहिए जिस पर भरोसा करना सुरक्षित हो।
jturney

134

अधिक सुविधाजनक इंस्टॉलर के लिए, आप apt-cygअपने पैकेज मैनेजर के रूप में उपयोग करना चाह सकते हैं । इसके सिंटैक्स के समान है apt-get, जो एक प्लस है। इसके लिए, उपरोक्त चरणों का पालन करें और फिर निम्न चरणों के लिए सिग्विन बैश का उपयोग करें

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 बिट विंडो के लिए स्पष्ट रूप से सेटअप-x86_64.exe -q -P wget, tar, qawk, bzip2, तोड़फोड़, वीआईएम का उपयोग करें।
अरुण

3
Wget कमांड में -no-check-certificate जोड़ने की आवश्यकता है। अन्यथा, शानदार।
एकुप्पी

और अब यह 404 है (कुछ पुनर्निर्देश के बाद)
छाया

बस की कोशिश की wgetऔर यह apt-cygसमस्याओं के बिना डाउनलोड करता है। 404 किस बिंदु पर दिखाई देता है?
सगुन

1
wg को साइबरविन के साथ डिफ़ॉल्ट रूप से स्थापित नहीं किया गया है, जिसका अर्थ है कि इसे मैन्युअल और गैर-प्रोग्रामेटिक इंस्टालेशन के साथ बूटस्ट्रैप किया जाना चाहिए।

51

कुछ स्क्रिप्ट मौजूद हैं, जिन्हें साइगविन के लिए सरल पैकेज प्रबंधकों के रूप में इस्तेमाल किया जा सकता है। लेकिन यह जानना महत्वपूर्ण है, कि वे हमेशा सीमित रहेंगे , क्योंकि ... ईएचएम ... विंडोज।

पैकेजों को स्थापित करना या हटाना ठीक है, सिगविन के लिए प्रत्येक पैकेज प्रबंधक ऐसा कर सकता है। लेकिन अपडेट करना एक दर्द है क्योंकि विंडोज आपको एक निष्पादन योग्य को अधिलेखित करने की अनुमति नहीं देता है, जो वर्तमान में चल रहा है। इसलिए आप उदाहरण के लिए Cygwin DLL या किसी भी पैकेज को अपडेट नहीं कर सकते हैं जिसमें वर्तमान में Cygwin से ही निष्पादन योग्य है। यह नोट सिगविन इंस्टालेशन पेज पर भी है:

"अधिक पूर्ण-विशेषताओं वाले पैकेज मैनेजर के न होने का मूल कारण यह है कि इस तरह के कार्यक्रम को साइगविन के पोसिक्स कार्यक्षमता के सभी लोगों तक पूर्ण पहुंच की आवश्यकता होगी। हालांकि, साइगविन-मुक्त वातावरण में प्रदान करना मुश्किल है, जैसे पहले मौजूद है। स्थापना। इसके अलावा, विंडोज आसानी से इन-यूज एक्जीक्यूटेबल्स की ओवरराइटिंग की अनुमति नहीं देता है, इसलिए सिग्विन डीएलएल का एक नया संस्करण स्थापित करना, जबकि एक पैकेज मैनेजर डीएलएल का उपयोग कर रहा है, समस्याग्रस्त है। "

साइगविन के सेटअप निष्पादनों को अधिलेखित करने के लिए विंडोज रजिस्ट्री का उपयोग करता है जो उपयोग में हैं और इस पद्धति के लिए विंडोज के रीबूट की आवश्यकता होती है । इसलिए, पैकेजों को अपडेट करने से पहले सभी Cygwin प्रक्रियाओं को बंद करना बेहतर है , इसलिए आपको परिवर्तनों को लागू करने के लिए अपने कंप्यूटर को रिबूट करने की आवश्यकता नहीं है। एक नए पैकेज की स्थापना पूरी तरह से बिना किसी बाधा के होनी चाहिए। मुझे नहीं लगता कि सिग्विन के किसी भी पैकेज के सिवाय setup.exeकिसी भी तरीके का उपयोग करने के लिए फाइल को ओवरराइट करने के लिए किसी भी विधि को लागू नहीं किया गया है, इसलिए यदि यह उन्हें अधिलेखित नहीं कर सकता तो यह बस विफल हो जाएगा।


Cygwin के लिए कुछ पैकेज मैनेजर:

apt-CYG

अपडेट : कॉपीराइट मुद्दों ( DMCA टेकडाउन ) के कारण हाल ही में भंडार को अक्षम कर दिया गया था । ऐसा लगता है कि रिपॉजिटरी के मालिक ने अपनी खुद की रिपॉजिटरी पर DMCA टेकडाउन जारी किया और Sage (bellow देखें) नामक एक नया प्रोजेक्ट बनाया ।

मेरे लिए सबसे अच्छा। केवल इसलिए कि यह सबसे हाल का है। यह साइगविन का उपयोग नहीं करता है setup.exe, यह फिर से लागू setup.exeकरता है , क्या करता है। यह दोनों प्लेटफार्मों के लिए सही ढंग से काम करता है - x86 और साथ ही x86_64 । अधिक या कम अतिरिक्त सुविधाओं के साथ बहुत सारे कांटे हैं। उदाहरण के लिए, kou1okada कांटा बेहतर संस्करणों में से एक है , जो वास्तव में बहुत अच्छा है।

apt-cyg सिर्फ एक शेल स्क्रिप्ट है, कोई इंस्टॉलेशन नहीं है। बस इसे डाउनलोड करें (या रिपॉजिटरी को क्लोन करें), इसे निष्पादन योग्य बनाएं और इसे पाथ में कहीं कॉपी करें:

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-उपयुक्त

परित्यक्त मूल का कांटा CYG-उपयुक्तसुधार और बगफिक्स के साथ। इसमें काफी विशेषताएं हैं और इसे पायथन में लागू किया गया है। स्थापना का उपयोग करके बनाया गया है make


चॉकलेट की साइग-गेट

यदि आपने Cygwin को स्थापित करने के लिए Chocolatey का उपयोग किया है, तो आप पैकेज cyg-get को स्थापित कर सकते हैं , जो वास्तव में CySwin केsetup.exe PowerShell में लिखे गए चारों ओर एक साधारण आवरण है ।


साइगविन का setup.exe

इसमें कमांड लाइन मोड भी है । इसके अलावा, यह आपको एक बार में सभी स्थापित पैकेजों को अपग्रेड करने की अनुमति देता है (जैसा apt-get upgradeकि डेबियन आधारित लिनक्स पर है)।

उदाहरण का उपयोग करें:

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पिछले एक साल या दो (स्टीवन पेनी) पर इसके सबसे सक्रिय योगदानकर्ताओं का कांटा है । ऐसा प्रतीत होता है कि इस वर्ष की शुरुआत में उन्होंने मूल apt-cygलेखक (स्टीफन जुंगल्स) के साथ कुछ असहमति जताई थी और जब उन्होंने परियोजना को रद्द कर दिया तो DMCA को जारी कर दिया। चूंकि जुंगल्स (उर्फ ट्रांसकोड) मौखिक रूप से परियोजना का मूल लेखक है, इसलिए GitHub ने मूल परियोजना को जल्द ही बहाल कर दिया। वर्तमान में, दोनों परियोजनाएं उपलब्ध हैं - हालांकि मूल परियोजना में विभाजन के बाद से कोई नया कोड अपडेट नहीं हुआ है। यह वास्तव में एक गन्दा स्थिति है।
एंथोनी जोगेगन

setup-x86_64.exe -q --packages = bash, vim। इस दृष्टिकोण ने मुझे अतीत में मदद की है। बस इसे कमांड लाइन से चलाएं और यह आसानी से काम करता है।
TheWalkingData

9

सबसे पहले, इंस्टॉलर को यहां डाउनलोड करें : https://cygwin.com/setup-x86_64.exe (विंडोज 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

मैं इस के समान एक विधि का उपयोग कर रहा हूं और यह मेरे लिए वास्तव में अच्छी तरह से काम कर रहा है, जिससे आप उन पैकेजों के नाम जान सकते हैं जिन्हें आप
हैंडहैंड

बहुत ही सरल उपाय। सिर्फ उर्फ ​​को .bashrc
Ach J

4

मैं इसके लिए एक समाधान चाहता था apt-get --print-uris, लेकिन दुर्भाग्य से apt-cyg ऐसा नहीं करता है। निम्नलिखित एक समाधान है जिसने मुझे केवल उन पैकेजों को डाउनलोड करने की अनुमति दी है जिनकी मुझे ज़रूरत थी, उनकी निर्भरता के साथ, और उन्हें स्थापना के लिए लक्ष्य पर कॉपी करें। यहाँ एक bash स्क्रिप्ट है जो apt-cygURI की सूची में आउटपुट को पार्स करता है:

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

इंस्टॉलर को फिर स्थानीय कैश निर्देशिका से स्थापित करने के लिए उपयोग किया जा सकता है। ध्यान दें कि इस काम के लिए मुझे setup.iniडाउनलोड की गई फ़ाइलों के साथ निर्देशिका में पिछले cygwin पैकेज कैश से कॉपी करने की आवश्यकता थी (अन्यथा इंस्टॉलर को पता नहीं है कि क्या है)।


4

पुराना सवाल है, लेकिन अभी भी प्रासंगिक है। यहाँ मेरे लिए आज (6/26/16) काम किया गया है।

बैश शेल से:

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

1
wgetया curlशायद इसके लिए एक बेहतर उपकरण है। (और व्यक्तिगत रूप से, मैं इसे अपने $PATHबजाय किसी अन्य निर्देशिका में स्थापित करूंगा /bin।)
कीथ थॉम्पसन

3

दाविद फ़ेरेन्स्की का जवाब बहुत अच्छा है, लेकिन मैंने उनके लगभग सभी विकल्पों को आज़माने के बाद पाया है कि चॉकलेटरी का साइबर-गेट सबसे अच्छा था (कम से कम केवल एक ही जो मुझे काम करने के लिए मिल सकता था)।

मैं स्थापित करना चाहता था 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>>"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.