আমি কীভাবে একটি De৪-বিট দেবিয়ান / উবুন্টুতে 32-বিট প্রোগ্রাম চালাব?


74

আমার একটি 64-বিট (amd64 ওরফে x86_64) ডেবিয়ান বা উবুন্টু ইনস্টলেশন রয়েছে। আমার মাঝে মাঝে 32-বিট (i386 / i686) প্রোগ্রাম চালানো দরকার বা 32-বিট সিস্টেমের জন্য প্রোগ্রামগুলি সংকলন করতে হবে। আমি কীভাবে ন্যূনতম গোলমাল দিয়ে এটি করতে পারি?

বোনাস: আমি যদি বিতরণটির কোনও পুরানো বা নতুন প্রকাশের সাথে চালাতে বা পরীক্ষা করতে চাই?


সম্ভাব্য একই উবুন্টু জিজ্ঞাসা করুন: askubuntu.com/questions/359156/...
সিরো Santilli新疆改造中心法轮功六四事件

উত্তর:


52

স্থানীয় সমর্থন

যেহেতু উবুন্টু ১১.০৪ এবং ডেবিয়ান হুইজি (,.০), দেবিয়ান এবং উবুন্টুর একাধিক সমর্থন রয়েছে: আপনি একই সিস্টেমে x86_32 (i386) এবং x86_64 (amd64) প্যাকেজগুলি সোজা উপায়ে মিশ্রিত করতে পারেন। এই হিসাবে পরিচিত হয় multiarch সমর্থন দেখুন warl0ck এর উত্তর আরো বিস্তারিত জানার জন্য।

পুরানো রিলিজে, ডিবিয়ান এবং উবুন্টু বেশ কয়েকটি 32-বিট লাইব্রেরি সহ amd64 এ পাঠায়। 32-বিট লাইব্রেরিগুলির একটি বেসিক সেট এবং সম্ভবত এটির উপর নির্ভরশীল অন্যান্য প্যাকেজগুলির জন্য প্যাকেজটি ইনস্টল করুন । আপনার 32-বিট এক্সিকিউটেবলগুলি কেবলমাত্র আপনার সমস্ত প্রয়োজনীয় লাইব্রেরি থাকলে চালানো উচিত। বিকাশের জন্য, ইনস্টল করুন এবং আবার সম্ভবত অন্যান্য প্যাকেজগুলি যেমন এর উপর নির্ভর করে । আপনি এছাড়াও দরকারী এবং ডেবিয়ান পেতে পারেন। Ix86 এর জন্য সংকলন করতে gcc বিকল্পটি পাস করুন ।ia32-libs Ia32-libs ইনস্টল করুনgcc-multilib Gcc-multilib ইনস্টল করুনg++-multilibbinutils-multiarch বাইনুটিলেস-মাল্টিআার্ক ইনস্টল করুনia32-libs-dev-m32

মনে রাখবেন যে আপনি 32৪-বিট ব্যবহারকারী মোডের উপাদানগুলি ইনস্টল না করেই a৪-বিট কার্নেল চালাচ্ছেন কিনা uname -mতা এখনও প্রদর্শিত হবে x64_64। নীচে বর্ণিত শ্রুট এটি যত্ন করে।

Schroot

এই বিভাগটি একটি আরও লিনাক্স বিতরণ "ভিতরে" ডেবিয়ান-মতো বিতরণ ইনস্টল করার জন্য গাইড। এটি একটি 64-বিট উবুন্টুর ভিতরে 32-বিট উবুন্টু ইনস্টল করার শর্তে বলা হয়, তবে অন্যান্য পরিস্থিতিতে যেমন সামান্য পরিবর্তনের সাথে প্রয়োগ করা উচিত যেমন ডেবিয়ান স্থিতিশীল অভ্যন্তরে দেবিয়ান অস্থির ইনস্টল করা বা তার বিপরীতে।

ভূমিকা

