জেন্টুতে ABI_X86 ব্যবহার করা


24

আমি আমার জেন্টু সিস্টেম আপডেট করেছি কয়েক মাস হয়ে গেছে। এবং, আপনি যেমন কল্পনা করতে পারেন, এর অর্থ হল আমার আরও অনেকগুলি প্যাকেজ (এবং ব্যবহারের পরিবর্তনগুলি) যেতে হবে। আমার সিস্টেমটি "amd64" (মাল্টিলিব), তবে আমার কাছে "~ amd64" থেকে ম্যানুয়ালি কীওয়ার্ড প্যাকেজ রয়েছে।

যাইহোক, এই আপডেটে, আমি "ABI_X86" ইউএসই পতাকা দেখতে থাকি। এটা কি? এটা নতুন. এটি সম্পর্কে "নির্বাচিত সংবাদ তালিকায়" কিছুই নেই।

আমি এই বিষয়টি খুঁজে পেয়েছি: http://forums.gentoo.org/viewtopic-t-953900-start-0.html । এটি কীভাবে এটি ব্যবহার করবেন তা দেখাতে পারে বলে মনে হয়েছিল, তবে, এর জন্য কোনও "প্রকৃত" ডক আছে? এটার কাজ কি? আমার "ABI_X86" কে সেট করার কথা ? আমার একটি মাল্টিলেব সিস্টেম রয়েছে। আমি ধরে নিলাম আমি "64" চাই, তবে তারপরে "32" এবং "x32" কী? এখানে আমার যা করা দরকার তা নিয়ে আমি বিভ্রান্ত।

উত্থান স্লট বিবাদগুলি সম্পর্কে প্রচুর চিৎকার করছে এবং তারা "এবিআই_এক্স 86" এর সাথে সম্পর্কিত বলে মনে হচ্ছে (আমি ত্রুটিগুলি ঠিক ভুলে গেছি, তবে আমি মনে করি একটি জলিব ছিল))

সুতরাং, এটি কী ABI_X86এবং কীভাবে এটি ব্যবহার করবেন সে সম্পর্কে কোনও "অফিসিয়াল" ডক্স রয়েছে ?

আমি যুক্ত থ্রেড থেকে, এই পৃষ্ঠাটি পেয়েছি: http://kicherer.org/joomla/index.php/en/blog/liste/29-transition-of-emul-packages-to-true-multilib , কিন্তু আমি চাই কীওয়ার্ডে যাওয়ার আগে আমি কী করছি তা জানার জন্য একটি গুচ্ছ স্টাফ এবং আমার সম্পাদনা করুন make.conf

পিএস আমার "প্যাকেজ.কিওয়ার্ডস" ফাইলটিতে বেশিরভাগ অ্যাপ্লিকেশন-ইমুলেশন / ইমুল-লিনাক্স-এক্স 86 "প্যাকেজগুলি (যা আমার কাছে তখন মনে হয়েছিল) seemed

উত্তর:


32

আমার অবশ্যই প্রকাশ করতে হবে যে multilib-build.eclassজেন্টুতে স্টাইল মাল্টিলেব ব্যবহার করার আমার খুব কম অভিজ্ঞতা আছে ।

ABI_X86একটি USE_EXPANDপরিবর্তনশীল; সেট ABI_X86="32 64"বা USE="abi_x86_32 abi_x86_64"সমতুল্য। এই লেখার (2013-09-09) হিসাবে ABI_X86 এর ডিফল্ট সেটিংটি default/linux/amd64/13.0প্রোফাইলটির জন্য উপযুক্ত বলে মনে হচ্ছে ABI_X86=64

এই পরিবর্তনশীলটি ebuilds এ সুস্পষ্ট মাল্টিলিব সমর্থনকে নিয়ন্ত্রণ করে যা ব্যবহার করে multilib-build.eclassযা মূল পদ্ধতির তুলনায় মাল্টিলিব করার মতো আরও জেন্টু-জাতীয় উপায়।

