स्रोत संकलित करके स्थापित पायथन की स्थापना रद्द करें?


18

मैं संकलन के द्वारा Ubuntu 14.04 पर अजगर 2.7.9 स्थापित उसके स्रोत , द्वारा .configre, make, और make altinstallmake altinstallइसलिए कि मैं डिफ़ॉल्ट पायथन 2.7.6 को अधिलेखित नहीं करना चाहता हूं। मेरा स्वयं का 2.7.9 स्थापित है /usr/local/bin/python2.7और अन्य निर्देशिकाओं में कई अन्य फाइलों के अंतर्गत है /usr/local। स्रोत स्थापना पैकेज में README से :

यूनिक्स और मैक सिस्टम पर यदि आप एक ही इंस्टॉलेशन प्रीफ़िक्स (कॉन्फ़िगर स्क्रिप्ट में एक से अधिक तर्क) का उपयोग करके पायथन के कई संस्करणों को स्थापित करने का इरादा रखते हैं, तो आपको ध्यान रखना चाहिए कि एक अलग संस्करण की स्थापना के द्वारा आपके प्राथमिक पायथन निष्पादन योग्य को ओवरराइट नहीं किया गया है।

"मेक अल्टीमेट" का उपयोग करके स्थापित सभी फ़ाइलों और निर्देशिकाओं में प्रमुख और मामूली संस्करण शामिल हैं और इस प्रकार साइड-बाय-साइड रह सकते हैं। "मेक इनस्टॉल" भी $ {उपसर्ग} / बिन / अजगर बनाता है जो $ {उपसर्ग} /bin/pythonX.Y को संदर्भित करता है।

यदि आप एक ही उपसर्ग का उपयोग करके कई संस्करणों को स्थापित करने का इरादा रखते हैं, तो आपको यह तय करना होगा कि कौन सा संस्करण (यदि कोई हो) आपका "प्राथमिक" संस्करण है। "संस्करण स्थापित करें" का उपयोग करके उस संस्करण को स्थापित करें। "Make altinstall" का उपयोग करके अन्य सभी संस्करणों को स्थापित करें।

उदाहरण के लिए, यदि आप 2.6 के प्राथमिक संस्करण होने के साथ Python 2.5, 2.6 और 3.0 को स्थापित करना चाहते हैं, तो आप अपनी 2.6 बिल्ड डायरेक्टरी में "इंस्टॉल करें" और अन्य में "altinstall" को निष्पादित करेंगे।