ধারণাটি একটি সাবট্রিতে একটি বিকল্প বিতরণ ইনস্টল করা এবং এটি থেকে চালানো হবে। আপনি সেইভাবে একটি 64-বিট সিস্টেমে 32-বিট সিস্টেম ইনস্টল করতে পারেন, বা আপনার বিতরণের আলাদা প্রকাশ করতে পারেন, বা প্যাকেজগুলির বিভিন্ন সেট ইনস্টল করে একটি পরীক্ষার পরিবেশ।

chrootকমান্ড এবং সিস্টেম কল ফাইলসিস্টেম ডিরেক্টরিটি গাছের সাবট্রি অবধি সীমিত সে সম্পর্কে একটি দৃশ্য সঙ্গে একটি প্রক্রিয়া শুরু হয়। ডেবিয়ান এবং উবুন্টু শিপ স্ক্রুট , একটি ইউটিলিটি যা আরও ব্যবহারযোগ্য উপ-পরিবেশ তৈরি করতে এই বৈশিষ্ট্যটির চারপাশে আবৃত

ইনস্টল করুন schrootপ্যাকেজ স্ক্রুট ইনস্টল করুন ( ডেবিয়ান ) এবং debootstrapপ্যাকেজ ডিবুটস্ট্র্যাপ ইনস্টল করুন ( ডেবিয়ান )। কেবলমাত্র বিকল্প বিতরণ ইনস্টল করার জন্য ডিবুটস্ট্র্যাপ প্রয়োজন এবং পরে এটি মুছে ফেলা যায়।

স্ক্রুট সেট আপ করুন

এই উদাহরণটি বর্ণনা করে যে কীভাবে একটি 32-বিট উবুন্টু 10.04LTS (লুসিড লিঙ্কস) বিকল্প পরিবেশ স্থাপন করা যায়। একই ধরণের সেটআপটি দেবিয়ান এবং উবুন্টুর অন্যান্য প্রকাশের সাথে কাজ করা উচিত। /etc/schroot/chroot.d/lucid32নিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :

[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin

লাইনটি directory=/32স্ক্রুটকে জানায় যেখানে আমরা 32-বিট ইনস্টলেশনের ফাইলগুলি রাখব। লাইনটি username=yourusernameবলেছে যে ব্যবহারকারীকে yourusernameস্ক্রুট ব্যবহারের অনুমতি দেওয়া হবে। লাইনটি groups=users,adminবলে যে উভয় গ্রুপের ব্যবহারকারীদেরই স্ক্রুট ব্যবহারের অনুমতি দেওয়া হবে; আপনি একটি users=…নির্দেশও রাখতে পারেন।

নতুন বিতরণ ইনস্টল করুন

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

mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu

আপনার প্রায় ইতিমধ্যে একটি ওয়ার্কিং সিস্টেম রয়েছে; এরপরে যা হয় তা সামান্য বর্ধন। /32/etcযখন আপনি এটি চালান তখন শ্রুত স্বয়ংক্রিয়ভাবে কয়েকটি ফাইল ওভাররাইট করে, বিশেষত ডিএনএস কনফিগারেশন এবং অন্যান্য /etc/resolv.confডাটাবেসে থাকা ব্যবহারকারী ডাটাবেস /etc/passwd(এটি ওভাররাইড করা যায়, ডকুমেন্টেশন দেখুন)। আরও কয়েকটি ফাইল রয়েছে যা আপনি নিজে নিজে একবারে অনুলিপি করতে চান:

cp -p /etc/apt/apt.conf /32/etc/apt/      # for proxy settings
cp -p /etc/apt/sources.list /32/etc/apt/  # for universe, security, etc
cp -p /etc/environment /32/etc/           # for proxy and locale settings
cp -p /etc/sudoers /32/etc/               # for custom sudo settings

কোনও ফাইল /etc/mtabবা /etc/fstabক্রুটে থাকবে না । আমি mountক্রুটটিতে ম্যানুয়ালি কমান্ডটি ব্যবহার করার পরামর্শ দিচ্ছি না , বাইরে থেকে এটি করুন। তবে যুক্তি /etc/mtabযেমন dfযুক্তিসঙ্গতভাবে তৈরি করার জন্য যথেষ্ট পরিমাণে তৈরি করুন ।

ln -s /proc/mounts /32/etc/mtab

সঙ্গে directoryধরন, schroot সঞ্চালন করা হবে বেঁধে মাউন্ট : ডিরেক্টরি একটা সংখ্যা, অর্থাত্ সেই ডিরেক্টরি পিতা বা মাতা ইনস্টলেশন সাথে ভাগ করা হবে /proc, /dev, /home, /tmp

ক্রুটে সেবা

এখানে বর্ণিত হিসাবে, একটি স্ক্রুট ডেমন চালানোর জন্য উপযুক্ত নয়। স্ক্রুট থেকে প্রস্থান করার সময় স্ক্রুটের প্রোগ্রামগুলি হত্যা করা হবে। আপনি যদি এটি আরও স্থায়ী হতে চান এবং "প্যারেন্ট" ইনস্টলমেন্টে স্থায়ী বাইন্ড মাউন্টগুলি সেট আপ করেন তবে "ডিরেক্টরি" স্ক্রুটটির পরিবর্তে একটি "প্লেইন" স্ক্রুট ব্যবহার /etc/fstabকরুন।

ডেবিয়ান এবং উবুন্টুতে, পরিষেবাগুলি স্বয়ংক্রিয়ভাবে ইনস্টলেশন শুরু হয়। এটি এড়াতে (যা ক্রুটের বাইরে চলমান পরিষেবাগুলিকে ব্যাহত করতে পারে, বিশেষত নেটওয়ার্ক পোর্টগুলি ভাগ করে নেওয়া হয়েছে), ক্রুটে সার্ভিস না চালানোর একটি নীতি প্রতিষ্ঠা করুন। নিম্নলিখিত স্ক্রিপ্টটি হিসাবে রাখুন /32/usr/sbin/policy-rc.dএবং এটি কার্যকর ( chmod a+rx /32/usr/sbin/policy-rc.d)।

#!/bin/sh
## Don't start any service if running in a chroot.
## See /usr/share/doc/sysv-rc/README.policy-rc.d.gz
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
  exit 101
fi

নতুন সিস্টেমের জনসংখ্যা দিন

এখন আমরা ক্রট ব্যবহার শুরু করতে পারি। আপনি এই মুহুর্তে আরও কয়েকটি প্যাকেজ ইনস্টল করতে চাইবেন।

schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...

আপনাকে কয়েকটি স্থানীয় অবস্থান উত্পন্ন করার প্রয়োজন হতে পারে

locale-gen en_US en_US.utf8

যদি স্ক্রুটটি উবুন্টু 8.04 (হার্ডি) এর মতো পুরানো রিলিজের জন্য হয় তবে মনে রাখবেন যে প্যাকেজ উবুন্টু-স্ট্যান্ডার্ডটি এমটিএতে টানছে। nullmailerডিফল্ট পরিবর্তে নির্বাচন করুন postfix(আপনি নিজের ক্রুটটি মেল প্রেরণ করতে চাইতে পারেন তবে আপনি এটি অবশ্যই কোনও পেতে চান না)।

সামনে যাচ্ছি

আরও তথ্যের জন্য schrootম্যানুয়াল , স্ক্রুট এফএকিউ এবং schroot.confম্যানুয়ালটি দেখুন । শ্রুট দেবিয়ান অটোবিল্ডার (বিল্টড) প্রকল্পের অংশডাবুটস্ট্র্যাপ সম্পর্কে উবুন্টু সম্প্রদায় পৃষ্ঠায় অতিরিক্ত দরকারী টিপস থাকতে পারে ।

ভার্চুয়াল মেশিন

আপনি বিকল্প পরিবেশের সম্পূর্ণ বিচ্ছিন্নতা প্রয়োজন হয়, তাহলে যেমন একটি ভার্চুয়াল মেশিন ব্যবহার সাহায্যে KVM ( qemu-kvm- র Qemu-kvm ইনস্টল করুন ) অথবা VirtualBox


@ গিলস এই [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]শর্তটি কী করে তার একটি ব্যাখ্যা আপনি যুক্ত করতে পারেন ?
ফাহিম মিঠা

1
@ ফাহিমমিঠা এটি স্ক্রিপ্টটি ক্রোটে চলছে কিনা তা পরীক্ষা করে । এটি সেখানে স্ট্যান্ডলোন সিস্টেম হিসাবে ক্রুট ইনস্টলেশন বুট করার জন্য সমর্থন করে।
গিলস

আমি users=faheemআপনার উদাহরণের মতো একটি লাইন যুক্ত করার পরামর্শ দিচ্ছি । ডিফল্টরূপে, আমার পক্ষে কমপক্ষে, আমি ব্যবহারকারী গোষ্ঠীর সদস্য নই। আমি অবশ্য আশা করতাম
ফাহিম মিঠা

25

যেহেতু উবুন্টু ১১.০৪ (ন্যাটি) এবং ডেবিয়ান .0.০ (হুইজি) মাল্টিআর্ক সমর্থন প্রবর্তন করেছে , 32-বিট এবং 64-বিট লাইব্রেরি একটি সিস্টেমে সহাবস্থান করতে পারে। একটি 32-বিট লাইব্রেরি libXX ইনস্টল করতে, প্রথমে আপনার সিস্টেমে প্রয়োজনীয় 32 বিট আর্কিটেকচার যুক্ত করুন:

উবুন্টুর জন্য:

sudo dpkg --foreign-architecture i386

এবং ডেবিয়ানদের জন্য:

sudo dpkg --add-architecture i386

তারপরে 32 বিট লাইব্রেরি ইনস্টল করুন:

sudo apt-get install libXX:i386

Ia32-libs প্যাকেজ। উবুন্টু 12.04 যথাযথ হিসাবে, এটিতে আর কোনও লাইব্রেরি নেই, এটি কেবল libXX:i386প্যাকেজগুলিকে নির্ভরতা হিসাবে টেনে তোলে ।

সংকলনের অংশটি সি এবং সি ++ প্রোগ্রামগুলির জন্য বরং সহজ, যোগ -m32করুন CFLAGবা CXXFLAG, যা উত্পন্ন প্রোগ্রাম 32 বিট তৈরি করবে, যেমন

export CFLAGS="-m32"
gcc main.c -o main

এটি মেকফাইল-ভিত্তিক প্রকল্পগুলির জন্যও কাজ করে।


2
apt-get install ia32-libsআমার জন্য কাজ করেছেন (১৩.০৪)!
Étienne

1
উবুন্টু 14.04 এর জন্য, এটি "sudo dpkg
--add-वास्तुकला

উদাহরণস্বরূপ, ডেবিয়ান জেসি: dpkg - অ্যাড-আর্কিটেকচার i386; apt-get আপডেট; apt-get libstdc ++ 5: i386 libpam0g: i386
জোনাথন বেন-

0

আপনার যদি মাত্র একটি 32-বিট বাইনারি থাকে আপনি আধুনিক 64-বিট দেবিয়ান / উবুন্টু সিস্টেমে চালনা করতে চান তবে নিম্নলিখিতটি করুন:

dpkg --add-architecture i386
apt update
apt install libc6-i386

এটি দেবিয়ান 9 এ পরীক্ষা করা হয়েছে।


1
sudo apt-get install lib32z1আমার বিশেষ 32-বিট এক্সিকিউটেবলের জন্যও দরকার ছিল , যদি এটি সাহায্য করে। ত্রুটি ছিল: sqlite3: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory। হ্যাঁ, এটি ২০১২ এর এবং আমি স্ক্লাইট প্রকল্প দ্বারা সমর্থিত একটি পূর্বনির্ধারিত -৪-বিট স্ক্লাইট3 ক্লায়েন্টটি খুঁজে পাচ্ছি না :( আমি এই শেয়ার্ড রিসোর্সে ইনস্টল করার অনুমতি পেয়েছি তার মধ্যে সীমাবদ্ধ তাই আমি প্রম্পম্পাইল স্ক্লাইট প্যাকেজগুলি টেনে নামাতে হবে। ধন্যবাদ আমি ইনস্টল করতে পারি lib32z1
হার্পারভিলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.