স্ক্রিপ্ট বা বাইনারি থেকে একটি .deb প্যাকেজ তৈরি করুন


73

আমি এমন কিছুর জন্য .deb প্যাকেজগুলি তৈরি করার সহজ উপায় অনুসন্ধান করেছি যা সংকলনের জন্য কোনও সোর্স কোড নেই (কনফিগারেশন, শেলস স্ক্রিপ্টস, মালিকানাধীন সফ্টওয়্যার)। এটি বেশ সমস্যা ছিল কারণ বেশিরভাগ প্যাকেজ টিউটোরিয়ালগুলি ধরে নিচ্ছে যে আপনি সংকলন করতে চান এমন উত্স টার্বল রয়েছে। তারপরে আমি এই সংক্ষিপ্ত টিউটোরিয়ালটি পেয়েছি (জার্মান)।

এর পরে, আমি একটি সাধারণ সংগ্রহস্থল তৈরি করতে একটি ছোট স্ক্রিপ্ট তৈরি করেছি। এটার মত:

rm /export/my-repository/repository/*
cd /home/tdeutsch/deb-pkg
for i in $(ls | grep my); do dpkg -b ./$i /export/my-repository/repository/$i.deb; done
cd /export/avanon-repository/repository
gpg --armor --export "My Package Signing Key" > PublicKey
apt-ftparchive packages ./ | gzip > Packages.gz
apt-ftparchive packages ./ > Packages
apt-ftparchive release ./ > /tmp/Release.tmp; mv /tmp/Release.tmp Release
gpg --output Release.gpg -ba Release

আমি এপটি কীরিং-তে কী যুক্ত করেছি এবং উত্সটি এর মতো অন্তর্ভুক্ত করেছি:

deb http://my.default.com/my-repository/ ./

দেখে মনে হচ্ছে রেপো নিজেও ভালভাবে কাজ করছে (আমি কিছু সমস্যার মধ্যে পড়েছিলাম, সেগুলি সমাধান করার জন্য আমার প্যাকেজগুলি দু'বার যুক্ত করতে এবং রিলিজ ফাইলের জন্য টেম্প-ফাইলটি কাজ করার প্রয়োজন ছিল)। আমি কিছু ডাউনলোড .দেব রেপোতে রেখেছি, দেখে মনে হচ্ছে তারা সমস্যা ছাড়াই কাজ করছে। তবে আমার স্ব-নির্মিত প্যাকেজগুলি করেনি ... আমি করি না sudo apt-get update, তারা এ জাতীয় ত্রুটি ঘটায়:

E: Problem parsing dependency Depends
E: Error occurred while processing my-printerconf (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/my.default.com_my-repository_._Packages
E: The package lists or status file could not be parsed or opened.

কারও কি ধারণা আছে যে আমি কী ভুল করেছি?

আপডেট 2012-03-06: ডিইবিগুলি তৈরির সহজ উপায় সন্ধানকারী অন্য ব্যক্তির জন্য কেবলমাত্র একটি ইঙ্গিত: এফপিএম একবার দেখুন ।


আপনি কি প্যাকেজে কোনও ডিবিআইএন / নিয়ন্ত্রণ ফাইল যুক্ত করেছেন, যা ক্ষেত্রটি নির্ভর করে:?
বিলাল আক্তার

5
BTW। এখন আমি আমার প্যাকেজিং প্রয়োজনের জন্য এফপিএম ব্যবহার করছি: github.com/jordansissel/fpm
টমাস

এফডাব্লুআইডাব্লু, আমি যে প্যাকেজটি তৈরি করেছি তাতে একই ত্রুটি বার্তাটি পেয়েছি কারণ আমি নির্ভরশীলতার একটি ভুলভাবে উল্লেখ করেছি। যখন "foo (> = 2.1)" হওয়া উচিত তখন আমি "foo> = 2.1" লিখেছিলাম। আমি ত্রুটিটির শেষার্ধের দিকে তাকানোর এক ঘণ্টার বেশি সময় কাটিয়েছি তবুও ত্রুটিটির প্রথমার্ধটি আমাকে ঠিক কী ভুলটি বলছিল তা বোঝানোর আগে ... (পিএস: এফপিএম শিলা। আপনি এটলিও তাকান।)
মার্ক ই। হাজেস

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

1
এফপিএম সম্পর্কে তথ্য ভাগ করে নেওয়ার জন্য অনেক ধন্যবাদ। এটি কবজ মত কাজ করে!
দামিয়ান নাদালেস

উত্তর:


70

আপনি সংযুক্ত টিউটোরিয়ালটি প্যাকেজ তৈরির জন্য নিম্ন স্তরের পদ্ধতির ব্যবহার করে। এই জাতীয় দৃষ্টিভঙ্গি সাধারণত সুপারিশ করা হয় না এবং সাবধানতার সাথে করা না হলে সব ধরণের সমস্যা হতে পারে।

প্যাকেজিংয়ের বেসিকগুলি বুঝতে পারলে স্ক্রিপ্টের জন্য .deb তৈরি করা খুব সহজ। সংক্ষেপে:

# Configure your paths and filenames
SOURCEBINPATH=~
SOURCEBIN=myscript.sh
DEBFOLDER=~/somescripts
DEBVERSION=0.1

DEBFOLDERNAME=$DEBFOLDER-$DEBVERSION

# Create your scripts source dir
mkdir $DEBFOLDERNAME

# Copy your script to the source dir
cp $SOURCEBINPATH/$SOURCEBIN $DEBFOLDERNAME 
cd $DEBFOLDERNAME

# Create the packaging skeleton (debian/*)
dh_make -s --indep --createorig 

# Remove make calls
grep -v makefile debian/rules > debian/rules.new 
mv debian/rules.new debian/rules 

# debian/install must contain the list of scripts to install 
# as well as the target directory
echo $SOURCEBIN usr/bin > debian/install 

# Remove the example files
rm debian/*.ex

# Build the package.
# You  will get a lot of warnings and ../somescripts_0.1-1_i386.deb
debuild

আরও স্ক্রিপ্ট যুক্ত করার জন্য সেগুলি ডিরেক্টরিতে অনুলিপি করা উচিত এবং ডেবিয়ান / ইনস্টল ফাইলটিতে যুক্ত করা দরকার - তবে কেবল পুনরায় রান করুন। আপনার প্রয়োজন অনুযায়ী ডিবিয়ান / * ফাইলগুলিও পরীক্ষা করে আপডেট করা উচিত।

আপনার জন্য man পৃষ্ঠা পড়া উচিত: dh_make, dh_install, এবংdebuild


3
ডিবিয়ান / নিয়ন্ত্রণ সম্পাদনা করুন, "আর্কিটেকচার: যে কোনও" অবশ্যই "আর্কিটেকচার: সমস্ত" এ পরিবর্তন করতে হবে। উত্তর হিসাবে প্রশ্ন সেট করতে ভুলবেন না;)
জোও পিন্টো

3
ডিরেক্টরিটির নতুন নামকরণ এবং ডেবিয়ান / চেঞ্জলগ আপডেট করার সাথে সাথে আপনাকে অবশ্যই নতুন সংস্করণ অনুসারে .orig সংরক্ষণাগার তৈরি করতে হবে, এটি আর্কাইভটি উত্স ডিরেক্টরি বিষয়বস্তু (ডিবিয়ান / অন্তর্ভুক্ত না করে) তৈরি করে।
জোও পিন্টো

1
ডিরেক্টরিটির সাথে অন্তর্ভুক্ত রয়েছে, আমি সাধারণত যা করি তা হ'ল সিপি সোর্সডির সোর্সিডির.রিগ অ্যান্ড অ্যান্ড আরএম-আরফ সোর্সডির.রিগ / ডেবিয়ান এবং অ্যান্ড সিআরভিএফ ফাইলনাম.অরিগ্র.টি.আরসি সরিসিডির.রিগ
পিন্টো

1
--indepপতাকা যুক্ত dh_makeকরার সাথে প্যাকেজটিকে "আর্কিটেকচার: সমস্ত" তৈরি করা হবে এছাড়াও -b11.04 বা তারও উপরে পতাকাটি বিদ্যমান নেই।
অ্যান্ড্রুসোমথিং

1
.Deb প্যাকেজটি তৈরির পরে, আপনার ত্রুটি এবং বর্ধনের জন্য lintian somescripts_0.1-1_i386.debবা lintian package-source.changes
এটিগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.