উত্স থেকে ডেবিয়ান / উবুন্টু প্যাকেজ কীভাবে তৈরি করবেন?


116

আমার কাছে একটি প্রোগ্রামের উত্স রয়েছে (সিভিএস / এসএনএন / গিট / ... থেকে নেওয়া) এবং আমি এর জন্য একটি ডেবিয়ান / উবুন্টু প্যাকেজ তৈরি করতে চাই। প্যাকেজটি সংগ্রহস্থলগুলিতে উপস্থিত রয়েছে তবে:

  • এটি একটি পুরানো সংস্করণ (আমার প্রয়োজনীয় বৈশিষ্ট্যগুলির অভাব)
  • আমার ডিফল্টের চেয়ে কিছুটা কমপাইল অপশন দরকার।

এটি করার সহজতম উপায় কী? আমি কয়েকটি বিষয় নিয়ে উদ্বিগ্ন

  • আমি সমস্ত নির্ভরতা সঠিকভাবে তালিকাভুক্ত করেছি কিনা তা আমি কীভাবে পরীক্ষা করতে পারি? (পুরানো সংস্করণ কী নির্ভর করে তা দেখে আমি কিছু ইঙ্গিত পেতে পারি তবে নতুন নির্ভরতা যুক্ত হতে পারে))
  • কীভাবে আমি আপডেট সিস্টেমে কোনও আপডেটে রেপোতে পুরানো সংস্করণ ইনস্টল করতে পারি?
  • আমার কাস্টম প্যাকেজটি ওভাররাইট করে আমি কীভাবে সিস্টেমটিকে নতুন সংস্করণ (এটি শেষ হয়ে যাবে) ইনস্টল করতে বাধা দিতে পারি?

উত্তর:


78

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

apt-get install devscriptsবিদ্যমান ডিবিয়ান উত্সগুলি থেকে উত্স থেকে প্যাকেজ তৈরি করতে আপনি "uupdate" ( ) ব্যবহার করতে পারেন :

Libdrm2 এর উদাহরণ:

apt-get build-dep libdrm2
apt-get source libdrm2
cd libdrm-2.3.1
uupdate ~/Downloads/libdrm-2.4.1.tar.gz
cd ../libdrm-2.4.1
dpkg-buildpackage -us -uc -nc

ধন্যবাদ! আমি এটি কেবলমাত্র একটি উবুন্টু ইনস্টলটিতে সাবভারশন ১..6..6 পোর্ট করতে ব্যবহার করেছি যা এর সর্বশেষ উপলব্ধ সংস্করণ হিসাবে কেবল 1.6.5 রয়েছে এবং এটি নির্বিঘ্নে কাজ করেছে। বেশ কয়েক ঘন্টা টিনকিং করে আমাকে বাঁচিয়েছে! :)
কার্লোস ভিলেলা

আপনি এই আদেশগুলি চারপাশে আরও কিছু প্রসঙ্গ দিতে পারেন? libdrm-2.3.1ঠিক কোথায় ? এছাড়াও এলো libdrm-2.4.1.tar.gzকোথা থেকে (আমার প্রাথমিক অনুমানটি হ'ল এটিই সেই অ্যাপ্লিকেশনটির সংকলিত বাইনারি যা আমরা একটি ডেবে প্যাকেজ করতে চাই, তবে বিদ্যমান সংস্করণটি প্রতিস্থাপন করা কি এটি সঠিক?)
হুইলারের

আপনি যদি ত্রুটিটি পান তবে You must put some 'source' URIs in your sources.listআপনার/etc/apt/sources.list
ক্রিশ্চিয়ান

27

প্রথম, শিরোনাম প্রশ্ন: ডিবিয়ান ডিরেক্টরিটি ইতিমধ্যে রয়েছে বলে ধরে নেওয়া, উত্স ডিরেক্টরিতে (ডিবিয়ান ডিরেক্টরি সম্বলিত ডিরেক্টরি) থাকুন এবং dpkg-buildpackage শুরু করুন। আমি এই বিকল্পগুলি দিয়ে এটি চালাতে চাই:

dpkg-buildpackage -us -uc -nc

যার অর্থ ফলাফলটি স্বাক্ষর করবেন না এবং পরিষ্কার করবেন না।

আমি সমস্ত নির্ভরতা সঠিকভাবে তালিকাভুক্ত করেছি কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

নির্ভরতা পাওয়া একটি কালো শিল্প। "আনুষ্ঠানিক" উপায়টি বিল্ড নির্ভর করে কিনা তা পরীক্ষা করা হয় যদি প্যাকেজটি কেবলমাত্র বেস সিস্টেম, "বিল্ড-অত্যাবশ্যক" প্যাকেজগুলি এবং আপনার নির্দিষ্ট করা বিল্ড নির্ভরতা দিয়ে তৈরি করে। নিয়মিত নির্ভরতাগুলির জন্য কোনও সাধারণ উত্তর জানেন না, কেবল ওয়েড ইন :)

