32-बिट (x86) डेबियन-आधारित प्रणाली को 64-बिट में कैसे परिवर्तित करें


36

मेरे पास 32-बिट सिस्टम है जो 64-बिट प्रोसेसर पर चलता है। पुन: स्थापित किए बिना मैं इसे सभी 64-बिट में कैसे परिवर्तित करूं? मैंने कहीं देखा है कि यह नए मल्टीचर्च फ्रेमवर्क के परिणामस्वरूप उल्लेखनीय है


5
मुझे इस सवाल के जवाब में दिलचस्पी है। मुझे 64 बिट सक्षम मशीन पर एक 32 बिट सिस्टम मिला है (जो अब 6+ साल पुराना है, लेकिन अभी भी चल रहा है)। एकमात्र कारण जब मैंने मूल रूप से 2007 में इस मशीन को स्थापित किया था, तब मैंने 32 बिट का उपयोग किया था, क्योंकि मैं इस पर 32 बिट अनुप्रयोग चलाना चाहता था। नए मल्टीकार के साथ, अगर मैं सही ढंग से समझूं, तो 64 बिट मशीन पर 32 बिट ऐप्स आसानी से इंस्टॉल किए जा सकते हैं। इसलिए, मट्ठे के लिए 64 बिट में परिवर्तित करना अच्छा होगा, लेकिन मुझे नहीं पता कि यह कितना कठिन होगा। @ VM का उपयोग करने का bahamat का सुझाव अच्छा लगता है। यदि मैं एक सफल रूपांतरण का प्रबंधन करता हूं तो मैं यहां उत्तर दूंगा।
फहीम मीठा


AU पर इसी तरह का प्रश्न: askubuntu.com/q/5018/178596
Wilf

जवाबों:


8

टीएल; डीआर: यह उल्लेखनीय है, लेकिन जटिल है। मैंने नीचे एक विकल्प दिया है।

अब लंबा विवरण , और इसे नमक के दाने के साथ लें, क्योंकि मैंने सबसे अच्छा मार्ग नहीं लिया होगा:

यह संभव है, और यहां मैंने पिछली दो रातों के लिए क्या किया है: एक विकी प्रविष्टि है जिसमें पुराने स्कूल के तरीके का वर्णन किया गया है जो बिना किसी आधार के समर्थन के हैं। यह टूटे हुए पैकेज को ठीक करने में मददगार है।

अपनी आधार प्रणाली को स्थानांतरित करने के लिए, यह करें :

$ 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

बैक अप निर्देशिकाओं, फ़ाइलों की प्रतिलिपि बनाएँ, और आप ज्यादातर काम कर रहे हैं।

उस दृष्टिकोण के लिए एक नकारात्मक पहलू: आपके सभी पैकेज, जिनमें लाइब्रेरी भी शामिल है, मैन्युअल रूप से इंस्टॉल किए जाएंगे, इसलिए उन्हें अनइंस्टॉल नहीं किया जाएगा, जब कोई पैकेज उन पर निर्भर नहीं करता है।


1
"मैं इसके बजाय क्या करूंगा" ... यार, मुझे यकीन था कि ओपी ने बिना किसी पुनर्स्थापना के पूछा: /
Braiam

@Braiam ओपी सबसे अधिक संभावना एक पुनर्स्थापना के बिना करना चाहता था। मैं बस अपने व्यक्तिगत अनुभव को रिपोर्ट कर रहा था। वैकल्पिक मार्ग मेरे लिए सरल है, और शायद मैंने सिस्टम को परिवर्तित करते समय कुछ गलतियां की हैं।
रेजिड्यूमन

6
स्वचालित रूप से स्थापित पैकेजों को चिह्नित करने के लिए, आप apt-mark showautoऑटो-इंस्टॉल्ड सूची को निर्यात करने और apt-mark autoउन्हें नए इंस्टॉलेशन में चिह्नित करने के लिए उपयोग कर सकते थे ।
एड्रिन क्लर्क