জেন্টুতে 32-বিট লাইব্রেরিগুলি ইনস্টল করার মূল পদ্ধতিটি বাইনারি স্ন্যাপশটের মাধ্যমে করা হয়েছে app-emulation/emul-linux-*। এই প্রতিটি এমুলেশন বাইনারি প্যাকেজটিতে আপনার জন্য কিছু জেন্টু দেব দ্বারা সংকলিত 32-বিট লাইব্রেরির পুরো সেট রয়েছে। যেহেতু প্রত্যেকে লাইব্রেরির একটি বান্ডিল ইনস্টল করে যা অবশ্যই একত্রে সমন্বিত হতে হবে, 32-বিট-কেবল ইবিল্ডগুলির নির্ভরতা ট্র্যাক করা আরও শক্ত। উদাহরণস্বরূপ, আপনার যদি media-libs/alsa-lib32-বিট সিস্টেমে 32-বিটের দরকার হয় media-libs/alsa-libতবে আপনি কেবল ইনস্টল করুন , তবে একটি 64-বিট মাল্টিলেব সিস্টেমে আপনাকে app-emulation/emul-linux-soundlibsঅন্যান্য লাইব্রেরিগুলির মধ্যে, 32-বিট সংস্করণটির মধ্যে ইনস্টলগুলি আবিষ্কার করতে হবে media-libs/alsa-lib। এছাড়াও, জেন্টু দেব এই জাতীয় একটি বাইনারি প্যাকেজ নির্মাণের জন্য অবশ্যই প্রতিটিটির মাল্টিলেব এবং বিল্ড সিস্টেমের কোয়ার্কগুলি নির্ধারণের কাজটি করতে হবেস্ন্যাপশট প্যাকেজে অন্তর্ভুক্ত লাইব্রেরির মধ্যে রক্ষণাবেক্ষণকে আরও শক্ত করে তোলে। এবং, সর্বাধিক গুরুত্বপূর্ণ, জেন্টুতে মাল্টিলিব ব্যবহারের একমাত্র বিকল্প হিসাবে অফিশিয়াল বিকল্প হিসাবে বাইনারি প্যাকেজ সরবরাহ করা জেন্টোর আত্মার বিপরীতে। আপনার নিজের সমস্ত কিছু সংকলন করার অধিকার থাকা উচিত !

multilib-build.eclassপৃথক ebuilds সাহায্য করে এই আচরণ থেকে প্যাচসমূহ দূরে ইনস্টল উভয় 32 বিট এবং 64 বিট সংস্করণগুলি। এটির অনুমতি দেওয়া উচিত, উদাহরণস্বরূপ, প্যাকেজগুলি wineটানার পরিবর্তে প্রয়োজনীয় প্যাকেজগুলির বিরুদ্ধে সরাসরি নির্ভরতা নির্দিষ্ট করতে হবে app-emulation/emul-linux-*ফোরাম থ্রেডে সুসুমিন উল্লেখ হিসাবে আপনি উল্লেখ করেছেন :

= অ্যাপ-এমুলেশন / এমুল-লিনাক্স-x86-xlibs-20130224-r1 যা খালি প্যাকেজ যা ফাইল নেই কারণ ফাইলগুলি এখন সরাসরি এক্স 11-libs / থেকে আসে

