हेडलेस सर्वर के रूप में चलने पर एक्स सर्वर और डेस्कटॉप मैनेजर की स्थापना रद्द कैसे करें?


88

मैं अपने रास्पबेरी पाई का उपयोग एक बिना सिर वाले सर्वर के रूप में कर रहा हूं जिसे मैं ssh कर सकता हूं। मुझे X सर्वर, LXDE आदि की आवश्यकता नहीं है

मैं Raspbian "wheezy" चला रहा हूं। मैंने पहले ही यहाँraspi-config वर्णित के रूप में "बूट पर स्टार्ट डेस्कटॉप" को निष्क्रिय कर दिया है । लेकिन मैं उन सभी डेस्कटॉप सामानों के लिए बहुत सारे पैकेज अपडेट प्राप्त करता रहता हूं, जिनका मैं उपयोग नहीं करता ( ईमेल के माध्यम से लंबित अपडेट की सूचना देने के लिए मैं एन्टीट्रॉन चलाता हूं ), इसलिए मैं apt-get removeइन अनावश्यक अपडेटों से बचने के लिए पूरी तरह से सभी अनावश्यक पैकेजों को पसंद करूंगा ।

मुझे कौन सा पैकेज (पैकेज) निकालना चाहिए?

अब तक, मैं निम्नलिखित के साथ आया हूँ:

sudo apt-get remove desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

मैंने उपर्युक्त सूची को अधिष्ठापित संकुल के सभी संकुल -> x11 -> मुख्य भाग के लिए उपयुक्तता में देखकर बनाया था जो कि "स्वचालित संस्थापन" नहीं थे।

किसी कारण से जब मैं इसे चलाता हूं, तो apt-getमुझे बताता है कि:

The following extra packages will be installed:
  libutempter0 xbitmaps xterm

जो एक हटाने के ऑपरेशन के लिए थोड़ा अजीब लगता है ।

क्या कोई आसान तरीका है? क्या कोई "सुपर" पैकेज है जो इस ग्राफ़िकल सामान के सभी का मालिक है और इसे इसके साथ निर्भरता वाले सभी को लेते हुए हटाया जा सकता है? मेरी समझ से, ऐसा नहीं लगता है कि यह संभव है, क्योंकि ये चीजें स्वचालित रूप से स्थापित नहीं हुई हैं, जिसका अर्थ है कि मुझे उन सभी को ट्रैक करने और उन सभी को स्पष्ट रूप से हटाने की आवश्यकता है।

जवाबों:


85

टीएल; डीआर या "जस्ट पी माई पीरो"

sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge

( apt-get autoremove --purgeतब तक दोहराएं जब तक कोई अनाथ न रह जाए)

आगे की व्याख्या

यदि एक पैकेज foo दूसरे पैकेज libfoo पर निर्भर करता है और आप libfoo पैकेज को हटाते हैं , तो आश्रित ( foo ) को भी हटा दिया जाता है। क्योंकि फू है एक निर्भर करता है को निर्दिष्ट लाइन libfoo , यह foo छोड़ने के लिए करता है, तो libfoo हटा दिया गया है टूट किया जाएगा। रिवर्स सच नहीं है: फू को हटाने से लिबफू अपने आप नहीं हटता है । एक अन्य पैकेज xfoo भी libfoo पर निर्भर हो सकता है , इसलिए उपयुक्त इसे हटा नहीं सकता है (हालाँकि उपयुक्त ट्रैक होगा यदि इसे केवल स्थापित करने के साइड-इफ़ेक्ट के रूप में स्थापित किया गया है foo और यदि आप इसे पूछते हैं, तो इसे स्वतः हटाने की पेशकश करें, जब तक कि कोई अन्य अभी भी इस पर निर्भर न हो)

मेटा संकुल निर्भर ज्यादा एक ही तरीका है कि में अन्य संकुल के एक सेट पर फू पर निर्भर libfoo , इसलिए जब आप एक मेटा-पैकेज को हटाने, कुछ खास आम तौर पर हटा दिया जाता है। उदाहरण के लिए, दो मेटा-पैकेज हो सकते हैं जो xterm (lxsession और xfsession शायद) पर निर्भर करते हैं , लेकिन एक या दोनों को अनइंस्टॉल करने से xterm की स्थापना रद्द नहीं होगी क्योंकि xterm lxsession या xfsession के बिना टूटा नहीं है। मेटा-पैकेज आम तौर पर निर्भरता के पेड़ के शीर्ष पर होते हैं , न कि सबसे नीचे, और कुछ चीजें सीधे मेटा-पैकेज पर निर्भर करती हैं। मेटा-पैकेज मुख्य रूप से एक बार में एक समझदार सेट को स्थापित करने के लिए एक सुविधाजनक तरीका प्रदान करते हैं, लेकिन वे टूल की स्थापना रद्द नहीं करते हैं।

