কীভাবে একটি 32-বিট (x86) ডেবিয়ান-ভিত্তিক সিস্টেমটিকে 64-বিটে রূপান্তর করা যায়


36

আমার একটি 32-বিট সিস্টেম রয়েছে যা একটি 64-বিট প্রসেসরের উপর চলে। পুনরায় ইনস্টল না করে কীভাবে আমি এটিকে সমস্ত -৪৪-বিটে রূপান্তর করব? আমি কোথাও দেখেছি যে এটি নতুন মাল্টিয়ার্ক কাঠামোর ফলস্বরূপ কার্যকর ।


5
আমি এই প্রশ্নের উত্তর আগ্রহী। আমি একটি 64 বিট সক্ষম মেশিনে একটি 32 বিট সিস্টেম পেয়েছি (যা এখন 6+ বছরের পুরানো, তবে এখনও মুহুর্তে চলছে)। 2007 সালে আমি মূলত এই মেশিনটি ইনস্টল করার সময় আমি 32 বিট ব্যবহার করেছি, কারণ আমি এতে 32 বিট অ্যাপ্লিকেশন চালাতে চেয়েছিলাম। নতুন মাল্টার্কের সাহায্যে, যদি আমি সঠিকভাবে বুঝতে পারি তবে 32 বিট অ্যাপ্লিকেশনগুলি সহজেই একটি 64 বিট মেশিনে ইনস্টল করা যায়। সুতরাং, হুইজিটির জন্য 64 বিটে রূপান্তর করা ভাল লাগবে তবে আমি জানি না এটি কতটা কঠিন। @ বাহামতের ভিএম ব্যবহারের পরামর্শটি ভাল লাগছে। যদি আমি একটি সফল রূপান্তর পরিচালনা করি তবে আমি এখানে উত্তর দেব।
ফাহিম মিঠা


উত্তর:


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,, ..., ওয়াইএমএমভি)

ইনস্টল করা প্যাকেজগুলির একটি তালিকা পান dpkg --get-selections > packagelistএবং ফলস্বরূপ ফাইলটি অনুলিপি করুন packagelist

তারপরে ডেবিয়ানের একটি পরিষ্কার পুনরায় ইনস্টল করুন, সমস্ত ব্যবহারকারীকে আবার তৈরি করুন, সম্ভবত ভূমিকা ইত্যাদি

এর সাথে সমস্ত প্যাকেজ পুনরায় ইনস্টল করুন dpkg --set-selections < packagelist; apt-get -f install

ব্যাকআপ ডিরেক্টরিগুলি, ফাইলগুলি কপি করুন এবং আপনি বেশিরভাগ কাজ শেষ করেছেন।

এই পদ্ধতির এক নেতিবাচক দিক: গ্রন্থাগারগুলি সহ আপনার সমস্ত প্যাকেজগুলি ম্যানুয়ালি ইনস্টল হিসাবে চিহ্নিত করা হবে, সুতরাং সেগুলি আনইনস্টল করা হবে না, যখন কোনও প্যাকেজ তাদের উপর আর নির্ভর করে না।


1
"পরিবর্তে আমি কি করব" ... মানুষ, আমি নিশ্চিত যে ওপি পুনরায় ইনস্টল না করেই জিজ্ঞাসা করেছিল: /
ব্রেইম

@ ব্রায়াম ওপি সম্ভবত পুনরায় ইনস্টল না করে এটি করতে চেয়েছিল। আমি এটা করে আমার ব্যক্তিগত অভিজ্ঞতার কথা বলছিলাম। বিকল্প রুটটি আমার কাছে সহজ, এবং সিস্টেমটি রূপান্তর করার সময় আমি কিছু ভুল করেছি।
রেসিডিয়াম

6
স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজগুলি চিহ্নিত করতে, আপনি স্বয়ংক্রিয়ভাবে ইনস্টল apt-mark showautoকরা তালিকাটি রফতানি করতে এবং apt-mark autoসেগুলিকে নতুন ইনস্টলেশনতে চিহ্নিত করতে ব্যবহার করতে পারেন ।
অ্যাড্রিয়েন ক্লার্ক