अपना अनुभव लिखने के लिए धन्यवाद। "यदि आप इससे जूझना चाहते हैं, तो मुश्किल हिस्से को छोड़ दें;)" क्या होगा यदि मेरा लक्ष्य सिर्फ सॉफ्टवेयर को विकसित करने में सक्षम होना है x86_64, और परवाह नहीं है कि क्या मेरा सिस्टम पैकेज 64-बिट प्रोसेसर का बेहतर उपयोग नहीं कर रहा है। ? मैं 32-बिट OS भी चला रहा हूं। मुझे लगता है कि मैंने सोचा था कि मेरा प्रोसेसर 32-बिट था जब मैंने पहली बार स्थापित किया था :(
जूनमैन

7

यहाँ अन्य उत्तर बताते हैं कि जबकि यह सैद्धांतिक रूप से संभव है, यह बहुत जटिल है और शायद प्रयास के लायक नहीं है। हालाँकि, आप एक क्लीन इन्स्टॉल कर सकते हैं और यदि आप अपना $HOMEसमान रखते हैं तो प्रक्रिया को अपेक्षाकृत दर्द रहित बना सकते हैं ।

सामान्य प्रक्रिया होगी

  1. अपने इंस्टॉल किए गए पैकेजों की सूची और स्वचालित रूप से इंस्टॉल किए गए पैकेजों की सूची का बैकअप बनाएं।

    dpkg --get-selections '*' > package.list
    apt-mark showauto >auto.list
    

    ध्यान दें कि आप आर्किटेक्चर का उपयोग करके आपके द्वारा स्थापित किसी भी पैकेज के नाम से वास्तुकला को हटाना चाह सकते हैं :

    dpkg --get-selections '*' | sed -e 's/:\(i386\|amd64\)//' > package.list
    
  2. यदि आपका /homeएक अलग विभाजन है, तो बस यह सुनिश्चित करें कि स्थापना प्रक्रिया के दौरान इसे प्रारूपित न करें। यदि यह एक अलग विभाजन पर नहीं है, तो एक बैकअप बनाएं जिसे आप बाद में से पुनर्स्थापित कर सकते हैं:

    tar cvzf home_backup.tgz $HOME/
    
  3. एक बार जब आप अपना नया सिस्टम स्थापित कर लेते हैं, तो लापता संकुल को स्थापित करें

    sudo dpkg --set-selections < package.list 
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-mark auto $(cat auto.list)
    
  4. अपने $ घर को पुनर्स्थापित करें। Tgz फ़ाइल को कॉपी करें और इसे अपनी $ HOME निर्देशिका में निकालें:

    tar xvzf home_backup.tgz
    

आप उन उपकरणों पर भी नज़र डालना चाहते हैं जो मिंट इसे आसान बनाने के लिए प्रदान करता है। वे सभी उबंटू पर भी स्थापित होने चाहिए।


4

यह सिद्धांत रूप में संभव है, लेकिन विश्वासघाती है। वर्तमान में डेबियन मल्टीकार मल्टीकार लिबास का समर्थन करता है, लेकिन बायनेरिज़ का नहीं। तो वहीं है।

सिस्टम मुख्य रूप से अपनी स्वयं की वास्तुकला को समझता है dpkg-architecture(जो वास्तव में एक पर्ल स्क्रिप्ट है, लेकिन यह आर्क जानकारी को निकालता है और इसे प्रदर्शित करता है), जो वास्तुकला को स्थापित करने में सक्षम होने का भी दावा करता है ।


चेतावनी: मुझे यह पता नहीं है कि यह न जाने कब से आया है !!!


किसी न किसी प्रक्रिया होगी:

  1. अपने सभी पुस्तकालयों के सबसे महत्वपूर्ण संस्करण को स्थापित करें (सबसे महत्वपूर्ण बात libgcc1)
  2. dpkg-architecture -aamd64अपने आर्च को शिफ्ट करने के लिए उपयोग करें (नोट, यह जीसीसी के बारे में शिकायत कर सकता है)
  3. सभी आवश्यक घटक डाउनलोड करें और चरणबद्ध करें (अगले देखें)
  4. dpkgऔर निर्भरता के amd64 संस्करण को स्थापित करने वाला बल
  5. आवश्यक बेस सिस्टम पैकेजों के amd64 वेरिएंट्स को स्थापित करने apt-getऔर कर्नेल सहित (नोट, यह एक बहुत शिकायत कर सकता है)
  6. रीबूट
  7. संभवतः बाकी सिस्टम को इसके साथ स्थापित करें apt-get

ये कदम इस बात पर आधारित हैं कि मैं डेबियन के डिजाइन के बारे में जानता हूं कि पिछले 12 वर्षों में लिनक्स डिस्ट्रोस के बीच इसका उपयोग लगभग विशेष रूप से किया गया है ( debtakeoverपहले इस्तेमाल किए जाने सहित ) और जो दृष्टिकोण मैं ले जाऊंगा। इसलिए अपने जोखिम पर इस पर विचार करें । चरण 4 के प्रयास के बाद आपका सिस्टम किसी भी समय अनुपयोगी हो सकता है debbootstrap। चरण 4 और 5 के लिए वैकल्पिक हो सकता है ।

सबसे महत्वपूर्ण बात, मैं अत्यधिक सुझाव देता हूं कि आप किसी भी चीज़ पर ध्यान देने से पहले वीएम पर यह कोशिश कर सकते हैं।

गुड लक, और मे द फोर्स विद यू


3

प्रश्न का उत्तर नहीं, लेकिन x86 से amd64 तक सभी पैकेजों को अपग्रेड करना मुश्किल हो सकता है, लेकिन आप कम से कम आसानी से amd64 कर्नेल पैकेज स्थापित कर सकते हैं, जो कम से कम आपको 64 बिट एप्लिकेशन और वर्चुअल मशीन और कंटेनर चलाने की अनुमति देगा () जो आपके लिए पर्याप्त हो सकता है)।