इसलिए, यदि आप X11 पर निर्भर होने वाली हर चीज को बिखेरना चाहते हैं, तो आपको libx11 पुस्तकालयों के आधार सेट को लक्षित करने की आवश्यकता होगी जो कि सभी x11 ऐप्स को अंततः निर्भर करना चाहिए :

sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge

यह (अनुकरण) सब कुछ हटा देगा जो अंततः libx11 पर निर्भर करता है - *।, और X11 प्रोग्राम की निर्भरता के रूप में स्थापित किए गए किसी भी पैकेज को भी हटा देगा , भले ही वे सीधे X11 पर निर्भर न हों (CUPS और घोस्टस्क्रिप्ट आमतौर पर स्थापित होते हैं एक डेस्कटॉप वातावरण स्थापित करने के साइड-इफेक्ट के रूप में)। दूसरा आदेश बाद के अनाथों को हटा देगा जब तक कोई नहीं रहता। यदि आप इस चरण को बाद में करना चाहते हैं या नहीं करना चाहते हैं, तो "--auto-remove" निकालें, या GUI को बंद करने के बाद मैन्युअल रूप से संकुल को वापस जोड़ें।

आपके द्वारा जाँच किए जाने के बाद वास्तव में ऑपरेशन करने के लिए --dry-run विकल्प निकालें, यह उन पैकेजों को नहीं हटाएगा जिन्हें आपने हटाने का इरादा नहीं किया था।)

मैं साइड-इफेक्ट्स को साफ और शुद्ध करना पसंद करता हूं, और उन्हें आवश्यकतानुसार वापस जोड़ता हूं। इसके अलावा, मैंने आगे बढ़कर अपने स्वयं के पाई पर इसका परीक्षण किया, और इसने एक बहुत ही संयमी लेकिन कार्यात्मक सर्वर को रिबूट किया। :)

क्यों एक रिमूव कुछ स्थापित करता है?

उपर्युक्त रणनीति बताई गई समस्या को हल करती है, लेकिन अभी भी इस बात की जिज्ञासा है कि संकुल को हटाने के संचालन का परिणाम क्यों स्थापित किया जा रहा है

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

एक ठोस उदाहरण: जावा अनुप्रयोगों के एक सेट को पहले से ही स्थापित करने के बाद, वे सभी एक जावा संगत रनटाइम पर निर्भर करते हैं जो वर्तमान में ओपनजेडक -7-जेआर होता है । इसके बाद आप एक नया जावा उपकरण है जो एक वाणी की स्थापना के लिए हल करने के लिए पैकेज प्रबंधक पूछना संघर्ष के साथ openjdk-7-JRE लेकिन काम करता है के साथ ओरेकल-7-JRE (दोनों संकुल सामान्य रूप से उपलब्ध कराने के एक जावा-7-क्रम )। Solver एक प्रस्ताव देगा हटाने की openjdk-7-JRE और एक स्थापित की ओरेकल-जावा-7-JREमौजूदा पैकेज को न तोड़ते हुए नए पैकेज को स्थापित करने की आपकी इच्छित स्थिति के समाधान के रूप में।

इस विशिष्ट मामले में, xterm एक पैकेज है जो x-टर्मिनल-एमुलेटर ( xterm , lxterminal और aterm सभी एक्स-टर्मिनल-एम्यूलेटर प्रदान करता है ) नामक एक वर्चुअल निर्भरता प्रदान करता है , इसलिए यह संभव है कि lxterminal को हटाने के रूप में (एक भाग के रूप में) Lxde को हटाते हुए, सॉल्वर को एक मौजूदा स्थापित पैकेज ( संभावित उदाहरण के रूप में ट्रांसकोड ) मिला, जिसे किसी प्रकार के एक्स-टर्मिनल-एमुलेटर की आवश्यकता थी , इसलिए सॉल्वर ने xterm स्थापित करने के लिए चुना (जिसके लिए libutempter0 और xbitmaps की आवश्यकता होती हैअन्यथा स्थापित निर्भरता को पूरा करने के लिए) अन्य संकुल को स्थापित करने के लिए समझाते हुए)। पैकेज डेटाबेस को देखे बिना, मैं परिकल्पना करूंगा कि यह सबसे संभावित परिदृश्य है।

