ম্যানুয়ালি একটি ডিইবি ফাইল কীভাবে তৈরি করবেন?


46

আমি নিজে একটি ডিইবি ফাইল তৈরি করতে চাই। আমি কেবল একটি ফোল্ডার সরবরাহ করতে চাই যাতে ইনস্টল করার জন্য ডেটা থাকে এবং ইনস্টলেশনের পরে একটি স্ক্রিপ্ট কার্যকর করা যায়।

এটা কি সম্ভব?


আপনি খুব ভাল উত্তর চয়ন না?
জিগামেগস

@ ডেভিড, আসলে আমি এটি "ডিপিকিজি-ডেবি" দিয়ে তৈরি করেছি, এটি অনেক সহজ, এজন্য প্যাকেজ ফোল্ডারে ফাইলগুলি তালিকাভুক্ত করে আমাকে সেখানে স্থান দেওয়ার জন্য একটি পরিষ্কার দৃষ্টিভঙ্গি দিয়ে গিলসকে বেছে নিয়েছি। সুতরাং আমি তার উত্তর আরও ভাল বলে মনে করি ..
ডেইজি

আমি প্যাকেজে সমস্ত ফাইল তালিকাভুক্ত করেছি।
জিগামেগস

11
@ ডেভিড আমার অর্থ, তার উত্তরটি ডেরাইভেটিভ যে যুক্তিযুক্ত তা একটি জিনিস তবে "খুব ভাল উত্তর নয়"? গিলসের উত্তর দুর্দান্ত; আপনার উত্তরটি প্রথমে ছিল কিনা তা বিবেচ্য নয়, তিনি আরও সম্পূর্ণ। একটি বিদ্যমান উত্তর গ্রহণ এবং এটির প্রসারিত করার ক্ষেত্রে কোনও দোষ নেই; এটি একটি ভাল জিনিস
মাইকেল মরোজেক

উত্তর:


57

উত্স প্যাকেজ তৈরি করা

আমার সুপারিশটি উত্স প্যাকেজ তৈরি করা make বিল্ড-অপরিহার্য , ডিহেল্পার , ডিএইচ-মেক ইনস্টল করুন । আপনি যে ডিরেক্টরিগুলি ইনস্টল করতে চান সেগুলি ডিরেক্টরিতে পরিবর্তন করুন (ডিরেক্টরিটির নাম অবশ্যই ফর্মের হতে হবে $PACKAGE-$VERSION, যেমন myapp-4.2-1মায়াপ্প ভি 4.2 প্যাকেজিংয়ের জন্য আপনার প্রথম প্রয়াসের জন্য) এবং রান করুন dh_make --createorig। প্রশ্নগুলোর উত্তর দাও. ডিহেল্পার একটি প্যাকেজ তৈরির জন্য প্রয়োজনীয় বুনিয়াদি অবকাঠামো তৈরি করবে যার নাম একটি সাবডাইরেক্টরিতে ফাইল তৈরি করে someচ্ছিক debianফাইলগুলির জন্য কিছু বাধ্যতামূলক ফাইল এবং টেম্পলেট উভয়ই। আপনার এই ফাইলগুলির কয়েকটি সংশোধন করার প্রয়োজন হতে পারে:

  • debian/rulesযা প্রয়োজন ঠিক সেই জায়গায় ফাইলগুলি ইনস্টল করতে এবং ইনস্টল করতে সম্পাদনা করুন । আপনার যদি কেবল কিছু ফাইল অনুলিপি করতে হয় এবং স্টাফগুলি সংকলন না করতে হয় তবে কোন ফাইলটি debian/installকোথায় ইনস্টল করা দরকার তা নির্দিষ্ট করতে কেবল ফাইল সম্পাদনা করুন ।
  • debian/copyrightআপনার প্যাকেজ সম্পর্কে লাইসেন্সের তথ্য এবং সর্বশেষ সংস্করণটি কোথায় পাবেন সে সম্পর্কিত তথ্য যুক্ত করতে সম্পাদনা করুন (যদি প্রাসঙ্গিক হয়)।
  • debian/changelogকোনও আইটিপি-র রেফারেন্স অপসারণ করতে সম্পাদনা করুন (এটি কেবলমাত্র প্রাসঙ্গিক যদি আপনি দেবিয়ান প্রকল্পের জন্য কাজ করছেন)। পুনরায় নামকরণ debian/postinst.exকরুন debian/postinstএবং আপনার পোস্ট-ইনস্টলেশন কমান্ড যুক্ত করুন। পরে আপনি যদি আপনার প্যাকেজ আপডেট debchange -iকরেন তবে চেজলগ এন্ট্রি যুক্ত করতে চালনা করুন বা ইমাস্যাক্সে ফাইল সম্পাদনা করতে ( dpkg-dev-el ইনস্টল থাকা)।