बस के साथ amd64 linux- छवि पैकेज स्थापित करें dpkg -i --force-architecture


1
--force-architectureजरूरत नहीं है, और am364 कर्नेल i386 पर उपयुक्त माध्यम से स्थापित किया जा सकता है।
जोर्डन

3

वहाँ काफी कुछ मैनुअल हैं, लेकिन शायद ही कोई शो वास्तव में क्या उम्मीद करता है। मैं डेबियन व्हीजी लैपटॉप पर यह लिख रहा हूं कि मैंने अभी 32 बिट से 64 तक उन्नयन किया है और यह वास्तव में काम करता है।

मैंने इन निर्देशों का पालन किया और वे वास्तव में उस पर सटीक थे जो आप वास्तव में सामना करेंगे:

http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html

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


1
वास्तव में क्या शामिल है, यह पढ़ने के लिए दिलचस्प है, लेकिन यह पढ़ने के बाद, मुझे लगता है कि मैं एक पुनर्स्थापना के साथ बेहतर हूं। धन्यवाद।
फहीम मीठा

वह लिंक मेरे लिए काम नहीं कर रहा है - क्या संसाधन स्थानांतरित हो गया है?
टोबी स्पाइट

अरे हाँ, क्या आपने तारीख देखी? मैंने लिखा है कि 2013 में, सामान अक्सर 6 वर्षों में वेब पर गायब हो जाता है। अफसोस की बात है कि वेब में अभी भी बहुत बुनियादी कार्य नहीं है: लिंक पर क्लिक करने से पहले टूटे हुए लिंक को दिखाना।
निग्रेट्रू

1

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


-1

मुझे इस मामले में बहुत कम अनुभव है, लेकिन मेरा मानना ​​है कि आप सही हैं जब आप कहते हैं कि 32 से 64 तक परिवर्तित करना बहु-आर्च के साथ सक्षम होना चाहिए। मैं सतर्क होऊंगा कि इस नई प्रणाली का कितना अच्छा समर्थन है।

यहाँ एक दस्तावेज है जो मैंने पढ़ा है कि इस मामले पर चर्चा की, शायद यह आपकी मदद करेगा: https://wiki.ubuntu.com/Multarchs.ecec

तीसरे यूजर स्टोरीज पर ध्यान दें। यहाँ एक ही विषय के आसपास एक और लिंक दिया गया है: https://help.ubuntu.com/community/MultiArch

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

सौभाग्य!

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