संकुल है कि वर्तमान में कर रहे हैं पर निर्भर करता है की खोज करने के लिए टर्म (या कोई वैकल्पिक), का उपयोग apt-कैश rdepends आदेश (का उपयोग कर --installed इंस्टॉल किए गए पैकेज को सीमित करने के लिए स्विच केवल):

$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
    |xorg
     clusterssh
    |xinit
    |tk8.5
    |tk8.4
    |transcode

वैकल्पिक चरित्र के साथ शुरू होने वाली निर्भरता '' | इसका मतलब है कि पैकेज xterm पर निर्भर करता है या ऐसा कुछ प्रदान करता है (जो कि इस मामले में कुछ x- टर्मिनल-एमुलेटर है)। Clusterssh पैकेज पर निर्भर करता है टर्म स्पष्ट रूप से , और एक वैकल्पिक के लिए अनुमति नहीं है। यह उन संकुलों की संक्षिप्त सूची है, जिनके कारण xterm की आवश्यकता होती है।

दुर्जन के बारे में क्या?

ट्रैकिंग अनाथों की कार्यक्षमता को 2010 में ' ऑटोरेमोव ' कार्यक्षमता के माध्यम से उपयुक्त रूप में शामिल किया गया था (डेबियन बग 582791 ) जिसमें ज्यादातर निरर्थक और अनिवार्य रूप से अप्रत्यक्ष रूप से देवर्धन का प्रतिपादन किया गया था। डीपोरफ़ान और इसके जैसे अन्य समाधानों के विपरीत, सीधे - सीधे ट्रैक मिलते हैं कि कौन से पैकेज स्पष्ट रूप से स्थापित किए गए थे और कौन से पैकेज स्पष्ट रूप से स्थापित पैकेज के साइड-इफेक्ट या निर्भरता के रूप में स्थापित किए गए थे। उदाहरण के लिए, यदि कोई व्यवस्थापक foo स्थापित करता है, तो libfoo को साइड-इफ़ेक्ट के रूप में स्थापित किया जाता है और apt-get autoremove होगा , वास्तव में, libfoo को हटा दें यदि चिड़ियाघर को हटाते समय autoremove (या --auto-remove) निर्दिष्ट किया जाता है।

डीबोरफान द्वारा लिया गया दृष्टिकोण अनुमानों का एक संग्रह है। उदाहरण के लिए, अनुमान है कि एक स्थापित पुस्तकालय जिसमें एक आश्रित नहीं है, एक अनाथ होना चाहिए: यदि लिबफू स्थापित किया गया है, लेकिन न तो फू और न ही xfoo हैं, तो दुर्व्यवहार यह तय कर सकता है कि यह एक अनाथ होना चाहिए। यहां एक विफलता मोड यह है कि पुस्तकालयों को विशेष रूप से उन उपकरणों के लिए स्थापित किया जा सकता है जो वे प्रदान करते हैं (libxml2 xmllint के लिए इससे पहले कि यह libxml2-utils में बदल दिया गया था) या बस विकास प्रयोजनों के लिए उपलब्ध है। ऐसे पैकेज अनाथ नहीं हैं। इसके अतिरिक्त, deborphan पुस्तकालयों पर केंद्रित है, इसलिए यह कई गैर-पुस्तकालय अनाथों को याद करता है जो उपयुक्त ट्रैक (अप्रचलित पैकेज बनाम अनाथ पैकेज) हैं


2
ब्रिलियंट ने मेरे लिए धन्यवाद का काम किया। यह muninकिसी कारण से भी हटा दिया गया था , लेकिन मैं बाद में आसानी से वापस रख सकता था।
दिन

4
इसे बिखेर दो! मुझे 'libx11-.*'शेल को ग्लोबिंग से बचाने के लिए कोट करना पड़ा ।

1
@Maxx, महान जवाब, लेकिन आपके सभी परिदृश्यों में, आपने यह नहीं बताया कि यह कैसा है जब वह भागता है apt-get removeकि वह चाहता था install xtermऔर दो अन्य। मैंने भी इसका अनुभव किया है और यह काम नहीं कर सका।
मदिवाड