(নোট -r1যেটির পরে নামকরণ করা হয়েছে -r2) অবশেষে, app-emulation/emul-linux-x86-xlibsনিজেই 32-বিট-প্যাকেজ হিসাবে যথাযথভাবে সরাসরি প্যাকেজের উপর নির্ভর করে যথাযথভাবে তার সঠিক প্যাকেজের উপর নির্ভর করে x11-libs, যার multilib-build.eclassসাহায্যে প্রয়োজনীয় 32-বিট libs সরবরাহ করা উচিত। এখানেই ABI_X86খেলতে আসে। কোন multilib-build.eclass-enabled প্যাকেজ লাভ অন্তত নতুন ব্যবহার-ফ্ল্যাগ abi_x86_32এবং abi_x86_64এবং সম্ভবত abi_x86_x32EAPI=2স্টাইলের ইউএসই নির্ভরতা ব্যবহার করে প্যাকেজগুলি অন্যান্য প্যাকেজের 32-বিট সংস্করণের উপর নির্ভর করতে পারে। যদি উপস্থিত x11-libs/libX11হয় ABI_X86="32 64"তবে এটি ইউএসই-পতাকা abi_x86_32এবং abi_x86_64ইউএসই-পতাকা সেট সহ ইনস্টল করা হবে । যদি কোনও নির্দিষ্ট গ্রাফিকাল প্যাকেজটির 32-বিট সংস্করণের প্রয়োজন হয় তবে libX11এটি নির্দিষ্ট করতে পারেx11-libs/libX11[abi_x86_32]এর নির্ভরতা। এইভাবে, আপনি যদি এই গ্রাফিকাল প্যাকেজটি উত্থাপন করার চেষ্টা করেন এবং libX1132-বিট libs ইনস্টল না করেন তবে পোর্টেজ অস্বীকার করবে। multilib-build.eclassএছাড়াও সর্বজনীন এবং 32-বিট সিস্টেমের সাথে সামঞ্জস্যপূর্ণ: 32-বিট সিস্টেমে এই একই গ্রাফিকাল প্যাকেজটি ইনস্টল করা সর্বদা কার্যকর হবে কারণ libX11এটির abi_x86_32ইউজফ্লেগ সেট না হয়ে ইনস্টল করা অসম্ভব । এটি app-emulation/emul-linux-x86-xlibsকোনও মাল্টিলেব সিস্টেমে এবং সরাসরি x11-libs/libX1132-বিট-কেবল সিস্টেমে নির্ভর করার সময় নির্ভর সমস্যাটি সমাধান করে । আমরা মাল্টিলেব সিস্টেমে একটি ক্লিনার এবং বুদ্ধিমান আন্তঃ-প্যাকেজ নির্ভরতার পথ তৈরি করছি। =app-emulation/emul-linux-x86-xlibs-20130224-r2মধ্যস্থতাকারী হিসাবে বিদ্যমান যা কোনও পুরানো প্যাকেজগুলিকে সক্ষম করে app-emulation/emul-linux-x86-xlibsযা নির্ভর করে যা নির্ভর করে যে সরাসরি কিভাবে নির্ভর করতে হয় তা জানে না, উদাহরণস্বরূপ, x11-libs/libX11[abi_x86_32]এখনও কাজ করতে।=app-emulation/emul-linux-x86-xlibs-20130224-r2এটি নিশ্চিত করে তোলে যে একই 32-বিট লাইব্রেরিগুলি /usr/lib32যেমন =app-emulation/emul-linux-x86-xlibs-20130224ইনস্টল করা হয়েছে তেমন উপস্থিত রয়েছে , তবে এটি বাইনারি প্যাকেজ সরবরাহ করার পরিবর্তে 32-বিট লাইব্রেরিগুলি নির্ভরতাগুলির মাধ্যমে এটি নির্মাণ করে জেন্টু পথটি করে? এটি virtualবিভাগে প্যাকেজগুলির মতো এই জাতীয় আচরণ করে : এটি কোনও কিছু ইনস্টল করে না, বিদ্যমান ebuilds এর জন্য কেবল "ফরওয়ার্ড" নির্ভরতা।