কীভাবে আমি আপডেট সিস্টেমে কোনও আপডেটে রেপোতে পুরানো সংস্করণ ইনস্টল করতে পারি? আমার কাস্টম প্যাকেজটি ওভাররাইট করে আমি কীভাবে সিস্টেমটিকে নতুন সংস্করণ (এটি শেষ হয়ে যাবে) ইনস্টল করতে বাধা দিতে পারি?

আমার জ্ঞানটি এইটির পুরানো হতে পারে তবে উভয়কেই সম্বোধন করার জন্য: dpkg --set-Seferences ব্যবহার করুন। ধরে নেওয়া নুলিস্টিন্ড হ'ল সেই প্যাকেজটি যা আপনি রাখতে চান, রুট হিসাবে চালান

echo 'nullidentd hold' | dpkg --set-selections

পর্যায়ক্রমে, যেহেতু আপনি উত্স থেকে বিল্ডিং করছেন, আপনি সংস্করণ নম্বরটি কৃত্রিমভাবে উচ্চতর সেট করতে একটি পর্ব ব্যবহার করতে পারেন এবং আর কখনও বিরক্ত হবেন না। একটি মহাকাব্য ব্যবহার করতে, ডিবিয়ান / চেঞ্জলগ ফাইলটিতে একটি নতুন এন্ট্রি যুক্ত করুন এবং সংস্করণ সংখ্যার সামনে একটি 99: রাখুন। আমার নালিশ উদাহরণটি দিয়ে, আপনার আপডেটেড চেঞ্জলগের প্রথম লাইনটি পড়বে:

nullidentd (99:1.0-4) unstable; urgency=low

বার্নার্ডের লিঙ্কটি ভাল, বিশেষত যদি আপনাকে নিজেই ডেবিয়ান ডিরেক্টরিটি তৈরি করতে হয় - তবে বিকাশকারীদের রেফারেন্স এবং সাধারণ সংস্থান পৃষ্ঠাটিও সহায়কঅ্যাডামের লিঙ্কটিও ভাল দেখাচ্ছে তবে আমি এর সাথে পরিচিত নই।


1
"ডিপি কেজি - সেট-সিলেকশনস" এখনও কাজ করে তবে এই দিনগুলির একটি আরও ভাল পদ্ধতি হ'ল "প্রবণতা হ'ল নলিটালিস্ট"।
মার্ক বাকের

6

আপনি যা করতে চান তার জন্য আপনি সম্ভবত ডেবিয়ান উত্স ডিফ ব্যবহার করতে চান, সুতরাং আপনার প্যাকেজটি ব্যবহৃত প্রবাহের সংস্করণ বাদে অফিসিয়ালের মতো। আপনি উত্স প্যাকেজগুলি প্যাকেজগুলি থেকে ডাউনলোড করতে পারেন bian

তারপরে আপনি প্রবাহের উত্সের আপনার নতুন সংস্করণটি আনপ্যাক করুন, সেই ডিরেক্টরিতে পরিবর্তন করুন এবং আপনি যে ডিফটি ডাউনলোড করেছেন তা প্রয়োগ করে

zcat ~/downloaded.diff.gz | patch -p1
chmod +x debian/rules

তারপরে আপনি বিকল্পগুলি সংকলন করতে চান এমন পরিবর্তনগুলি করুন, এবং করে প্যাকেজটি তৈরি করুন

dpkg-buildpackage -rfakeroot -us -uc