আপনার অভিজ্ঞতা লেখার জন্য ধন্যবাদ। "যদি আপনি এটি মোকাবেলা করতে চান, তবে কৌশলযুক্ত অংশটি এড়িয়ে যান;)" আমার লক্ষ্যটি যদি কেবলমাত্র সফটওয়্যার বিকাশ করতে সক্ষম হয় x86_64এবং আমার সিস্টেম প্যাকেজগুলি 64৪-বিট প্রসেসরটি সর্বোত্তমভাবে ব্যবহার না করে তবে যত্নশীল হবেন না কী? ? আমি একটি 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. আপনার $ হোম পুনরুদ্ধার করুন। টিজিজেড ফাইলটি অনুলিপি করুন এবং এটি আপনার $ হোম ডিরেক্টরিতে বের করুন:

    tar xvzf home_backup.tgz
    

আপনি এটিকে সহজ করার জন্য পুদিনা যে সরঞ্জামগুলি সরবরাহ করে তার দিকে নজর রাখতেও পারেন। সেগুলি উবুন্টুতেও ইনস্টলযোগ্য হবে।


4

এটি তাত্ত্বিকভাবে সম্ভব, তবে সম্ভবত বিশ্বাসঘাতক। ডিবিয়ান মাল্টিআরচ বর্তমানে মাল্টার্ক লিবসকে সমর্থন করে তবে বাইনারিগুলি নয়। সুতরাং যে আছে।

সিস্টেমটি প্রাথমিকভাবে তার নিজস্ব আর্কিটেকচারটি বুঝতে পারে dpkg-architecture(যা আসলে পার্ল স্ক্রিপ্ট, তবে এটি খিলান তথ্যটি বের করে এবং এটি প্রদর্শন করে), যা আর্কিটেকচারটি সেট করতে সক্ষম বলেও দাবি করে ।


সতর্কতা: আমি এটি ইতিবাচকভাবে গ্রহণ করি নি !!!


মোটামুটি প্রক্রিয়াটি হ'ল:

  1. আপনার সমস্ত লাইব্রেরির মাল্টিআরচ বৈকল্পিক ইনস্টল করুন (সর্বাধিক গুরুত্বপূর্ণ libgcc1)
  2. dpkg-architecture -aamd64আপনার খিলান স্থানান্তর করতে ব্যবহার করুন (দ্রষ্টব্য, এটি জিসিসি সম্পর্কে অভিযোগ করতে পারে)
  3. সমস্ত প্রয়োজনীয় উপাদানগুলি ডাউনলোড এবং মঞ্চ করুন (পরবর্তী দেখুন)
  4. Amd64 বৈকল্পিক dpkgএবং নির্ভরতা ইনস্টল করার জন্য জোর করে
  5. apt-getকার্নেল সহ প্রয়োজনীয় বেস সিস্টেম প্যাকেজগুলির amd64 ভেরিয়েন্টগুলি ইনস্টল করার জন্য জোর করুন (দ্রষ্টব্য, এটি একটি LOT অভিযোগ করতে পারে)
  6. রিবুট
  7. সম্ভবত সিস্টেমটি দিয়ে বাকিটি ইনস্টল করুন apt-get

এই পদক্ষেপগুলি গত 12 বছর ধরে ( debtakeoverআগে ব্যবহার সহ ) এবং আমি যে পদ্ধতি গ্রহণ করব সে সম্পর্কে ডিবিয়ান এটি প্রায় একচেটিয়াভাবে লিনাক্স ডিস্ট্রোজের মধ্যে ব্যবহার করেছে এবং যে পদ্ধতির বিষয়ে আমি জানি তার উপর ভিত্তি করে । সুতরাং এটি আপনার নিজের ঝুঁকিতে বিবেচনা করুন । পদক্ষেপ 4 চেষ্টা করার পরে আপনার সিস্টেমটি যে কোনও সময় অকেজো হয়ে যেতে পারে 4 ও ৫ ধাপের বিকল্প হতে পারে debbootstrap

সর্বাধিক গুরুত্বপূর্ণ, আমি আপনার যত্ন নেওয়ার কোনও বিষয় করার আগে একটি ভিএম এ চেষ্টা করার পরামর্শ দিচ্ছি।

শুভকামনা, এবং বাহিনী আপনার সাথে থাকুক


3

