apt-get install with '-' (माइनस / हाइफ़न) पैकेज निकालता है


22

मैं कुछ पैकेज की तलाश में था ( nautilus-terminal), और गलती से ऐसा हो गया:

$ sudo apt-get install nautilus-
Reading package lists... Done                                                                                                                                                                                                 
Building dependency tree                                                                                                                                                                                                      
Reading state information... Done                                                                                                                                                                                             
The following packages were automatically installed and are no longer required:                                                                                                                                               
  apturl apturl-common libgail-3-0 linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic                                                                      
Use 'sudo apt autoremove' to remove them.                                                                                                                                                                                     
The following packages will be REMOVED:                                                                                                                                                                                       
  gnome-session-flashback nautilus nautilus-sendto nautilus-share ubuntu-desktop                                                                                                                                              
0 upgraded, 0 newly installed, 5 to remove and 69 not upgraded.                                                                                                                                                               
After this operation, 2 031 kB disk space will be freed.                                                                                                                                                                      
Do you want to continue? [Y/n] ^[[^C                                                                                                                                                                                          

यह काफी खतरनाक है क्योंकि निष्कासन स्वत: पूर्णता से एक सरल डैश की तुलना में गलत तरीके से निकालना बहुत कठिन है।

के बराबर है apt-get remove? मुझे उसके लिए कोई दस्तावेज नहीं मिला। संपादित करें: मैन पेज को देखने के लिए छोड़कर ...


1
क्यों यह किसी भी अधिक खतरनाक है apt-get remove? Apt-get आपको यह भी बताता है कि यह क्या करेगा, और पुष्टि के लिए पूछता है।
मार्सेल

3
@marcelm क्योंकि removeएक असफल स्वत: पूर्णता से एक साधारण पानी का छींटा की तुलना में गलत है।
stebu92

@ stebu92 बिल्कुल सही शब्दों में, मैं जोड़ रहा हूँ कि अगर तुम बुरा मत मानना।
ओंद्रा Oižka

मुझे लगता है कि जब -उपयोग किया जाता है तो कम से कम Y / n को y / N में बदल दिया जाना चाहिए ।
ओन्द्रा kaižka

हो सकता है कि मैं गलत व्याख्या कर रहा हूं, लेकिन यह एक सवाल से अधिक शिकायत / शिकायत की तरह लगता है। यह क्या सवाल है कि आप इसे पोस्ट करने के परिणामस्वरूप जवाब पाने की उम्मीद कर रहे हैं?
6

जवाबों:


28

से man apt-get:

इंस्टॉल करें
   स्थापित करने के लिए एक या एक से अधिक पैकेजों का पालन किया जाता है
   स्थापना या उन्नयन। प्रत्येक पैकेज एक पैकेज का नाम है, न कि
   पूरी तरह से योग्य फ़ाइल नाम (उदाहरण के लिए, डेबियन सिस्टम में,
   apt-utils प्रदान किए गए तर्क होंगे, नहीं
   apt-utils_1.2.10_amd64.deb)। द्वारा आवश्यक सभी पैकेज
   स्थापना के लिए निर्दिष्ट पैकेज (ओं) को भी पुनः प्राप्त किया जाएगा और
   स्थापित। /Etc/apt/source.list फ़ाइल का पता लगाने के लिए उपयोग किया जाता है
   वांछित पैकेज। यदि एक हाइफ़न पैकेज नाम के साथ जोड़ा जाता है (के साथ)
   कोई हस्तक्षेप स्थान नहीं है), पहचान किए गए पैकेज को हटा दिया जाएगा यदि यह
   स्थापित है। इसी तरह एक प्लस चिन्ह का उपयोग पदनाम के लिए किया जा सकता है
   पैकेज स्थापित करने के लिए। इन बाद वाली विशेषताओं का उपयोग ओवरराइड करने के लिए किया जा सकता है
   apt-get के संघर्ष समाधान प्रणाली द्वारा किए गए निर्णय।

इसलिए ओपी को ऐसा करना चाहिए: sudo apt install nautilus && sudo apt install nautilus-terminalओपी removeकमांड के साथ कहां गया था : sudo apt install nautilus-terminalअगर NO को चुना गया था?
जॉर्ज उदेन

3
इस सुविधा के लिए तर्क यह है कि कभी-कभी आप एक ऐसे पैकेज को स्थापित करना चाहते हैं जो पहले से स्थापित एक के साथ संघर्ष करता है, लेकिन उनमें से एक को किसी अन्य पैकेज की आवश्यकता होती है, इसलिए दोनों कार्यों को एक ही रन में होना चाहिए। जैसे apt install sysvinit-core systemd-sysv-(या तो आवश्यक init पैकेज द्वारा आवश्यक है ) या apt install msmtp postfix-(बहुत सारे पैकेज MTA पर निर्भर करते हैं)।
साइमन रिक्टर

1
apt -s install upstart-sysv16.04 को @SimonRichter संकेत aptस्वचालित रूप से हटा देगा systemd-sysv(क्योंकि वे संघर्ष करते हैं)। Ditto के लिए msmtp-mtaऔर postifx। एक अधिक जटिल उदाहरण की आवश्यकता हो सकती है, जहां aptगलत पैकेज को हटाने के लिए चुना जा सकता है ।
मूरू

मेरी अंधी आंख को ठीक करने के लिए धन्यवाद। उल्लेखनीय है कि apt-get remove foo+फू स्थापित करता है।
ओंद्रा Oižka

यह एक साफ-सुथरी विशेषता है। : डी
एंड्रिया लाज़रोज़ेटो

0

निम्नलिखित दो का मतलब समान है:

# apt-get remove nautilus
# apt-get install nautilus-

इसलिए यदि आप केवल एक चीज को स्थापित कर रहे हैं या हटा रहे हैं, तो वास्तव में एक के बाद एक को चुनने का कोई कारण नहीं है, और removeकमांड का उपयोग भी किया जा सकता है।

जहां "माइनस" ऑपरेटर काम में आता है, ऐसे मामलों में जहां आप एक पैकेज को निकालना चाहते हैं और उसी ऑपरेशन में दूसरे को इंस्टॉल करते हैं :

# apt-get install php5-cgi libapache2-mod-php5- 

मैं एक बेहतर उदाहरण के बारे में नहीं सोच सकता था, लेकिन कुछ परिस्थितियां ऐसी होती हैं, जिनमें एक को हटाने और दूसरे को अलग-अलग ऑपरेशन में जोड़ने से अतिरिक्त अनावश्यक इंस्टॉलेशन या रिमूवल को ट्रिगर किया जा सकता है, जबकि इन दोनों को एक ही ऑपरेशन में करने से कुछ सह-निर्भरताएं तुरंत संतुष्ट हो जाएंगी और यह हो जाएगा एक समग्र सरल ऑपरेशन।

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

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