কীভাবে একটি এসআরপিএম আনপ্যাক, সংশোধন, পুনর্নির্মাণ এবং ইনস্টল করবেন


9

আমি একটি ফেডোরা 15 প্যাকেজটি পরিবর্তন করতে চাই ( gnome-shell-extensions-alternative-status-menu)। এটি একটি ছোট পরিবর্তন ( এই প্রতিশ্রুতি ফিরিয়ে দেওয়া )। ব্যবহার করে yumdownloaderআমি একটি এসআরপিএম ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm) ডাউনলোড করতে সক্ষম হয়েছি ।

এর পরে, আমি কীভাবে এটি আনপ্যাক করব এবং তারপরে এটি আবার তৈরি করব?


আপনার নিজের সাম্প্রতিক সম্পাদনাটি @ এমডিপিসির উত্তরের মন্তব্য হতে হবে বা সমস্যার সমাধান করতে সহায়তা করা পদক্ষেপগুলির সাথে আপনার নিজের একটি উত্তর যুক্ত করতে হবে। উত্তরটি নিজেরাই প্রশ্নের বাইরে রাখুন দয়া করে।
কালেব

@ কালেব হয়ে গেল! (আরও 3 টি যেতে ...)
পাই

উত্তর:


7

মূল ব্যবহারকারী হিসাবে আমি কী করি:

  1. অন্য কোনও প্যাকেজ হিসাবে আপনার SRPM ইনস্টল করুন ( rpm --install [source-rpm-filename])

  2. /root/rpmbuild/SPECSডিরেক্টরি পরীক্ষা করুন এবং আপনার প্যাকেজটির সাথে মেলে এমন চশমা ফাইলটি সন্ধান করুন

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

ফলস্বরূপ বাইনারি প্যাকেজগুলি /root/rpmbuild/RPMS/ডিরেক্টরিতে অবস্থিত যা মানক rpm --installকমান্ডের মাধ্যমে ইনস্টল করার জন্য প্রস্তুত ।

দ্রষ্টব্য: এটি কেবল স্ট্যান্ডার্ড বাইনারি প্যাকেজটিতে যা তৈরি করে। উত্সে পরিবর্তন আনতে এবং নতুন প্যাকেজ উত্পন্ন করতে না করেই আমি নির্দিষ্ট প্রশ্নের উত্তর দিয়ে এই পোস্ট করছি post

পরিবর্তনগুলি করার জন্য, আপনি হয় ইনপুট হিসাবে প্যাচগুলি সরবরাহ করতে পারেন এবং এসপিসিএস ফাইলটি পরিবর্তন করতে পারেন .... অথবা আপনি নিজের সাথে *.tar.bz2অবস্থিত মানটিকে পরিবর্তনের সাথে প্রতিস্থাপন করতে পারেন /root/rpmbuild/SOURCESএবং তারপরে উপরে বর্ণিত বিল্ডটি করতে পারেন।

সচেতন হোন আপনার কাজটি তৈরি করার জন্য SPECS প্যাকেজটি পরিবর্তন করতে হতে পারে (সাধারণত প্যাচিংটি টেনে আনার মাধ্যমে এবং SPECS ফাইল দ্বারা প্রোগ্রাম করা কিছু ফাইলের নাম পরিবর্তন করে)।


সম্পাদনা

দেখে মনে হচ্ছে মূলটি একটি খারাপ অনুশীলন ( উত্স ) হিসাবে আরপিএম তৈরি করা । এটি অ-রুট ব্যবহারকারী হিসাবে দুর্দান্ত কাজ করে।

ধাপে ধাপে নির্দেশাবলী (থেকে একটি প্যাচ যোগ করার জন্য এখানে ):

  1. আপনার প্যাচ এখানে অনুলিপি করুন rpmbuild/SOURCES
  2. সম্পাদনা করুন rpmbuild/SPECS/package.specএবং লাইনের Patch0: mypatch.patchপরে একটি ডান যুক্ত করুন Source0: ...
  3. পরে %setup ...লাইনটি একটি যোগ %patch0 -p1লাইন

এখন এটি স্বাভাবিকভাবে তৈরি করবে, অর্থাৎ ie সঙ্গে:rpmbuild -ba SPECS/package.spec


2
আপনার পরিষ্কার করা উচিত যে কেবল ইনস্টলটি মূল হিসাবে সম্পন্ন হয়, আরপিএমবাইল্ড নয়। আরপিএম ফাইলগুলি বিল্ডিং কখনই রুট হিসাবে করা উচিত নয়।
কালেব

@ কালেব আমি প্যাকেজগুলি নন রুট হিসাবে ইনস্টল করেছি। আরপিএম এটিকে ~ / rpmbuild হায়ারার্কিতে রাখে। আপনার প্রশ্নের পরামর্শ অনুসারে আমিও করেছি এবং এখানে অতিরিক্ত পদক্ষেপ রেখেছি।
পাই

কেবল একটি দম্পতি নোট: sudo dnf install rpmdevtoolsrpmbuild কমান্ডের জন্য প্রয়োজন। %patch0 -p1যদি স্পেক ফাইলটি একটির %autosetupপরিবর্তে একটি লাইন ব্যবহার করে %setup(যেমন %autosetupপ্যাচটি স্বয়ংক্রিয়ভাবে প্রযোজ্য) তবে লাইনটি বাদ দেওয়া উচিত ।
নেলসন

এছাড়াও, নতুন আরপিএমটি আসলটির উপরে ইনস্টল করতে (সিস্টেমে মূলটি ইনস্টল থাকা অবস্থায়), করুনsudo rpm -ivh --force your.rpm
নেলসন

4

ওপেনএসএসএল প্যাকেজ পুনর্নির্মাণ CentOS 6.4 একটি SRPM প্যাকেজ পুনর্নির্মাণের বিশদ উদাহরণ।

উপরের উদাহরণটি মক ব্যবহার করে - প্যাকেজ নির্মাতাদের জেডি লাইট সাবার।

মক তৈরি করা হয়েছিল নির্ভরযোগ্যভাবে একটি ক্রুটকে জনপ্রিয় করতে, তারপরে সেই ক্রোটে একটি প্যাকেজ পুনর্নির্মাণ করতে।

আরও তথ্যের জন্য, দেখুন http://fedoraproject.org/wiki/Projects/ock

উদাহরণে মক 3 বার ব্যবহৃত হয় - একবার প্যাকেজটিকে "আনপ্যাক" করতে, তারপরে .src.rpm পুনর্নির্মাণ করতে এবং অবশেষে .rpm তৈরি করতে।

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