প্রশ্নের উত্তর নয়, তবে x86 থেকে amd64 এ সমস্ত প্যাকেজ আপগ্রেড করা কঠিন হতে পারে তবে আপনি কমপক্ষে সহজেই amd64 কার্নেল প্যাকেজটি ইনস্টল করতে পারেন যা আপনাকে কমপক্ষে bit৪ বিট অ্যাপ্লিকেশন এবং ভার্চুয়াল মেশিন এবং পাত্রে চালানোর অনুমতি দেয় ( যা আপনার প্রয়োজনের জন্য যথেষ্ট হতে পারে)।

মাত্র amd64 লিনাক্স-চিত্র প্যাকেজটি ইনস্টল করুন dpkg -i --force-architecture


1
--force-architectureপ্রয়োজন নেই এবং amd64 কার্নেলটি i386-এ অ্যাপের মাধ্যমে ইনস্টল করা যেতে পারে।
জর্ডানম

3

সেখানে বেশ কয়েকটি ম্যানুয়াল রয়েছে, তবে সত্যিই কী আশা করা যায় তা খুব কমই দেখাতে পারে। আমি এটি একটি ডেবিয়ান হুইজি ল্যাপটপে লিখছি যা আমি সবেমাত্র 32 বিট থেকে 64 আপগ্রেড করা শেষ করেছি এবং এটি সত্যই কার্যকর হয়।

আমি এই নির্দেশাবলী অনুসরণ করেছিলাম এবং আপনি আসলে কী মুখোমুখি হবেন সে সম্পর্কে তারা সত্যই সঠিক ছিল:

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

একটি সুপারিশটি হ'ল পুরো প্রক্রিয়াটি সিস্টেমকে চালিত করে রাখা, আপনি সমস্ত কিছু স্থানান্তরিত করেছেন এবং মুছে ফেলা সমস্ত কিছু আবার ইনস্টল করা হয়েছে (বিশেষত প্রয়োজনীয় প্যাকেজগুলি) আপনি নিশ্চিত না হয়ে পুনরায় বুট করবেন না, বা সিস্টেমটি আবার চালু হবে না।


1
আসলে কী জড়িত তা পড়ার জন্য আকর্ষণীয়, তবে এটি পড়ার পরে, আমি মনে করি আমি পুনঃস্থাপনের মাধ্যমে আরও ভাল। ধন্যবাদ।
ফাহিম মিঠা

এই লিঙ্কটি আমার পক্ষে কাজ করছে না - সংস্থানটি কি সরানো হয়েছে?
টবি স্পিড

হ্যাঁ, আপনি তারিখটি দেখেছেন? আমি লিখেছি যে ২০১৩ সালে স্টাফগুলি প্রায়শই ওয়েবে 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 তে রূপান্তর করেন তখন মাল্টি-আর্চ দিয়ে সক্ষম হওয়া উচিত বলে আপনি সঠিক ছিলেন believe এই নতুন সিস্টেমটি কতটা সমর্থিত তা সম্পর্কে আমি সতর্ক থাকব।

আমি এখানে যে নথিগুলি পড়েছিলাম সেগুলির মধ্যে একটি যা এখানে আলোচিত হয়েছিল, সম্ভবত এটি আপনাকে সহায়তা করবে: https://wiki.ubuntu.com/ মাল্টিয়ার্কস্পেক

তৃতীয় ব্যবহারকারী গল্পগুলি লক্ষ্য করুন। এখানে একই বিষয়ের চারপাশে আরেকটি লিঙ্ক এখানে দেওয়া হয়েছে: https://help.ubuntu.com/commune/M মাল্টিআর্ক ch

যদিও এটি ডেবিয়ান এবং উবুনুতুর মধ্যে আলাদা বাচ্চা হতে পারে তবে এটি একটি মূল বৈশিষ্ট্য। যা আমি কল্পনা করব যে উবুন্টু এবং দেবিয়ান এই কাঠামোটি জমিনে কাজ করার জন্য নিবিড়ভাবে কাজ করবে উবুন্টু তাদের নিজের মতো করে কিছুটা টেনে নিয়ে যাওয়ার আগে এবং তার নিজের পছন্দমতো কিছু করতে পারে।

শুভকামনা!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.