আমরা দেখেছি কীভাবে multilib-build.eclassমাল্টিলিব সিস্টেমগুলিতে ক্লিনার নির্ভরতার জন্য পথ প্রশস্ত করে। যে প্যাকেজগুলির ABI_X86বিকল্প রয়েছে (এটি abi_x86_*ইউজফ্লেগ রয়েছে বলে একই জিনিস ) আপনি যদি USE=abi_x86_32/ নির্দিষ্ট করে থাকেন তবে নিজের একটি 32-বিট সংস্করণ ইনস্টল করে রেখেছেন ABI_X86=32। এটি কীভাবে কাজ করে (একটি উচ্চ ধারণাগত স্তরে)? আপনি নিজেই উত্সাহ পড়তে পারেন। মূলত, ধারণাটি পাইথন বা রুবি ইবিল্ডগুলির সমান, যা পাইথন এবং রুবিয়ের একাধিক সংস্করণে একসাথে ইনস্টল করার বিকল্প রয়েছে। যখন কোনও ইইবিল্ড উত্তরাধিকার সূত্রে প্রাপ্ত হয় multilib-build.eclass, এটি এবিআই_এক্স lo over এর উপরে লুপ করে এবং এবিআই_এক্স ৮ in-এ প্রতিটি প্রবেশের জন্য আনপ্যাকিং, সংকলন এবং ইনস্টলেশন প্রক্রিয়াটির প্রতিটি পদক্ষেপ করে। যেহেতু Portage মত ebuild পর্যায়ের সব মাধ্যমে যায় src_unpack(), src_compile()এবং src_install()এবং যাতে (এবং অন্যদের) শুধুমাত্র একবারmultilib-build.eclass(বর্তমানে, সহায়তার সাহায্যে multibuild.eclass) ব্যবহারগুলি এবিআই_এক্স 86 এর প্রতিটি পৃথক মানের জন্য একটি ডিরেক্টরি তৈরি করে। এটি প্রতিটি ডিরেক্টরিতে উত্সের একটি অনুলিপি আনবে। সেখান থেকে, এই ডিরেক্টরিগুলির প্রত্যেকটি একটি নির্দিষ্ট এবিআইকে লক্ষ্য হিসাবে চিহ্নিত করা শুরু করে di জন্য ডিরেক্টরি ABI_X86=32হবে ./configure --libdir=/usr/lib32পতাকার লক্ষ্য করে 32 বিট দিয়ে চালানো (যেমন, CFLAGS=-m32(নোট multilib প্রোফাইলের CFLAGS_x86 envvar থেকে আসে: Portage প্রোফাইলের বেশিরভাগই ABI_X86 = 32 পড়ুন যেমন ABI- র = x86 ও ABI_X86 = 64 যেমন ABI- র = AMD64))। সময়src_install()পর্যায়ক্রমে, বিভিন্ন সংকলিত এবিআই এর প্রত্যেকটি ইনস্টল করা হয়েছে যাতে কোনও ফাইলের 32-বিট এবং 64-বিট সংস্করণ উভয়ই থাকে, নেটিভ এবিআই জিততে পারে (যেমন, উভয় গ্রন্থাগার ইনস্টল করা এবং প্যাথএইচটিতে এক্সিকিউটেবল কেবল একটি 64 ইনস্টল করতে পারে - PATH- এ এক্সিকিউটেবল তবে 32-বিট এবং 64-বিট উভয় লাইব্রেরি অন্তর্ভুক্ত করুন)। সংক্ষিপ্তসার হিসাবে: আপনি যখন সেট আপ ABI_X86="32 64"করেন make.conf, যে কোনও প্যাকেজ সমর্থন করে multilib-build.eclassতা প্রতিটি এবিআইয়ের জন্য একবার তৈরি করা হয় এবং এর ফলে 32-বিট লাইব্রেরিতে ফলাফল সংকলন করতে কাজের পরিমাণের দ্বিগুণ (আমি সময় বলছি না ;-)) will /usr/lib32

এখনও জানি না যে ABI_X86এখনও পর্যন্ত এর অফিসিয়াল ডকুমেন্টেশন রয়েছে বা এর বিশদ স্থিতি রয়েছে কিনা । Ebuilds আপাতত multilib-build.eclassবেশিরভাগ অস্থির বলে মনে হচ্ছে। আপনি ABI_X86যদি app-emulation/emul-linux-x86-xlibs-20130224নতুন স্টাইলের মাল্টিলিব এবং এর মধ্যে পার্থক্য বুঝতে চান তবে অভিজ্ঞতা এবং পরীক্ষা শুরু করতে আপনি যে ব্লগটি সংযুক্ত করেছেন সেগুলিতে আপনি নির্দেশাবলী অনুসরণ করতে পারেন app-emulation/emul-linux-x86-xlibs-20130224-r2তবে, আপনি যদি পুরানো শৈলীর বাইনারি প্যাকেজটির সাথে ঠিক থাকেন তবে আমি মনে করি এটি app-emulation/emul-linux-x86-xlibs-20130224কার্যকর থাকবে। আপনি শুধুমাত্র সরাতে করতে হবে -r2যদি আপনার কোন প্যাকেজ যা ব্যবহার সরাসরি অন্য প্যাকেজের উপর নির্ভর করে abi_x86_32useflag (উদাহরণস্বরূপ, app-emulation/emul-linux-x86-xlibs-20130224এবং x1-libs/libX11[abi_x86_32]সাথে থাকতে পারে না, কারণ তারা হয়ত দুটোই একসাথে একই গ্রন্থাগার ইনস্টল /usr/lib32, যথা /usr/lib32/libX11.so.6)। একটি দ্রুতএ বর্ণন wine-1.7.0.ebuildআমার কাছে প্রস্তাব করে যে, এটা দরকার নেই -r2