চালান dpkg-buildpackage -rfakeroot -us -ucগড়ে তুলতে .debপ্যাকেজ (Remove -us -ucযদি আপনি আপনার PGP কী দিয়ে প্যাকেজ সাইন ইন করতে চান)।

সরাসরি বাইনারি প্যাকেজ তৈরি করা

যদি আপনি উত্স প্যাকেজটি তৈরি না করে সরাসরি বাইনারি প্যাকেজ তৈরি করার সিদ্ধান্ত নেন, যা প্রক্রিয়াটি সহজতর করার জন্য অনেকগুলি সরঞ্জাম নেই বলে সত্যই সহজ নয়, আপনার ডিবে প্যাকেজগুলির বিন্যাসের সাথে কিছু প্রাথমিক পরিচয় প্রয়োজন। এটি ডেবিয়ান পলিসি ম্যানুয়ালে বর্ণিত হয়েছে , বিশেষত ch। 3 (বাইনারি প্যাকেজগুলির ফর্ম্যাট) , সিএইচ। 5 (নিয়ন্ত্রণ ফাইল) , সিএইচ। 6 (ইনস্টলেশন স্ক্রিপ্ট) এবং পরিশিষ্ট বি (বাইনারি প্যাকেজ ম্যানিপুলেশন)

আপনি নিশ্চিত হন যে আপনার প্যাকেজটি প্রত্যাশিত ফাইলগুলি ইনস্টল করে /usr/share/doc/copyright(প্যাকেজের সামগ্রীর লাইসেন্স সহ প্যাকেজের সর্বশেষ সংস্করণটি কোথায় সন্ধান করতে হবে) এবং /usr/share/doc/changelog.Debian.gz(ডিবে প্যাকেজের চেঞ্জলগ ধারণ করে)। আপনি কেবল ইন-হাউস প্যাকেজটি ব্যবহার করতে যাচ্ছেন তবে আপনার এগুলির দরকার নেই তবে সেগুলি রাখাই ভাল।

ডেবিয়ান এবং ডেরিভেটিভগুলিতে

আপনার যদি ডেবিয়ান সরঞ্জাম উপলব্ধ থাকে dpkg-debতবে প্যাকেজটি তৈরি করতে ব্যবহার করুন । ইনস্টল করার জন্য ডেটাযুক্ত ডিরেক্টরিতে DEBIANকন্ট্রোল ফাইল এবং রক্ষণাবেক্ষণকারী স্ক্রিপ্টগুলি সমন্বিত শীর্ষ স্তরে ডাকা একটি ডিরেক্টরি যুক্ত করুন ।

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42

কঠিন পথে

আপনি ডেবিয়ান সরঞ্জাম আছে না থাকে, তাহলে আপনি যে ফাইলগুলি নামক প্যাকেজ করতে চান তার একটি সংরক্ষণাগার নির্মাণের data.tar.gz, নিয়ন্ত্রণ ফাইল নামক একটি পৃথক সংরক্ষণাগার control.tar.gz(কোন সাবডিরেক্টরি), এবং একটি টেক্সট ফাইল নামক debian-binaryএবং টেক্সট ধারণকারী 2.0

cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz

আপনি অন্তত একটি প্রয়োজন নিয়ন্ত্রণ ফাইল ক্ষেত্রের সাথে Package, Maintainer, Priority, Architecture, Installed-Size, Version, এবং যে কোনো প্রয়োজনীয় নির্ভরতা ঘোষণা।