2
स्वच्छ, unexpanded रास्पियन स्थापित, के बाद उपयुक्त-अप उन्नयन, dist- उन्नयन rootfs ... 94% /:। Apt-get remove --auto-remove --purge libx11 -। *: rootfs ... 51% /उत्कृष्ट उत्तर, बहुत बहुत धन्यवाद!
डैनियल एफ

2
और बाद में ऑटोरेमोव प्राप्त करें: rootfs ... 41% /...
डैनियल एफ

27
sudo apt-get install deborphan
sudo apt-get autoremove --purge libx11-.* lxde-.* raspberrypi-artwork xkb-data omxplayer penguinspuzzle sgml-base xml-core alsa-.* cifs-.* samba-.* fonts-.* desktop-* gnome-.*
sudo apt-get autoremove --purge $(deborphan)
sudo apt-get autoremove --purge
sudo apt-get autoclean

पहली पंक्ति स्थापित होती है deborphanजो किसी भी अनाथ पैकेज को हटा देगी।

दूसरी पंक्ति X11 सिस्टम LXDE, सांबा (विंडोज फाइल शेयरिंग), फोंट, गनोम, और रास्पबेरी पाई के डेस्कटॉप वातावरण से संबंधित अन्य सामान के मुख्य पैकेजों को हटा देती है।

तीसरी पंक्ति किसी भी अनाथ संकुल को हटा देती है जिसे दुर्भोजन द्वारा पता लगाया जाता है।

चौथी पंक्ति किसी भी अनावश्यक पैकेज को हटा देती है।

पांचवीं पंक्ति पैकेज कैश को साफ करती है।


3
रास्पबेरी पाई स्टैक एक्सचेंज में आपका स्वागत है! हालांकि यह तकनीकी रूप से सवाल का जवाब दे सकता है, लेकिन यह कैसे काम करता है और यह वास्तव में क्या कर रहा है, इसकी कुछ व्याख्या को शामिल करना बेहतर होगा।
RPiAwesomeness

1
ब्रांड नई रास्पबियन स्थापित पर उन आदेशों को चलाने के लिए मैं 4GB एसडी कार्ड पर एक गीगाबाइट से कम से 2.5GB मुक्त चला गया। मेरे लिए कम से कम यह सही उत्तर है।
लूटना

2
स्वीकृत उत्तर बहुत गहराई से है, लेकिन यह वास्तव में ओपी की समस्या को पूरा करने के लिए एक सूची नहीं देता है। यह उत्तर नंगे पैर हो सकता है, लेकिन यह वास्तव में यह साबित करता है कि ओपी (और मुझे) वास्तव में क्या चाहिए
portforwardpodcast

सांबा की स्थापना रद्द क्यों? यह कोई GUI एप्लिकेशन नहीं है। नेटवर्किंग के लिए आवश्यक हो सकता है।
डॉगवॉटर

9

1 /। मेरे द्वारा किए गए सभी डेस्कटॉप को हटाने के लिए (कॉफी का एक पॉट बनाएं)। थोड़ा समय लगेगा।
apt-get remove --auto-remove --purge libx11-.*

2 /। तब मैंने अनाथ फाइलों से छुटकारा पाने के लिए दुर्जन को स्थापित किया ...
sudo apt-get install deborphan

यदि आप यह देखना चाहते हैं कि अनाथ क्या किया गया है ...
deborphan -sz

3 /। फिर मैंने सभी अनाथ फ़ाइलों को हटा दिया ...
sudo apt-get remove --purge $(deborphan)

अंत में अनाथ नहीं किए गए अनावश्यक पैकेजों को हटाने के लिए ऐसा करें ...
sudo apt-get autoremove

अंतिम परिणाम: एक सीटी के रूप में बिना सिर के और साफ


2
apt-get remove --dry-runबिल्कुल कुछ नहीं करता है , लेकिन स्क्रीन पर संदेश प्रिंट करता है ।
लेनिक

7

लो एक नज़र यहाँ लेकिन के बारे में हिस्सा के लिए नीचे स्क्रॉल tasksel

tasksel --list-tasksवाईफाई ssh के माध्यम से पाई पर दौड़ना मुझे (लगभग 30 सेकंड के बाद) देता है:

