Apt-get से आने वाले किसी व्यक्ति के लिए bash स्क्रिप्ट में zypper का उपयोग कैसे करें?


12

मेरे पास apt-get से लेकर zypper तक bash script में जाने के बारे में कुछ प्रश्न हैं।

इसके बराबर क्या है?

sudo apt-get install curl --assume-yes

(जहां कर्ल कोई भी पैकेज हो सकता है)

मैं Zypper धोखा शीट मिला - openSUSE । बहुत अच्छा! लेकिन मैं यहां अनुभव की आवाज की सराहना करूंगा - एक स्क्रिप्ट में ज़ीपर का उपयोग करने का सही तरीका क्या है जहां मैं सभी संकेतों से सहमत होना चाहता हूं और उन चीजों को नहीं छोड़ना चाहिए जिन्हें प्रतिक्रिया की आवश्यकता है?

अपनी अनुभवहीनता के साथ मैं उपयोग करने के लिए लुभाऊंगा:

sudo zypper --non-interactive --no-gpg-checks --quiet install --auto-agree-with-licenses curl

लेकिन क्या वास्तव में इसके बराबर है --assume-yes?

इन के बराबर क्या है?

sudo apt-get autoremove -y
sudo apt-get autoclean -y

यह पता चलता है कि वहाँ एक नहीं है ...

क्या गेडेबी-कोर का प्रतिस्थापन है? या क्या जिदबी को ज़ीपर के "शक्तिशाली संतोषजनकता सॉल्वर" के साथ की आवश्यकता नहीं है? मैं उन स्थितियों के लिए gdebi का उपयोग करता हूं जहां मुझे एक पुराने संस्करण पर एक पैकेज स्थापित करने की आवश्यकता होती है और मेरे पास एक .deb फ़ाइल पहले से ही है (लेकिन सभी निर्भरता नहीं है)।

जवाबों:


10

सामान्य तौर पर, आपको शंकु का उपयोग करना चाहिए --non-interactive, शॉर्टकट में -n, जब जिपर गैर-अंतःक्रियात्मक रूप से चल रहा हो:

zypper -n install curl

यह किसी से आने के लिए भ्रामक लग सकता है apt-get install -y curl। कुछ zypper उप आदेशों भी एक आदेश-विशिष्ट समर्थन -y/ --no-confirmके लिए एक उपनाम के रूप विकल्प -n/ --non-interactiveहै, लेकिन सभी उप-आदेशों ऐसा नहीं। जैसा कि installकमांड लागू करता है कि, यह कमांड उपरोक्त के बराबर है:

zypper install -y curl

ध्यान दें कि बाद में-y आना चाहिए , जबकि वैश्विक विकल्प सबकुंड से पहले आता है ( इसका मतलब कुछ अलग है; उसके लिए मैन पेज पढ़ें)। install-nzypper install -n

[संपादित करें] नीचे का खंड अब सटीक नहीं है, लेकिन ऐतिहासिक संदर्भ के लिए इसे बरकरार रखा गया है। वर्तमान जिपर --gpg-auto-import-keysस्वचालित रूप से आयात करने और नए रिपॉजिटरी से जुड़ी gpg कुंजियों पर भरोसा करने के विकल्प का समर्थन करता है।


प्रलेखन के अनुसार कोई तरीका नहीं है कि इंटरैक्टिव मोड के बिना जीपीजी कुंजी को कैसे स्वीकार किया जाए:

एक नई कुंजी पर भरोसा किया जा सकता है या केवल इंटरैक्टिव मोड में आयात किया जा सकता है

यहां तक --no-gpgp-checksकि GPG कुंजी को भी अस्वीकार कर दिया जाएगा।

स्क्रिप्ट के लिए वर्कअराउंड पाइप का उपयोग करना है और echo:

zypper addrepo http://repo.example.org my_name | echo 'a'

1
गंभीरता से? एक  -nविकल्प और एक  -yविकल्प है और उनका मतलब एक ही बात है लेकिन उन्हें कमांड लाइन में विभिन्न पदों पर रखा जाना चाहिए? हाँ, यह भ्रामक है। (स्पष्ट होना: मैं मैसेंजर की शूटिंग नहीं कर रहा हूं; मैं कह रहा हूं कि डेवलपर को प्रयोज्य मुद्दों के बारे में अधिक सोचना चाहिए।)
जी-मैन कहते हैं, 'मोनिका'