अब मैं अपने स्वयं के स्थापित 2.7.9 की स्थापना रद्द करना चाहता हूं।

  1. सौभाग्य से मेरे पास अभी भी स्रोत कोड है, लेकिन दुर्भाग्य से, मेकफाइल में अनुभाग की स्थापना रद्द नहीं है

    $ sudo make uninstall
    make: *** No rule to make target `uninstall'.  Stop.
  2. फिर मैंने एक और तरीका आज़माया: पहले स्रोत और संकलन से एक बहस बनाएं, बहस स्थापित करें (उम्मीद है कि स्थापित फ़ाइलों को अधिलेखित कर दिया जाए make altinstall), और फिर बहस की स्थापना रद्द करें।

    लेकिन जब मैं द्वारा देब फ़ाइल बनाने checkinstall, मैं कर रहा हूँ नहीं यकीन है कि अगर और कैसे मैं के लिए अलग करना चाहिए make altinstallके लिए से make install। मैंने कोशिश की है:

    $ checkinstall altinstall
    
    ...
    
    Installing with altinstall...
    
    ========================= Installation results ===========================
    /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: 4: /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: altinstall: not found
    
    ...

    मुझे आश्चर्य है कि मैं एक बहस कैसे बना सकता हूं ताकि बहस को स्थापित करने की स्थापना प्रक्रिया की नकल हो make altinstall?

  3. या मेरे अजगर 2.7.9 की स्थापना रद्द करने का आपका तरीका क्या है?

नोट: पहले लिंक में सोर्स पैकेज भी है setup.py, install-shइसके अलावा README


इतने सारे स्थानों में अजगर स्थापित नहीं होता है। मैं बस फ़ाइलों को मैन्युअल रूप से हटा दूंगा।
फहीम मीठा

धन्यवाद। क्या वे कई जगह नहीं हैं?
स्टैकएक्सचेंज फॉर ऑल

बाइनरी पैकेजों में से एक पर एक नज़र डालें। यह अनिवार्य रूप से एक ही जगह है, मुझे लगता है, सिवाय इसके कि /usr/localइसका इस्तेमाल किया जाता है /usrdpkg -L python2.7और dpkg -L python2.7-minimal। और आपको क्या चाहिए 2.7.9?
फहीम मीठा

मैंने सुना है कि यह डिफ़ॉल्ट रूप से पाइप है। लेकिन स्थापित करने के बाद, मुझे नहीं लगता कि इसमें पाइप है।
सभी

आप पाइप स्थापित कर सकते हैं apt-get install python-pip
फहीम मीठा

जवाबों:


20

निम्नलिखित आदेश आपके make altinstall-ed अजगर को निकाल देंगे :

rm -f /usr/local/bin/python2.7
rm -f /usr/local/bin/pip2.7
rm -f /usr/local/bin/pydoc
rm -rf /usr/local/bin/include/python2.7
rm -f /usr/local/lib/libpython2.7.a
rm -rf /usr/local/lib/python2.7

आपको करना भी पड़ सकता है

rm -f /usr/local/share/man/python2.7.1
rm -rf /usr/local/lib/pkgconfig
rm -f /usr/local/bin/idle
rm -f /usr/local/bin/easy_install-2.7

यद्यपि make altinstallमुझे अच्छी तरह से सेवा दी गई है यदि "सिस्टम पायथन" में आपके द्वारा इंस्टॉल किए गए एक अलग मेजर नंबर है, तो यह अच्छी तरह से काम नहीं करता है यदि केवल माइक्रो नंबर (तीसरी स्थिति) अलग है। उस संख्या को स्थापित बाइनरी से बाहर रखा गया है, और आप दो संस्करणों pythonX.Y के साथ समाप्त होते हैं। यह हमेशा एक समस्या थी लेकिन एक बार वितरण ने 2.7.X के आधार पर सिस्टम उपयोगिताओं के साथ शिपिंग शुरू कर दिया था। यह समस्या अधिक गंभीर है क्योंकि 2.7 पायथन 2 श्रृंखला के अंतिम माना जाता है।

इस समस्या को हल करने के लिए IMO का सबसे अच्छा तरीका यह है कि इसे एक बनने से रोका जाए: किसी अन्य अजगर द्वारा उपयोग नहीं की गई निर्देशिका में स्थापित करने के लिए अजगर को कॉन्फ़िगर करें। मेरी व्यवस्था के तहत वे चले जाते हैं /opt/python/X.Y.Z

वहां स्थापित किसी भी अजगर का उपयोग [virualenv][1]करने के लिए आप एक नया वातावरण बनाने के लिए उपयोग करते हैं:

virtualenv --python=/opt/python/2.7.9/bin/python2.7 venv
source venv/bin/activate

या उपयोग करें [virtualenvwrapper][2]। मेरे पास काम करने वाली श्रृंखला में नवीनतम संस्करणों के लिए कुछ उपनाम हैं।

यदि आप toxकई संस्करणों के खिलाफ परीक्षण के लिए उपयोग कर रहे हैं (आपको चाहिए) तो निम्न उपनाम विभिन्न संस्करणों को खोजने में मदद करेगा:

alias tox='PATH=/opt/python/2.7.9/bin:/opt/python/2.6.9/bin:/opt/python/3.4.3/bin:/opt/python/3.3.6/bin:/opt/python/3.5-dev/bin:$PATH tox'

(इन वर्तमान में नवीनतम संस्करण हैं, मैं से लिंक बनाए रखने के द्वारा एक अलग सेटअप का उपयोग /opt/python/2.7नवीनतम करने /opt/python/2.7.9के साथ-साथ अन्य छोटे संख्या के लिए, डाउनलोड करने के लिए प्रक्रिया के भीतर, और, निर्माण और एक नया अजगर संस्करण स्थापित करने)

इन इंस्टॉल को कभी भी सीधे उपयोग नहीं किया जाता है। वे हमेशा virtualenvकेवल पर्यावरण के आधार के रूप में उपयोग किए जाते हैं , इसलिए मुझे परवाह नहीं है कि वे मेरे सामान्य पेट में नहीं हैं।


2
/Usr/local/lib/python2.7 हटाएं नहीं! पाइप द्वारा स्थापित सभी वैश्विक अजगर मॉड्यूल /usr/local/lib/python2.7/dist-packages में रहते हैं। वो सारे मॉड्यूल टूट जायेंगे!
अभाग

2
@abhaga आप के साथ स्थापित नहीं करना चाहिए pipएक के बाहर virtualenvपर किसी भी linux स्थापना
Anthon

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

मेरे CentOS7 में, कुछ अलग हैं: 1. शामिल होना चाहिए: /usr/local/include/python2.7, बिन के बिना; 2. मैन फ़ाइल /usr/local/share/man/man1/python2.7.1 है; 3. एक अन्य फ़ाइल: /us/local/bin/python2.7-config
बिन एस

7

@ एंथोन की rmसूची से शुरू , और नई फाइलों की खोज के लिए @ बिन-एस सलाह लागू करने के बाद, मैं इस बैश-स्क्रिप्ट के साथ अपने पायथन-3.6.6 (जो स्रोतों से स्थापित किया गया था make altinstall) को पूरी तरह से मिटा देने के लिए आया था :

prefix='/usr/local/'
pyver='3.6'

rm -rf \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/pydoc \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}lib/pkgconfig/python-${pyver}.pc \
    ${prefix}lib/libpython${pyver}m.a \
    ${prefix}bin/python${pyver}m \
    ${prefix}bin/2to3-${pyver} \
    ${prefix}bin/python${pyver}m-config \
    ${prefix}bin/idle${pyver} \
    ${prefix}bin/pydoc${pyver} \
    ${prefix}bin/pyvenv-${pyver} \
    ${prefix}share/man/man1/python${pyver}.1 \
    ${prefix}include/python${pyver}m
    ${prefix}bin/pydoc ## WARN: skip if other pythons in local exist.

देखभाल के साथ इसका उपयोग करें (उदाहरण के लिए -Irm cmd में विकल्प जोड़ें प्रत्येक मार को सत्यापित करने के लिए)।


बहुत अच्छा। अब python3.X तब दिखाई नहीं देता जब मैं python3 टाइप करता हूं और टैब हिट करता हूं
Prometheus

1

आमतौर पर सभी फाइलें लगभग एक मिनट में स्थापित हो जाती हैं। आप लगभग एक ही समय में सभी स्थापित फ़ाइलों की जांच करने के लिए "खोज" का उपयोग कर सकते हैं, फिर उन्हें मैन्युअल रूप से "आरएम" कर सकते हैं। यह मददगार है।

find /usr/local/ -type f -newer <some latest old file>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.