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


23

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

প্রশ্ন হল - এটি কি সম্ভব এবং যদি তাই হয় - কীভাবে?

একটি উদাহরণ দেওয়া যাক:

~/mypluginfolder/ফাইল রয়েছে x, yএকটি subfolder নামক abcভিতরে যে অন্য ফাইল নামক z

আমি এই ফোল্ডারটি টর করতে চাই: tar -cvf myfiles.tar ~/mypluginfolder

আমার ধারণা আমার ডেবিয়ান প্যাকেজটি দেখতে ভাল লাগবে

myfiles.tar.gz
myfiles+ppafoss_0.1-1/
   myfiles.tar
   DEBIAN
      changelog, compat, control, install, rules source

myfiles.tarউদাহরণস্বরূপ কোনও পরিচিত ফোল্ডারের লোকেশন থেকে কীভাবে এটি অনাসক্ত করা সম্ভব?

/usr/share/rhythmbox/plugins/

সুতরাং চূড়ান্ত ফলাফল হবে:

/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z

যদি - লঞ্চপ্যাডের উত্স প্রয়োজন বলে মনে হয়, তবে উত্সের ফোল্ডারগুলি এবং ফাইলগুলিকে ডিবে প্যাকেজ কাঠামোর মধ্যে কোথায় রেখে দিতে হবে সে সম্পর্কে পরামর্শ নেওয়া হচ্ছে।


এটি শেষ পর্যন্ত পৃথক লঞ্চপ্যাড পিপিএ প্যাকেজগুলির একটি সিরিজ হয়ে উঠবে।

আমি যা পছন্দ করি (তবে তা অর্জন করতে সক্ষম হতে পারে না) তা হ'ল আমার প্যাকেজিংকে সর্বনিম্ন রাখা - কোনও টেম্পলেট থেকে প্যাকেজগুলির একটি সিরিজ তৈরি করা এবং খালি সর্বনিম্ন সামঞ্জস্য করা (চেঞ্জলগ ইত্যাদি + টর ফাইল / ফাইল এবং ফোল্ডার কাঠামো) ।


উম ... আপনি কেন একটি .দেব তারের নিষ্কাশন করতে চান ? কেন কেবল টার থেকে উত্স কোডটি না নিয়ে উত্সটি দিয়ে স্ক্র্যাচ থেকে ডেব তৈরি করবেন?
থমাস ওয়ার্ড

2
একটি সম্ভাবনা হতে পারে যে আপনি অন্য জায়গা থেকে অ্যাডোব-ফ্ল্যাশ শৈলী থেকে টারবালটি জিততে পারেন।
jrg

@jrg, এটি .bin ইনস্টলারটি ডাউনলোড করে, টারবাল নয়। অ্যাডোব প্যাকেজিং শৈলী উত্সটি সরবরাহ করে না (এটির বদ্ধ উত্স)। ধারণাটি এখনও একইরকম, অন্য কোথাও থেকে কোডটি ডাউনলোড করুন এবং তারপরে এক্সট্র্যাক্ট / ইনস্টল করুন (আমি এখানে নাইট = পিক করছি: পি)
টমাস ওয়ার্ড

@ লর্ডফটাইম একই পার্থক্য। ; পি
জুনিয়র

উত্তর:


31

নীচে, আমি ধরে নিচ্ছি যে উত্সটি উন্মুক্ত (যেমন পাইথন স্ক্রিপ্ট) যা কোনও আর্কিটেকচারের (যেমন: amd64 বা i386) আবদ্ধ নয়, তাই "সমস্ত"। আপনার যদি কিছু সি উত্স Architecture: amd64 i386থাকে তবে আপনার উত্স controlফাইলটিতে আপনার ব্যবহার করা দরকার ।


লঞ্চপ্যাডের জন্য প্রস্তুত প্যাকেজ তৈরি

এটি শেষ পর্যন্ত পৃথক লঞ্চপ্যাড পিপিএ প্যাকেজগুলির একটি সিরিজ হয়ে উঠবে।

আমি যা পছন্দ করি (তবে তা অর্জন করতে সক্ষম হতে পারে না) তা হ'ল আমার প্যাকেজিংকে সর্বনিম্ন রাখা - একটি টেম্পলেট থেকে প্যাকেজগুলির একটি সিরিজ তৈরি করা এবং খালি ন্যূনতম (চেঞ্জলগ ইত্যাদি + টার ফাইল) সামঞ্জস্য করা।

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

debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...