2
আমি জানি এটি 3 মাস পরে, তবে আমি এই দুর্দান্ত উত্তরের জন্য আপনাকে ধন্যবাদ জানাতে চাই। "Amd64" এবং "d amd64" প্যাকেজগুলির মিশ্রণের অর্থ কিছু app-emulation/emul-linux-x86লোকের উপর নির্ভরশীল এবং অন্যরা তাদের সরাসরি অংশগুলির উপর নির্ভর করে । এটি প্রচুর কী-রেকর্ডিং এবং ইউএসই ফ্ল্যাগের পরিবর্তনগুলি নিয়েছিল তবে আমি একসাথে সংকলন করতে এবং আনন্দের সাথে চালানোর জন্য সবকিছু পেয়েছি! :-D
রকেট হাজমাত

2

এছাড়াও abi_x86_x32 রয়েছে (এটি abi_x86_32 এর মতো নয়) ব্যবহার করুন পতাকা। এটি একটি পরীক্ষামূলক এবং অর্ধ-64 বিট অ্যাপ্লিকেশন তৈরি করার উদ্দেশ্যে। পার্থক্য কেবলমাত্র তাদের 4 বাইট পয়েন্টার রয়েছে। এটি মেমরির ব্যবহার 4GiB এর মধ্যে সীমাবদ্ধ করে এবং বেশিরভাগ ক্ষেত্রে ওভারহেড হ্রাস করে, যখন সমস্ত 64 বিট নির্দেশাবলী ব্যবহার করতে দেয়।


আমি এই জন্য অনুসন্ধান। X32 পতাকা সম্পর্কে আপনার ডকুমেন্টেশনের লিঙ্ক আছে?
ইকরাবে

0

বর্তমানে পরিস্থিতি বাস্তব জাহান্নামের। সমস্যাটি মনে হচ্ছে অনেকগুলি প্যাকেজগুলি "অর্ধ-মুখোশযুক্ত" ধরণের ... আমি সঠিক পরিভাষাটি জানি না, তবে মনে হচ্ছে কিছু প্যাকেজগুলি "i amd64" মূলশব্দযুক্ত রয়েছে "abi_x86_32" ব্যবহার করে পতাকা এবং "amd64" ছাড়াই যে পতাকাটি ব্যবহার করে ... ফলাফলটি হ'ল আমার আপডেট করার সময় আমি "abi_x86_32" সক্ষম করি তবে উত্থাপ্রাপ্ত হ'ল ABI_X86 = "(64) (-32)" এর সাথে প্যাকেজ ইনস্টল করা হয় যতক্ষণ না আমি এই জাতীয় প্রতিটি প্যাকেজ প্রতি "~ amd64" যোগ করি। এবং যদি এটি সরাসরি উত্থানের পরিবর্তে নির্ভরতা হিসাবে টানা থাকে তবে স্বতঃমাস্ক-লেখার কোনও প্রস্তাব নেই যে পরিবর্তিত - উত্থিত হ'ল আপনাকে বলে যে এটি প্রয়োজনীয় "abi_x86_32" ব্যবহারের পতাকা দিয়ে প্যাকেজটির নির্ভরতা মেটাতে পারে না। সুতরাং আমাকে প্রতিটি প্যাকেজ একের পর এক প্যাকেজে যুক্ত করতে হবে। "~ amd64" দিয়ে কীওয়ার্ডগুলি। এটি অনেকটা ম্যানুয়াল কাজ ... এবং কোন প্যাকেজ সংস্করণের জন্য এটি করা উচিত? আমি আসলে যা চাই তা বলতে পারি না, অর্থাত্ "সংস্করণগুলির জন্য যেখানে এটি ব্যবহার করা পতাকা ছাড়াই" amd64 "চিহ্নিত আছে"। আমি হয় সুনির্দিষ্ট সর্বশেষতম সংস্করণটি দেখতে পাচ্ছি যা আমি এখন দেখতে পাচ্ছি এবং এইভাবে এর ভবিষ্যতের আপডেটগুলি জটিল করে তুলতে পারি বা সমস্ত সংস্করণে রেখেছি এবং সম্ভবত এমন সংস্করণগুলি ইনস্টল করব যা এমনকি bit৪ বিটের জন্য স্থিতিশীল হিসাবে চিহ্নিত নয় ...