@ जी-मैन - ठीक है, की तरह। :) के zypperपास एक -nविकल्प है। installउप कमान दोनों एक है -yविकल्प है जो एक सुविधा वैश्विक करने के लिए उपनाम है -nविकल्प, और यह भी अपने आप ही है -n, जिसके लिए कम है --name। क्षमता से पैकेज स्थापित करना संभव है। इसलिए, zypper install -n blahकेवल नामित पैकेज को हल करने के लिए निर्दिष्ट करता है blahऔर उन पैकेजों पर विचार नहीं करता है जो प्रदान करते हैं blah । उसके बिना, ज़ीपर आरपीएम (संस्करण तुलना सहित) से प्रदान किए गए अनुभाग के आधार पर हल कर सकता है, जो निर्भरता के संकल्प को आसान बना सकता है। zypper install 'python>3.5'उदाहरण के लिए।
dannysauer

इसके लिए मुख्य उपयोग zypper install -nयह है कि शायद आप एक विशिष्ट पैकेज स्थापित करना चाहते हैं जिसका नाम दूसरों द्वारा प्रदान की गई क्षमता है। उदाहरण के लिए, शायद कुछ vi कार्यान्वयन हैं, और आप केवल एक विशिष्ट पैकेज चाहते हैं जिसका नाम vi है जिसका रिज़ॉल्यूशन बिना gvim (जो vi प्रदान करता है) में वापस आ रहा है कि विशिष्ट viपैकेज आपके रेपो में गुम किसी कारण के लिए है। व्यक्तिगत रूप से, मैं छोटे विकल्पों की भ्रमित प्रकृति को नापसंद करता हूं और शायद ही कभी उन्हें लिपियों या किसी और चीज़ में उपयोग करता हूं (मेरे जैसे) को बाद में पढ़ने की आवश्यकता हो सकती है। : D
डैनीसॉयर

8

आपके पास - गन-इंटरैक्टिव विकल्प है। मैन पेज से:

Switches  to  non-interactive  mode. 
In this mode zypper doesn't ask user to type answers to various prompts, but uses default answers automatically. 
The  behaviour of this option is somewhat different than that of options like '--yes', since zypper can answer different answers to different questions. 
The answers  also  depend on other options like '--no-gpg-checks'.

Apt-get के ऑटोरेमोव के लिए कोई वास्तविक पत्राचार नहीं है। निकटतम कमांड का --clean-depsविकल्प है remove, जो तुरंत निर्भरता को साफ करता है (लेकिन बाद में नहीं)।


क्या zypper.confअन्य पैकेज प्रबंधकों की तरह स्थायी पुष्टि के लिए इस तरह के विकल्प को जोड़ना संभव है ?

मुझे नहीं पता। मैंने कुछ समय में उपयोग नहीं किया है, इसलिए मैं इसकी जांच नहीं कर सकता।
चटाई

यह pacman, apt, और yum / dnf के विपरीत zypper के लिए असंभव लगता है :-(

3

वह एक नमूना है

zypper --non-interactive --quiet addrepo --refresh -p 90 http://packman.inode.at/suse/openSUSE_Leap_15.0/ 'packman'
zypper --gpg-auto-import-keys refresh
zypper --non-interactive dist-upgrade --allow-vendor-change --from packman
zypper --non-interactive install vlc vlc-codecs

बेशक आप अधिक विकल्पों को शामिल कर सकते हैं, --auto-agree-with-licensesलेकिन याद रखें कि इससे पहले या बाद में फर्क पड़ता हैinstall


2

यह मेरे लिए काम किया (SLES12SP3 पर जाँच):

zypper --non-interactive --quiet ar -C http://myrepo myrepo
zypper --gpg-auto-import-keys ref

नोट -C/--no-checkके लिए zypper ar

अब आप पैकेज स्थापित कर सकते हैं:

zypper in -y --auto-agree-with-licenses vim
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.