ইনস্টলেশন কল করার পরে স্ক্রিপ্টটি কার্যকর করা হবে postinst। এটি কার্যকর করার জন্য নিশ্চিত হন। এটা পাশাপাশি যায় control

একটি বাইনারি প্যাকেজকে আলাদা ফর্ম্যাট থেকে রূপান্তর করা

আপনার যদি ইতিমধ্যে অন্য বিতরণ থেকে বাইনারি প্যাকেজ থাকে তবে আপনি এটি রূপান্তর করতে এলিয়েন ব্যবহার করতে পারেন ।


3
আইএমও এটি আমার আনসার থেকে একটি অনুলিপি? আপনি কি মনে করেন?
গিগামেগস

1
উত্তরটি অনুমান করে যে ওপেনটি ইম্যাকগুলি কীভাবে ব্যবহার করতে হয় তা জানে। ইমাকস কি এখানে প্রয়োজনীয়? চেঞ্জলগ সম্পাদনা করার জন্য, আমি মনে করি যে কেউ এটি ব্যবহার করতে পারে dch -i
ফাহিম মিঠা

এটা কি arকরছে tarনা?
মিমস্টিক

@ মিমস্টিক এটি আলাদা ফর্ম্যাট। আমি জানি না যে এখানে ডিব ফর্ম্যাটের ডিজাইনাররা আর এ ব্যবহার করতে পছন্দ করেছেন।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

1
আপনি যে নাম এবং ইমেল dh_make --createorigব্যবহার করে তা পরিবর্তন করতে চান তবে আপনার আগে export DEBEMAIL="me@example.com"এবং export DEBFULLNAME="Firstname Lastname"আগে প্রয়োজন ।
রায়ান

10

প্রথমে আপনাকে একটি বিল্ড ফোল্ডার এবং আপনার ফাইলগুলির একটি সংরক্ষণাগার তৈরি করতে হবে: tar czvf data.tar.gz files

তারপরে বিল্ড ফোল্ডারে আপনাকে অবশ্যই কিছু চাওয়া তথ্য সহ একটি নিয়ন্ত্রণ ফাইল তৈরি করতে হবে:

 Package: xxxxxx
 Version: 0.0.1
 Section: user/hidden 
 Priority: optional
 Architecture: armel
 Installed-Size: `du -ks usr|cut -f 1`
 Maintainer: Your Name <xxx@xxx.xx>
 Description: This is optional, but creates warnings if left out

তারপরে আপনি .deb ফাইলটির প্রাক ও পোস্ট ইনস্টল এবং প্রাক এবং পোস্ট অপসারণ নিয়ন্ত্রণ করতে স্বতন্ত্রভাবে প্রিনস্ট, পোস্টিন্ট, প্রিআরএম এবং পোস্টআরএম শেল স্ক্রিপ্টগুলি যুক্ত করতে পারেন এবং তারপরে আপনি টার দিয়ে নিয়ন্ত্রণ সংরক্ষণাগারটি তৈরি করতে পারেন: tar czvf control.tar.gz control preinst postinst prerm postrm

তারপর আপনি একটি ডেবিয়ান-বাইনারি ফাইল প্রয়োজন: echo 2.0 > debian-binary। আপনার বিল্ড ফোল্ডারে আপনার এখন এই ফাইলগুলি থাকা উচিত: debian-binary control.tar.gzএবং data.tar.gz

অবশেষে ar.deb ফাইলটি তৈরি করতে আপনার প্যাকেজ দরকার :ar -r xxx.deb debian-binary control.tar.gz data.tar.gz


1
ক্রমটি ar -r xxx.deb debian-binary control.tar.gz data.tar.gzচাপ দেওয়ার পক্ষে এটি অর্ডারটি গুরুত্বপূর্ণ: টিউমার আগে অবশ্যই নিয়ন্ত্রণ আসতে হবে।
Hibou57

@ বিটাইন, শীর্ষ ভোট প্রাপ্ত উত্তরগুলি আপনার পাঠ্যের উপর ভিত্তি করে আংশিকভাবে দেখায় তবে এটি এতে বিশদ যুক্ত করে এবং এটি আরও ভাল পাঠযোগ্য। আমরা যে অনুক্রমটি অনুলিপি / অনুলিপি করতে পারি তা এটি আরও সুদর্শন করে তোলে।
মারিওটোমো