2
আমি মনে করি আপনার উত্তরটি কিছু পুনর্লিখন এবং / অথবা পুনরায় চিন্তাভাবনার দ্বারা উপকৃত হতে পারে। যেমনটি দাঁড়িয়েছে, এটি ইতিমধ্যে পোস্ট করা উত্তরগুলিতে কিছুই যুক্ত করে না।
সামি লাইন

সংক্রান্ত "আমি করতে পারেন এখন নির্দিষ্ট সর্বশেষ সংস্করণ আমি দেখতে করা এবং এইভাবে তার ভবিষ্যতের আপডেট জটিল বা সব সংস্করণের রাখা এবং তারপর সম্ভবত সংস্করণ এমনকি 64bit জন্য .. স্থিতিশীল হিসাবে চিহ্নিত করা হয় না ইনস্টল করুন", আপনি যদি শুধু করা my-category/packageমধ্যে package.keywords, Portage হবে স্বয়ংক্রিয়ভাবে যে কোনও গ্রহণ হিসাবে হিসাবে ব্যাখ্যা ~amd64(আপনার ধরে ARCH=amd64)। আপনি শুধুমাত্র আচরণ আপনি (ম্যাচিং সংস্করণ বর্ণনা পেতে ছাড়া একটি ~amd64পতাকা) যদি তোমার মত কিছু বলতে my-category/package **
বিনকি

সামি, এটি একটি মন্তব্য না হয়ে উত্তর হবে, যদি কেবল স্ট্যাক এক্সচেঞ্জের নীতি কোনও ধারণা দেয়। (ফ্র্যাঙ্কি, আমি আশ্চর্য হয়েছি এটি আমাকে এই সময় সম্পর্কে মন্তব্য করতে দেয় ...)
ব্যবহারকারী 73010

বিনকি, পুনরায় পড়া ... আমি সমস্ত ~ এমডি 64 সংস্করণ চাই না। আমি সেই সংস্করণগুলি চাই যা "amd64" (স্থিতিশীল) হবে যদি তারা "abi_x86_32" পতাকা ব্যবহার না করে থাকে।
ব্যবহারকারী73010

-1

পরোক্ষভাবে সম্পর্কিত তথ্য: আজ পর্যন্ত সিস্টেমডে সম্পূর্ণ কেডি ডেস্কটপ সিস্টেম খাঁটি মাল্টিলিব উপায়ে সংকলন করা যায় (কোনও এমুলেশন প্যাকেজ নেই)। একমাত্র সমস্যা এখন মালিকানাধীন এনভিডিয়া-ড্রাইভার প্যাকেজ, তবে আপাতত ওপেন-সোর্স একের সাথে গিয়ে সমাধান করা যেতে পারে।

কীভাবে শুরু করবেন (অন্যান্য লিঙ্কগুলি সেখানে অন্তর্ভুক্ত): https://forums.gentoo.org/viewtopic-t-985380-hightlight-.html

জেন্টো মুলতিলেব পোর্টিং স্থিতি https://wiki.gentoo.org/wiki/Multilib_porting_status


এটি কেবল একটি মন্তব্য, কোনও উত্তর নেই।
জোনাস স্টেইন

জোনাস, এটি উত্তর সহ সমস্যা নয়, তবে প্রশ্নটি যদি আপনি এটি পেয়ে থাকেন :-), এটি এত সাধারণ general পড়াশোনা ... আপনি কি একমত? তাই আমি এখানে এই ধরণের প্রশ্ন জিজ্ঞাসা করার পক্ষে এটি সঠিক নয় বলছি, তবে ভদ্র ফোরামে যান .... কী বোঝেন?
কেনসাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.