u desktop   Debian desktop environment
u web-server    Web server
u print-server  Print server
u database-server   SQL database
u dns-server    DNS Server
u file-server   File server
u mail-server   Mail server
u ssh-server    SSH server
u laptop    Laptop

इसलिए, tasksel remove desktopआपको वही करना चाहिए जो आप चाहते हैं [टिप्पणियाँ देखें] । मैन पेज थोड़ा संक्षिप्त और रहस्यमय है, शायद इसलिए कि कार्यस्थल ज्यादातर डेबियन रखरखाव के लिए है। अगर यह काम करता है तो हमें बताएं;)


धन्यवाद, मैंने कभी नहीं सुना tasksel, हालांकि मेरे पास उबंटू अनुभव की एक उचित मात्रा है। दुर्भाग्य से मैंने यह कोशिश की, remove desktopकमांड को चलाने में थोड़ा समय लगा लेकिन उन सभी "ग्राफिकल" पैकेज अभी भी उसी के अनुसार हैं aptitude
दिन

मैं या तो नहीं था, लेकिन मैं थोड़ा हैरान था जब मैंने देखा कि कुछ मूल एक्स घटक को हटाने के लिए उपयुक्त नहीं है, जो पूरी निर्भरता स्टैक को नहीं खींचता है, जो मुझे लगा कि यह होगा। मुझे कार्यस्थल के लिए एक बेहतर पृष्ठ मिला, और वास्तव में ncurses ऐप ( taskselकोई विकल्प नहीं) के साथ निकाल दिया गया । यकीन है कि अब 'यू' का मतलब है metapackages are't स्थापित, और यदि आप 'डेस्कटॉप' स्थापित करते हैं, आप एक बस lxde संस्करण की तुलना में अधिक प्राप्त हो जाएगा wiki.debian.org/tasksel तो कोई पासा। मुझे लगता है कि "xorg" रूपक से apt-cache search metapackageवास्तव में स्थापित नहीं है। मुझे लगता है कि रास्पबिन को दोषी ठहराते हैं।
गोल्डीलॉक्स

2
मैं इस उत्तर को किसी मृत अंत को बचाने के लिए छोड़ दूंगा, या किसी के बेहतर प्रकाश को बहा देने की स्थिति में।
गोल्डीलॉक्स

5

वैकल्पिक रूप से, आप इस रास्पियन न्यूनतम छवि की कोशिश कर सकते हैं: http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/


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

3

कार्यस्थल की जानकारी के आधार पर, यह पता लगाना संभव है कि मेटा-पैकेज टास्क-डेस्कटॉप है, जो अन्य सभी जीयूआई संबंधित पैकेजों को संदर्भित करता है। बस ऐसे

sudo apt-get remove task-desktop

यह बहुत सारे अन्य पैकेज (GUI / डेस्कटॉप संबंधित) को हटा देगा।

पृष्ठभूमि: पैकेज का नाम task-desktopनिम्नलिखित कार्यशील आदेशों को चलाकर पाया जा सकता है:

tasksel --list-tasks
tasksel --task-packages desktop

0

एक अन्य विकल्प योग्यता का उपयोग करना है जिसे आपको हमेशा पसंद करना चाहिए, यदि आप कुछ पैकेजों को स्थापित या हटाने से अधिक करने जा रहे हैं।

टाइप करके रूट के रूप में एप्टीट्यूड शुरू करें sudo aptitude। एप्टीट्यूड के मानक संकुल दृश्य में अंतिम सूची प्रविष्टि है Tasksजिसमें आप कार्यस्थल द्वारा सूचीबद्ध विभिन्न विकल्पों का चयन कर सकते हैं। के साथ आइटम के माध्यम से नेविगेट करें j, kऔर enter। किसी आइटम को _हाइलाइट किए गए आइटम पर (अंडरस्कोर) डालकर चिह्नित करें । यह केवल क्रियाओं को तैयार करता है। कार्यों को निष्पादित करने के लिए दबाएँ g

डेबियन मैनुअल में योग्यता के बारे में पढ़ें ।


0

इस कोड को टाइप करें:

sudo apt-get purge desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

1
तो, स्पष्ट करने के लिए, ओपी की कमांड लाइन और आपके बीच एकमात्र अंतर, purgeएन के बदले का उपयोग है remove?
ग्रीनऑनलाइन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.