3
  • মূল প্যাকেজ থেকে আপনার উত্স ডিরেক্টরিতে "ডিবিয়ান" ডিরেক্টরিটি রাখুন
  • প্যাকেজের সংস্করণ আপডেট করতে " dch " ব্যবহার করুন
  • প্যাকেজটি তৈরি করতে "debuild" ব্যবহার করুন

2

আমি বিশ্বাস করি এই ডেবিয়ান প্যাকেজ 'কিতাবুল হয়।

ঠিক আছে, এটি দেবিয়ান নতুন রক্ষণাবেক্ষণকারী গাইড, সুতরাং এটির অনেকগুলি প্রযোজ্য হবে না, তবে তারা কোথায় রয়েছে সেগুলি কভার করে।



1

এখানে একটি ডেবিয়ান প্যাকেজ তৈরির জন্য একটি টিউটোরিয়াল রয়েছে।

মূলত, আপনার প্রয়োজন:

  1. আপনার ফোল্ডার কাঠামো সেট আপ করুন
  2. একটি নিয়ন্ত্রণ ফাইল তৈরি করুন
  3. In চ্ছিকভাবে পোস্ট ইনস্ট বা প্রির্ম স্ক্রিপ্টগুলি তৈরি করুন
  4. Dpkg-deb চালান

আমি আমার মেকফিল এ সাধারণত সবগুলি করি তাই আমি বাইনারি থুতুতে কেবল টাইপ করতে পারি এবং এটি একবারে প্যাকেজ করতে পারি।


1

আমি সমস্ত নির্ভরতা সঠিকভাবে তালিকাভুক্ত করেছি কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

pbuilderChroot পরিবেশে মধ্যে একটি পরিষ্কার বেস সিস্টেম স্থাপন করে বিল্ড নির্ভরতা এবং নির্ভরতা উভয় চেক করার জন্য একটি চমৎকার টুল। পুবিল্ডারের মধ্যে প্যাকেজটি সংকলন করে, আপনি সহজেই বিল্ড নির্ভরতাগুলি পরীক্ষা করতে পারেন এবং এটি একটি পুবিল্ডারের পরিবেশের মধ্যে পরীক্ষা করে আপনি নির্ভরতাগুলি পরীক্ষা করতে পারেন।


1

আপনি যদি বিল্ড নির্ভরতা ইনস্টল করার দ্রুত এবং নোংরা উপায় চান তবে ব্যবহার করুন:

apt-get build-dep

এটি নির্ভরতা ইনস্টল করে। আপনার উত্সগুলিতে আপনার সূত্রের লাইন প্রয়োজন list এর জন্য তালিকা:

deb-src http://ftp.nl.debian.org/debian/ squeeze-updates main contrib non-free

আপনি যদি পরীক্ষা থেকে স্থিতিশীল পর্যন্ত প্যাকেজগুলি ব্যাকপোর্টিং করে থাকেন তবে দয়া করে পরামর্শ দিন যে নির্ভরতাগুলি পরিবর্তিত হতে পারে। কমান্ডটি অ্যাপ-গেট বিল্ড-দেব আপনার বর্তমান সংগ্রহস্থলের উত্স প্যাকেজের জন্য নির্ভরতা ইনস্টল করে।

তবে অবশ্যই, dpkg-buildpackage -us -uc আপনাকে কোনও আনইনস্টল করা নির্ভরতা দেখাবে।

আপনি যদি আরও প্রায়ই সংকলন করতে চান তবে কাউবিল্ডার ব্যবহার করুন।

apt-get install cowbuilder

তারপরে একটি বিল্ড-এরিয়া তৈরি করুন:

সুডো ডিআইএসটি = পিষুন এআরসিএচ = amd64 কাউবিল্ডার - তৈরি করুন

তারপরে একটি উত্স প্যাকেজ সংকলন করুন:

apt-get source cowsay

# do your magic editing
dpkg-source -b cowsay-3.03+dfsg1              # build the new source packages
cowbuilder --build cowsay_3.03+dfsg1-2.dsc    # build the packages from source

যেখানে কাউবিল্ডার ফলাফল প্যাকেজটি রাখেন তা দেখুন।

শুভকামনা!

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