मैं हर किसी को यह कहते हुए देखता हूं कि इसे अजीब नकल आदि के साथ कैसे ठीक किया जाए, लेकिन किसी ने वास्तव में ऐसा क्यों कहा समस्या होती है।
तो मुझे समझाने की, आप में से जो मुझे पसंद करते हैं, वे केवल सिस्टम फ़ाइलों के साथ गड़बड़ नहीं करना चाहते हैं क्योंकि SO पर किसी ने उन्हें ऐसा बताया है।
समस्या यह है कि:
- कई सिस्टम स्क्रिप्ट्स में python3 shebang का हार्डकोड है। आप इसे स्वयं देख सकते हैं:
~$ grep -R "\#\!/usr/bin/python3" /usr/lib/*
/usr/lib/cnf-update-db:
/usr/lib/command-not-found:
/usr/lib/cups/filter/pstotiff:
/usr/lib/cups/filter/rastertosag-gdi:
grep: /usr/lib/cups/backend/cups-brf: Permission denied
/usr/lib/cups/backend/hpfax:
/usr/lib/language-selector/ls-dbus-backend:
/usr/lib/python3/dist-packages/language_support_pkgs.py:
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:
/usr/lib/python3/dist-packages/cupshelpers/installdriver.py:
/usr/lib/python3/dist-packages/cupshelpers/openprinting.py:
/usr/lib/python3/dist-packages/cupshelpers/xmldriverprefs.py:
/usr/lib/python3/dist-packages/cupshelpers/smburi.py:
/usr/lib/python3/dist-packages/cupshelpers/ppds.py:
/usr/lib/python3/dist-packages/cupshelpers/debug.py:
/usr/lib/python3/dist-packages/DistUpgrade/dist-upgrade.py:
/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py:
/usr/lib/python3/dist-packages/CommandNotFound/db/db.py:
/usr/lib/python3/dist-packages/Quirks/quirkreader.py:
grep: /usr/lib/ssl/private: Permission denied
/usr/lib/system-service/system-service-d:
/usr/lib/ubuntu-release-upgrader/check-new-release-gtk:
/usr/lib/ubuntu-release-upgrader/do-partial-upgrade:
/usr/lib/ubuntu-release-upgrader/check-new-release:
/usr/lib/update-notifier/package-data-downloader:
/usr/lib/update-notifier/backend_helper.py:
/usr/lib/update-notifier/apt_check.py:
/usr/lib/update-notifier/apt-check:
- अजगर उपयुक्त पैकेज
python-apt
/ python3-apt
एक सिस्टम पैकेज है, इसलिए यह डिफ़ॉल्ट सिस्टम अजगर के लिए है
इस प्रकार, स्क्रिप्ट को वर्तमान में हमेशा के लिए संस्करण से जोड़ा जाएगा python3
, लेकिन असफल क्योंकि उपयुक्त पैकेज मौजूद नहीं है।
सामान्य समाधान: डिफ़ॉल्ट python3
लिंक को कभी भी न बदलें । कभी। यह python
लिंक पर भी लागू होता है - यदि Python2 में एक ऐप कुछ पुराने वाक्यविन्यास तत्वों के साथ लिखा गया था जो Python3 में काम नहीं करते हैं, तो ऐप काम नहीं करेगा।
[मेरा टर्मिनल इस तरह टूट गया क्योंकि मैं टर्मिनेटर का उपयोग करता हूं, जो स्पष्ट रूप से Python2.7 में लिखा गया है जो Python3 के साथ संगत नहीं है।]
यहां प्रस्तुत समाधान या तो उपयुक्त पैकेज फ़ाइलों को कॉपी / लिंक करने या python3
लिंक बदलने का सुझाव देते हैं ।
आइए दोनों का विश्लेषण करें:
- उपयुक्त पैकेज की प्रतिलिपि बनाना / लिंक करना
यह एक समस्या नहीं होनी चाहिए क्योंकि Python3.4 के आसपास से सभी अजगर लिपियाँ नए संस्करणों पर भी काम करती हैं।
अब तक। लेकिन यह भविष्य में टूट सकता है - अगर आप अपने सिस्टम को लंबे समय तक बनाए रखें।
python3
लिंक वापस बदलना
यह एक महान समाधान है क्योंकि हम "कभी भी लिंक नहीं बदलने" पर वापस आ सकते हैं
"लेकिन मुझे सिर्फ टाइप करना पसंद है python
!" - मुझे भी यह पसंद है! कि कैसे मैं इस समस्या को पहली जगह में मिल गया!
सामान्य तौर पर, आपको सिस्टम लिंक को मैन्युअल रूप से बदलने से बचना चाहिए - update-alternatives
इसके बजाय विभिन्न संस्करणों को लिंक करने के लिए उपयोग करें । यह कई संस्करणों के साथ किसी भी ऐप पर लागू होता है। यह अभी भी उन सिस्टम स्क्रिप्ट को तोड़ देगा (क्योंकि यह लिंक को बदलता है), लेकिन आप आसानी से आगे और पीछे स्विच कर सकते हैं, बिना यह चिंता किए कि क्या आप लिंक डालते हैं और सही क्रम में भाग्य बनाते हैं या टाइपो बनाते हैं।
आपके लिंक या उपनाम के लिए python
/ से अन्य नाम का उपयोग करने पर विचार करें python3
।
या अपनी जोड़ें python
/ python3
प्रणाली लिंक बदले बिना, पथ (आभासी वातावरण के लिए, बस की तरह) के लिए लिंक।