debian/copyrightপ্যাকেজের সাথে সম্পর্কিত লাইসেন্স সম্পর্কে ব্যবহারকারীদের অবহিত করার জন্য একটি ফাইলও কার্যকর হতে পারে। আমার মনে হয় না যে আপনার কোনও postinstস্ক্রিপ্ট দরকার কারণ আপনার কেবল কিছু ফাইল বের করতে হবে। compat"8" বলুন, ডিহেল্পার সামঞ্জস্যতা স্তর থাকতে হবে। ( আরও তথ্যের জন্য দয়া করে ডিবেহেল্পারের ম্যানুয়াল পৃষ্ঠাটি দেখুন)

changelogফাইলের সাথে সম্পাদনা করা যেতে পারে dchকমান্ড থেকে পাওয়া devscriptsপ্যাকেজ। rules(Debhelper ব্যবহার করে) থাকা উচিত:

#!/usr/bin/make -f
%:
    dh $@
override_dh_install:
    dh_install mypluginfolder/ /usr/share/rhythmbox/plugins

এটি ব্যবহার করে নির্বাহযোগ্য করুন chmod 755 debian/rules। একটি উত্স প্যাকেজ ব্যবহার করে বিল্ড করা যেতে পারে debuild -S। নামের ডিরেক্টরিতে নিশ্চিত হন <package-name>-<version>override_আচরণ এবং dhকমান্ড সম্পর্কে আরও তথ্য এর ম্যানুয়াল পৃষ্ঠায় পাওয়া যাবে ।

ডেবিয়ান নিউ রক্ষণাবেক্ষণকারীকে সহায়িকা আমাকে এই বোঝার জন্য খুবই মূল্যবান ছিল, এটা বাঞ্ছনীয় পড়া আছে। উদাহরণস্বরূপ প্যাকেজিং https://github.com/Bumblebee-Project/bumblebee-ppa এ পাওয়া যাবে ।


বিদ্যমান ফাইল ট্রি থেকে প্যাকেজ তৈরি করা হচ্ছে

dpkg-deb -bবিদ্যমান ফাইল ট্রি থেকে টার্বল তৈরির জন্য ব্যবহার করা যেতে পারে। প্রথমে এমন একটি ডিরেক্টরি তৈরি শুরু করুন যা আপনার প্যাকেজের নামে রাখা উচিত। আমি তোমাদের এটির নাম করতে চান অনুমান করব myplugin, এবং এটি রাখা /usr/share/rhythmbox/plugins/mypluginfolder। এছাড়াও, DEBIANপ্যাকেজ তথ্য সংরক্ষণের জন্য ডিরেক্টরি (বড় হাতের!) তৈরি করুন:

mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder
mkdir myplugin/DEBIAN

আপনার ফাইলগুলির উপর অনুলিপি করুন:

cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins

এরপরে, আপনার একটি তথাকথিত নিয়ন্ত্রণ ফাইলের প্রয়োজন হবে myplugin/DEBIAN/controlযেখানে প্যাকেজটি বর্ণনা করা আছে। এই জাতীয় ফাইলের বিষয়বস্তুগুলি নীচে রাখা হয়েছে:

Package: myplugin
Version: 1.0-1
Maintainer: You <whatever@contact.address>
Architecture: all
Description: plugins for Rhythmbox
 Longer description here
 .
 As you can see, new paragraph are split by a single dot,
 and lines have to be indented by one space.

এখন, আপনি নিজের প্যাকেজটির বিষয়বস্তুগুলি বৈকল্পিকভাবে যাচাই করতে পারেন। পরবর্তী কমান্ডটি ফাইল এবং ডিরেক্টরিতে প্রবেশের বিষয়বস্তুগুলির তালিকা তালিকাভুক্ত করে myplugin:

find myplugin -ls

আপনি যদি সন্তুষ্ট হন তবে বর্তমান ডিরেক্টরিতে প্যাকেজটি তৈরি করুন:

dpkg-deb -b myplugin .

একটি নতুন ফাইল প্রদর্শিত মত নামে হবে <package>_<version>_<architecture>.debএই উদাহরণে যা myplugin_1.0-1_all.deb। আপনি lessফাইলটিতে উঁকি দেওয়ার জন্য প্রোগ্রামটি ব্যবহার করতে পারেন । উদাহরণস্বরূপ less myplugin_1.0-1_all.deb,।


3
+1 পরম প্রতিভা - আমি স্যার আপনাকে প্রণাম। ধন্যবাদ!
ফসফ্রিডম

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