मेरे पास 32-बिट सिस्टम है जो 64-बिट प्रोसेसर पर चलता है। पुन: स्थापित किए बिना मैं इसे सभी 64-बिट में कैसे परिवर्तित करूं? मैंने कहीं देखा है कि यह नए मल्टीचर्च फ्रेमवर्क के परिणामस्वरूप उल्लेखनीय है ।
मेरे पास 32-बिट सिस्टम है जो 64-बिट प्रोसेसर पर चलता है। पुन: स्थापित किए बिना मैं इसे सभी 64-बिट में कैसे परिवर्तित करूं? मैंने कहीं देखा है कि यह नए मल्टीचर्च फ्रेमवर्क के परिणामस्वरूप उल्लेखनीय है ।
जवाबों:
टीएल; डीआर: यह उल्लेखनीय है, लेकिन जटिल है। मैंने नीचे एक विकल्प दिया है।
अब लंबा विवरण , और इसे नमक के दाने के साथ लें, क्योंकि मैंने सबसे अच्छा मार्ग नहीं लिया होगा:
यह संभव है, और यहां मैंने पिछली दो रातों के लिए क्या किया है: एक विकी प्रविष्टि है जिसमें पुराने स्कूल के तरीके का वर्णन किया गया है जो बिना किसी आधार के समर्थन के हैं। यह टूटे हुए पैकेज को ठीक करने में मददगार है।
अपनी आधार प्रणाली को स्थानांतरित करने के लिए, यह करें :
$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
आपके कुछ पैकेज तो amd64 हैं, लेकिन अधिकांश i386 ही रहेंगे। apt-get upgradeकुछ पैकेजों का ध्यान apt-get -f installरखेगा , कुछ त्रुटियों की मरम्मत करेगा, लेकिन फिर भी अधिकांश पैकेज i386 ही रहेंगे। यदि आप इसे झेलना चाहते हैं, तो मुश्किल भाग को छोड़ दें;)
उपयोग dpkg --get-selections | grep :i386करने से आपके सभी पैकेज वापस आ जाएंगे, और आपको अभी भी माइग्रेट करना होगा।
मेरा अगला विचार यह करना था:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
लेकिन यह एक बुरा विचार निकला: कुछ पैकेज amd64 (जैसे libc6-i686) में उपलब्ध नहीं हैं, उपयुक्त-भ्रमित हो जाएगा, और दोनों संस्करणों में बहुत सारे पैकेज स्थापित किए जाएंगे। एप्टीट्यूड में बहुत सारे मैनुअल काम करने होते हैं।
अधिक कठिनाई: कुछ आवश्यक पैकेजों को प्रतिस्थापित किया जा सकता है, ताकि आपके पास स्थापना के लिए हमेशा बायनेरिज़ स्थापित रहें, लेकिन कुछ पैकेजों को हटाकर फिर से स्थापित करना होगा, जैसे मुझे टार के साथ यह समस्या थी। मैं संकुल को दूसरे सिस्टम पर भूल गया, के माध्यम से संकुल को निकाला ar p package.deb data.tar.gz | tar zxऔर फिर scpनिकाली गई फ़ाइलों को संपादित किया scp -r ./* root@other_computer:/, ताकि बायनेरिज़ फिर से उपलब्ध हों। कुल्ला और दोहराएं, और scpएड फ़ाइलों को ओवरराइट किया जाएगा।
इसके बदले मैं क्या करूंगा
जब भी मैंने सिस्टम स्विच किया, मैंने निम्नलिखित कार्य किए हैं:
बैक अप /home, /etc(और हो सकता है /var, /usr/localकुछ अन्य फाइलें जो आपने बदल दी हैं /root, ..., YMMV)।
स्थापित पैकेजों की एक सूची प्राप्त करें dpkg --get-selections > packagelistऔर परिणामी फ़ाइल packagelistको भी कॉपी करें ।
फिर डेबियन का एक साफ पुनर्स्थापना करें, सभी उपयोगकर्ताओं को फिर से बनाएं, शायद भूमिकाएं, आदि।
के साथ सभी पैकेजों को पुनर्स्थापित करें dpkg --set-selections < packagelist; apt-get -f install।
बैक अप निर्देशिकाओं, फ़ाइलों की प्रतिलिपि बनाएँ, और आप ज्यादातर काम कर रहे हैं।
उस दृष्टिकोण के लिए एक नकारात्मक पहलू: आपके सभी पैकेज, जिनमें लाइब्रेरी भी शामिल है, मैन्युअल रूप से इंस्टॉल किए जाएंगे, इसलिए उन्हें अनइंस्टॉल नहीं किया जाएगा, जब कोई पैकेज उन पर निर्भर नहीं करता है।
apt-mark showautoऑटो-इंस्टॉल्ड सूची को निर्यात करने और apt-mark autoउन्हें नए इंस्टॉलेशन में चिह्नित करने के लिए उपयोग कर सकते थे ।
x86_64, और परवाह नहीं है कि क्या मेरा सिस्टम पैकेज 64-बिट प्रोसेसर का बेहतर उपयोग नहीं कर रहा है। ? मैं 32-बिट OS भी चला रहा हूं। मुझे लगता है कि मैंने सोचा था कि मेरा प्रोसेसर 32-बिट था जब मैंने पहली बार स्थापित किया था :(
यहाँ अन्य उत्तर बताते हैं कि जबकि यह सैद्धांतिक रूप से संभव है, यह बहुत जटिल है और शायद प्रयास के लायक नहीं है। हालाँकि, आप एक क्लीन इन्स्टॉल कर सकते हैं और यदि आप अपना $HOMEसमान रखते हैं तो प्रक्रिया को अपेक्षाकृत दर्द रहित बना सकते हैं ।
सामान्य प्रक्रिया होगी
अपने इंस्टॉल किए गए पैकेजों की सूची और स्वचालित रूप से इंस्टॉल किए गए पैकेजों की सूची का बैकअप बनाएं।
dpkg --get-selections '*' > package.list
apt-mark showauto >auto.list
ध्यान दें कि आप आर्किटेक्चर का उपयोग करके आपके द्वारा स्थापित किसी भी पैकेज के नाम से वास्तुकला को हटाना चाह सकते हैं :
dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
यदि आपका /homeएक अलग विभाजन है, तो बस यह सुनिश्चित करें कि स्थापना प्रक्रिया के दौरान इसे प्रारूपित न करें। यदि यह एक अलग विभाजन पर नहीं है, तो एक बैकअप बनाएं जिसे आप बाद में से पुनर्स्थापित कर सकते हैं:
tar cvzf home_backup.tgz $HOME/
एक बार जब आप अपना नया सिस्टम स्थापित कर लेते हैं, तो लापता संकुल को स्थापित करें
sudo dpkg --set-selections < package.list
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-mark auto $(cat auto.list)
अपने $ घर को पुनर्स्थापित करें। Tgz फ़ाइल को कॉपी करें और इसे अपनी $ HOME निर्देशिका में निकालें:
tar xvzf home_backup.tgz
आप उन उपकरणों पर भी नज़र डालना चाहते हैं जो मिंट इसे आसान बनाने के लिए प्रदान करता है। वे सभी उबंटू पर भी स्थापित होने चाहिए।
यह सिद्धांत रूप में संभव है, लेकिन विश्वासघाती है। वर्तमान में डेबियन मल्टीकार मल्टीकार लिबास का समर्थन करता है, लेकिन बायनेरिज़ का नहीं। तो वहीं है।
सिस्टम मुख्य रूप से अपनी स्वयं की वास्तुकला को समझता है dpkg-architecture(जो वास्तव में एक पर्ल स्क्रिप्ट है, लेकिन यह आर्क जानकारी को निकालता है और इसे प्रदर्शित करता है), जो वास्तुकला को स्थापित करने में सक्षम होने का भी दावा करता है ।
किसी न किसी प्रक्रिया होगी:
libgcc1)dpkg-architecture -aamd64अपने आर्च को शिफ्ट करने के लिए उपयोग करें (नोट, यह जीसीसी के बारे में शिकायत कर सकता है)dpkgऔर निर्भरता के amd64 संस्करण को स्थापित करने वाला बलapt-getऔर कर्नेल सहित (नोट, यह एक बहुत शिकायत कर सकता है)apt-getये कदम इस बात पर आधारित हैं कि मैं डेबियन के डिजाइन के बारे में जानता हूं कि पिछले 12 वर्षों में लिनक्स डिस्ट्रोस के बीच इसका उपयोग लगभग विशेष रूप से किया गया है ( debtakeoverपहले इस्तेमाल किए जाने सहित ) और जो दृष्टिकोण मैं ले जाऊंगा। इसलिए अपने जोखिम पर इस पर विचार करें । चरण 4 के प्रयास के बाद आपका सिस्टम किसी भी समय अनुपयोगी हो सकता है debbootstrap। चरण 4 और 5 के लिए वैकल्पिक हो सकता है ।
सबसे महत्वपूर्ण बात, मैं अत्यधिक सुझाव देता हूं कि आप किसी भी चीज़ पर ध्यान देने से पहले वीएम पर यह कोशिश कर सकते हैं।
गुड लक, और मे द फोर्स विद यू ।
प्रश्न का उत्तर नहीं, लेकिन x86 से amd64 तक सभी पैकेजों को अपग्रेड करना मुश्किल हो सकता है, लेकिन आप कम से कम आसानी से amd64 कर्नेल पैकेज स्थापित कर सकते हैं, जो कम से कम आपको 64 बिट एप्लिकेशन और वर्चुअल मशीन और कंटेनर चलाने की अनुमति देगा () जो आपके लिए पर्याप्त हो सकता है)।
बस के साथ amd64 linux- छवि पैकेज स्थापित करें dpkg -i --force-architecture।
--force-architectureजरूरत नहीं है, और am364 कर्नेल i386 पर उपयुक्त माध्यम से स्थापित किया जा सकता है।
वहाँ काफी कुछ मैनुअल हैं, लेकिन शायद ही कोई शो वास्तव में क्या उम्मीद करता है। मैं डेबियन व्हीजी लैपटॉप पर यह लिख रहा हूं कि मैंने अभी 32 बिट से 64 तक उन्नयन किया है और यह वास्तव में काम करता है।
मैंने इन निर्देशों का पालन किया और वे वास्तव में उस पर सटीक थे जो आप वास्तव में सामना करेंगे:
http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html
एक सिफारिश यह है कि सिस्टम को पूरी प्रक्रिया से संचालित रखा जाए, तब तक रिबूट न करें जब तक कि आप सुनिश्चित न हों कि आपने सब कुछ माइग्रेट कर दिया है और जो कुछ भी निकाला गया था उसे फिर से स्थापित किया गया था (विशेष रूप से आवश्यक पैकेज), या आपको सिस्टम फिर से चालू नहीं मिलेगा।
Awk का उपयोग करने के विचार के बाद , मैंने उपयोग करना समाप्त कर दिया:
dpkg --get-selections \ # get the list
| grep -v deinstall \ # throw away deselected packages
| grep ':i386' \ # get the i386 arch packages
| sed 's/install//g' \ # drop 'install' to get list
| sed 's/:i386/:amd64/g' \ # replace i386 with amd64
| while read package; do \ # iterate over the result
apt-get -yf install $package; \ # install each one and fix dependencies
done
मुझे इसे कुछ बार चलाना था। dpkg --get-selectionsबस एक वर्णानुक्रम सूची है, इसलिए शीर्ष पर स्थित पैकेजों की आवश्यकता होती है, जिनके तल पर पैकेजों की आवश्यकता होगी। यदि आप यह देखना चाहते हैं कि कितने इंस्टॉल किए जा रहे हैं, तो लूप के dpkg --get-selections | grep amd64 | wc -lअंदर करें while।
मुझे इस मामले में बहुत कम अनुभव है, लेकिन मेरा मानना है कि आप सही हैं जब आप कहते हैं कि 32 से 64 तक परिवर्तित करना बहु-आर्च के साथ सक्षम होना चाहिए। मैं सतर्क होऊंगा कि इस नई प्रणाली का कितना अच्छा समर्थन है।
यहाँ एक दस्तावेज है जो मैंने पढ़ा है कि इस मामले पर चर्चा की, शायद यह आपकी मदद करेगा: https://wiki.ubuntu.com/Multarchs.ecec
तीसरे यूजर स्टोरीज पर ध्यान दें। यहाँ एक ही विषय के आसपास एक और लिंक दिया गया है: https://help.ubuntu.com/community/MultiArch
भले ही यह डेबियन और उबुनुतु के बीच अलग-अलग है, लेकिन यह एक मुख्य विशेषता है। जिसकी मैं कल्पना करता हूं कि उबंटू और डेबियन इस संरचना को जमीन पर लाने के लिए बारीकी से काम करेंगे, इससे पहले कि उबंटू दूर हो जाए और अपनी पसंद का कुछ कर सके।
सौभाग्य!