बलपूर्वक apt-get को शीघ्र हां / ना में बोलना


11

क्या apt-getहाँ / शीघ्र दिखाने के लिए बाध्य करने का कोई तरीका है ? एक --force-yesविकल्प मौजूद है, लेकिन ऐसा लगता है कि कोई --force-promptविकल्प नहीं है। यदि आप ऐसे पैकेज को स्थापित करने का प्रयास करते हैं, जिसमें पहले से स्थापित सभी निर्भरताएँ हैं, तो यह बिना हाँ / बिना संकेत के इंस्टॉलेशन शुरू करेगा। यदि आप यह समीक्षा करना चाहते हैं कि क्या निर्भरताएं मौजूद हैं और कौन सी स्थापित की जाएंगी, तो यह परेशान कर सकता है क्योंकि आप नहीं जानते कि संभावित निर्भरताएं समय से पहले स्थापित की जाती हैं या नहीं।

ध्यान दें: "apt-get install" कब मुझसे पुछता है कि मैं जारी रखना चाहता हूं या नहीं? इसमें कुछ हद तक संबंधित है कि यह बताता है कि प्रॉम्प्ट किस मानक स्थिति में प्रदर्शित होता है। मुझे यह जानने में दिलचस्पी है कि इसे कैसे लागू किया जाए।


1
"यह परेशान हो सकता है यदि आप समीक्षा करना चाहते हैं कि क्या निर्भरता मौजूद है और कौन से स्थापित होंगे।" मैं इससे भ्रमित हूं। यदि कोई निर्भरता स्थापित नहीं की जा रही है, तो आप क्या समीक्षा कर रहे हैं?
फहीम मीठा

2
दिलचस्प सवाल। ऐसा करने का कोई तरीका नहीं लगता है, apt-getएक उपयुक्त विकल्प के साथ पैचिंग का छोटा होना । हालाँकि, यह काल्पनिक विकल्प मेरे लिए बहुत उपयोगी नहीं है, स्पष्ट रूप से।
फहीम मीठा

@FaheemMitha ऐसा करने के लिए मेरा उद्देश्य यह है कि यह पता लगाना बहुत आसान है कि नई निर्भरताएं क्या कर सकती हैं / इसके apt-get installबजाय इसका उपयोग करके स्थापित किया जाएगा apt-cache showpkg
user369450

जवाबों:


10

वर्तमान में इसे लागू करने के तरीके के साथ ऐसा करने का कोई तरीका नहीं है, आपको एक सुविधा अनुरोध खोलने और अनुचर को अपील करने की आवश्यकता होगी। Apt-get का वर्तमान व्यवहार यह है कि जब आपके द्वारा स्थापित किए जाने वाले पैकेजों की सूची स्थापित किए जाने वाले पैकेजों की मात्रा के बराबर हो, और कोई अन्य पैकेज अपग्रेड या ब्रेक से प्रभावित न हों, तो apt-get उपयोगकर्ता को पहले से ही मान लेता है यकीन है कि क्या होने जा रहा है , यदि आप निश्चित नहीं हैं या विश्लेषण करना चाहते हैं कि वास्तव में पैकेज स्थापित किए बिना क्या किया जाएगा, तो आप कोस्टा की सिफारिश का उपयोग कर सकते हैं -s, --simulate, --just-print, --dry-run, --recon, --no-act

अन्य उपकरण हैं जैसे apt-listbugs जो संकुल के संस्करणों का विश्लेषण करने से पहले आपको वास्तव में उन्हें (बग के लिए इस मामले में) स्थापित करने और आपको चेतावनी देते हैं।


4

कमांड yesकेवल एक पैकेज (जो कमांड लाइन से शुरू किया गया है) और सिस्टम में सभी निर्भरताएँ स्थापित करने के मामले में मानती है। केवल उन सभी पैकेजों को छोड़कर स्थापित करने के लिए कुछ भी नहीं है।

दूसरे शब्द में "अगर कुछ नहीं देखना है (कोई अतिरिक्त पैकेज नहीं है) तो कोई संकेत नहीं है (कुछ भी नहीं पूछना है)"।

परीक्षण प्रयोजनों के लिए आप एक कुंजी का उपयोग कर सकते हैं -s, --simulate, --just-print, --dry-run, --recon, --no-act


@cpburnz अगर all dependecies are installedपहले से ही आपको प्रॉमिस नहीं किया गया है तो कोई अन्य पैकेज इंस्टॉल नहीं किया जाएगा।
कोस्टा

0

पुराना सवाल है, मैं देख सकता हूं, लेकिन अब इसी तरह की स्थिति में। आमतौर पर मैं उपयोग करता हूं sudo aptitude install -P PACKAGE_NAME, हमेशा इंस्टॉल करने से पहले क्या पूछता हूं। हालाँकि अब डेबियन डिफॉल्ट पैकेज मैनेजर है apt|apt-getऔर इसकी यह कार्यक्षमता नहीं है। बेशक मैं अभी भी aptitudeइसे स्थापित और उपयोग कर सकता हूं ... हालांकि मैंने apt-getस्थापना से पहले पूछने के लिए छोटे श / बाश आवरण फ़ंक्शन / स्क्रिप्ट लिखी है । यह वास्तव में कच्चा है और मैंने इसे अपने टर्मिनल में एक फ़ंक्शन के रूप में लिखा था।

$ f () { sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf'; read -p 'Do You want to continue (y/N): ' ans; case $ans in [yY] | [yY][eE][sS]) sudo apt-get -y install "$@";; *);; esac; }

अब, इसे और स्पष्ट करते हैं:

f () {
  # Do filtered simulation - without lines contains 'Inst' and 'Conf'
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';

  # Interact with user - If You want to proceed and install package(s),
  # simply put 'y' or any other combination of 'yes' answer and tap ENTER.
  # Otherwise the answer will be always not to proceed.
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      # Because we said 'yes' I put -y to proceed with installation
      # without additional question 'yes/no' from apt-get 
      sudo apt-get -y install "$@";
    ;;
    *)
      # For any other answer, we just do nothing. That means we do not install
      # listed packages.
    ;;
  esac
}

इस फ़ंक्शन को एक श / बश लिपि के रूप में उपयोग करने के लिए, केवल my_apt-get.shसामग्री के साथ स्क्रिप्ट फ़ाइल बनाएं (नोट: लिस्टिंग में टिप्पणी नहीं है, इसे थोड़ा छोटा करने के लिए; ;-)):

#!/bin/sh

f () {
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      sudo apt-get -y install "$@";
    ;;
    *)

    ;;
  esac
}

f "$@"

फिर इसे उदाहरण के लिए रखें ~/bin/और इसके साथ निष्पादन योग्य बनाएं $ chmod u+x ~/bin/my_apt-get.sh। यदि निर्देशिका ~/binको आपके PATHचर में शामिल किया जाता है , तो आप इसे बस द्वारा निष्पादित कर पाएंगे:

$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL

कृपया ध्यान दें:

  • कोड का उपयोग करता है sudo। यदि आप rootखाते का उपयोग करते हैं, तो आपको संभवतः इसे समायोजित करने की आवश्यकता है।
  • कोड शेल स्वतः पूर्णता का समर्थन नहीं करता है
  • पता नहीं कैसे कोड शेल पैटर्न (जैसे "!", "*", "?", ...) के साथ काम करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.