3

আমি প্রচুর প্যাকেজ করি এবং একটি সম্পূর্ণ করা তুচ্ছ বিষয় নয়। একটি ইতিবাচক নোটে, ফাইল এবং স্ক্রিপ্টগুলি খুব কম কাজ করে। আপনি খুব সহজেই একটি ডিভাইস হিসাবে পরিচিত হিসাবে একটি প্যাকেজ তৈরি করতে পারেন ।

ডিব্রিয়েট হ'ল একটি সহজ সরল জিইউআই, কেবলমাত্র সাধারণ ডিইবি প্যাকেজ তৈরি করার জন্য। আপনি কেবল কোন ফাইলগুলি কোথায় যান সেগুলি নির্দিষ্ট করতে পারেন এবং পোস্ট / প্রাক ইনস্টল / আনইনস্টলগুলিতে / কি কার্যকর করা উচিত। আমি কেবলমাত্র আমার সমস্ত প্যাকেজগুলি স্ট্যান্ডার্ড পদ্ধতিতে করতাম, তবে আমি এই সরঞ্জামটি ব্যবহার শুরু করার পরে, যখন প্রয়োজন হবে তখনই ফিরে যাব।



1

এটির উবুন্টু প্যাকেজগুলি ব্যবহার করে ডেবিয়ানের জিমব্রা 7 এর সাথে ছুটে আসুন। (আমি জেদি, আমি জিব্রা কেবল উবুন্টুর জন্য প্রকাশিত হওয়া সত্ত্বেও ডুবিয়ান> বুবুন্টু পছন্দ করি)) আমি নিশ্চিত না যে আমি এর আগে কীভাবে কাজ করেছি, আমি নিশ্চিত যে এটি আগে ইনস্টল করার সময় আমার এই কাজটি করতে হবে না!

mkdir new
for i in *.deb
 do echo `date`: working on $i
 ar x $i
 cd control
 rm * 2> /dev/null
 tar -xzpvf ../control.tar.gz
 tr "_" "-" < control > control2
 mv -v control2 control
 tar -czpvf ../control.tar.gz .
 cd ..
 ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control

আপনার সমস্ত নতুন .deb ফাইল এতে থাকবে new/

দ্রষ্টব্য : এটি হ্রাস করা ছিল - dpkg on Wheezy এর এখন --for-Bad-version রয়েছে।


1

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


আপনি উত্স থেকে ইনস্টল করতে প্যাকেজ ট্র্যাক করার জন্য এটি দুর্দান্ত বিকল্প হিসাবে মনে হচ্ছে। আপনি আরও বিস্তারিত অফার করতে পারেন? উদাহরণস্বরূপ, ইনস্টলেশন চলাকালীন আপনি সিমলিংকগুলি পরিবর্তন করতে পারেন, ফাইলগুলি মুছতে পারেন, কনফিগার ফাইলগুলি সম্পাদনা করতে পারেন, ডিমেন যোগ করতে পারেন, ইত্যাদি ... ডীজ কতটা চেকইনস্টল ট্র্যাক করে এই পরিবর্তনগুলি পূর্বাবস্থায় ফিরিয়ে আনতে পারে? প্রারম এবং পোস্টর্ম স্ক্রিপ্টগুলি যুক্ত করতে আপনি কি সহজেই এর আউটপুট পরিবর্তন করতে পারেন?
এটজি

উইকি.ডিবিয়ান.আর . / চেকইনস্টল দেখুন যদি আপনি ইনস্টলের সময় জিনিসগুলি পরিবর্তন করতে চান - সহজতম পদ্ধতিটি মেকফাইলে সংশোধন করুন ইনস্টল বিভাগটি পরিবর্তন করুন। prerm / postrm - আমি এটি সংশোধন করার উপায় খুঁজে পাইনি। এটি কেবল ছোট প্রোগ্রামগুলির জন্য সহজ আনইনস্টল করার অনুমতি দেয়।
undefine

-4
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
  libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.