ডেবিয়ান প্যাকেজ ক্রিয়েশন HowTo

Debian Package Creation Howto



1. প্রস্তাবনা

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

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







প্যাকেজ বিন্যাস আপনার লিনাক্স বিতরণের উপর নির্ভর করে। নির্বাচিত বিন্যাসগুলি নিম্নরূপ:



deb

ব্যবহৃত প্যাকেজ: ডেবিয়ান জিএনইউ/লিনাক্স , উবুন্টু , আর্মবিয়ান , লিনাক্স মিন্ট , Knoppix



rpm

ব্যবহৃত প্যাকেজ: লাল টুপি , ফেডোরা , CentOS , OpenSuse





tgz and txz

ব্যবহৃত প্যাকেজ: স্ল্যাকওয়্যার

tar.xz

ব্যবহৃত প্যাকেজ: আর্চ লিনাক্স



এই নথিতে কীভাবে ডেবিয়ান জিএনইউ/লিনাক্সের জন্য একটি প্যাকেজ তৈরি করা যায় তা সংক্ষেপে ব্যাখ্যা করা হয়েছে। ডেবিয়ান প্যাকেজ ফরম্যাট সম্পর্কে বিস্তারিত তথ্যের জন্য এবং একটি 'ডেব' ভিত্তিক লিনাক্স সিস্টেম বজায় রাখার সরঞ্জামগুলির জন্য আপনি ডেবিয়ান প্যাকেজ ম্যানেজমেন্ট বইটি দেখতে পারেন [dpmb] ডেবিয়ান জিএনইউ/লিনাক্সের জন্য প্যাকেজ তৈরি করতে এই নথিগুলি অপরিহার্য:

  • ডেবিয়ান নিউ মেইনটেনারের গাইড [ডিএনএমজি]
  • ডেবিয়ান ডেভেলপারের রেফারেন্স [জিডিআর]
  • ডেবিয়ান প্যাকেজিং টিউটোরিয়াল [করতে পারা]
  • ডেবিয়ান পলিসি ম্যানুয়াল [dpm]

আমরা যে প্যাকেজটি নিয়ে কাজ করব তার নাম হল 'হ্যালোওর্ল্ড' এবং এর সংস্করণ নম্বর 0.1। প্রদর্শনের উদ্দেশ্যে এটিতে কেবল একটি পাইথন স্ক্রিপ্ট রয়েছে যা বিখ্যাত বার্তা হ্যালো, ওয়ার্ল্ড!

#!/usr/bin/python print ('Hello, world!') 

2. প্রয়োজনীয়তা

2.1। জিপিজি কী

ধাপ 1 হিসাবে, আপনার জিপিজি কী পাওয়া যায়। পরবর্তীতে, প্যাকেজে স্বাক্ষর করার জন্য চাবির প্রয়োজন হবে। মনে রাখবেন যে স্বাক্ষরবিহীন প্যাকেজগুলি অবিশ্বস্ত এবং ডেবিয়ান মহাবিশ্বের অংশ হতে পারে না।

যদি আপনার জিপিজি কী না থাকে তবে একটি তৈরি করুন। আপনি নিচের তিনটি ধাপ অনুসরণ করতে পারেন। প্রথম কমান্ডটি একটি নতুন কী উৎপন্ন করে, দ্বিতীয়টি আপনার নতুন কীটি একটি পৃথক ফাইলে রপ্তানি করে এবং তৃতীয়টি আপনার ব্যক্তিগত কীরিংয়ে কী যুক্ত করে।

$ gpg --gen-key $ gpg -a --output ~/.gnupg/YOUR_NAME.gpg --export 'YOUR NAME' $ gpg --import ~/.gnupg/YOUR_NAME.gpg 

সৃষ্টির সময় নিশ্চিত করুন যে প্রদত্ত নাম _YOUR NAME_ সঠিক। প্রথম নাম এবং শেষ নামের সংমিশ্রণ ব্যবহার করা সাধারণ। ডেবিয়ান প্যাকেজের 'কন্ট্রোল' ফাইল তৈরি করার সময় এই নামটি প্যাকেজে ঠিক একই রকম হতে হবে। জিপিজি সম্পর্কিত আরও তথ্যের জন্য জিএনইউ প্রাইভেসি হ্যান্ডবুক [gph] দেখুন।

2.2। প্যাকেজিং টুল চেইন

সোর্স কোড সহ একটি ডেবিয়ান প্যাকেজ তৈরি করতে আপনার সিস্টেমে নিম্নলিখিত সফ্টওয়্যার প্যাকেজগুলি প্রয়োজন:

  • নির্মাণ-অপরিহার্য
  • অটোকনফ
  • অটোমেক
  • autotools-dev
  • dh- তৈরি
  • দুর্বল
  • devscripts
  • fakeroot
  • xutils
  • লিন্টিয়ান
  • বিল্ডার

ব্যবহারকারী 'রুট' হিসাবে আপনি নিম্নলিখিত কমান্ড ব্যবহার করে এগুলি ইনস্টল করতে পারেন:

# apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder 

2.3। প্যাকেজ করার জন্য সফটওয়্যারটি প্রস্তুত করুন

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

$ mkdir -p ~./build/helloworld/0.1 

ডিরেক্টরিতে `tar.gz` সংকুচিত আর্কাইভ অনুলিপি করুন:

$ cp helloworld-0.1.tar.gz ~./build/helloworld/0.1 

ডিরেক্টরিতে পরিবর্তন করুন এবং প্যাকেজটি বের করুন:

$ cd ~./build/helloworld/0.1 ~/build/helloworld/0.1$ tar -xzf helloworld-0.1.tar.gz 

এখন, ডিরেক্টরিটিতে একটি পৃথক ডিরেক্টরিতে সোর্স কোড এবং সংকুচিত আর্কাইভ উভয়ই রয়েছে:

~/build/helloworld/0.1$ ls helloworld-0.1 helloworld-0.1.tar.gz 

3. ডেবিয়ানাইজেশন

এই মুহুর্তে আমরা ডেবিয়ান প্যাকেজের জন্য নির্দিষ্ট ফাইল যুক্ত করব। এই কারণেই এই পদক্ষেপের নাম দেওয়া হয়েছে সফটওয়্যারের _ ডেবিয়ানাইজেশন_। এটি বেশ কয়েকটি একক ধাপে সম্পন্ন করা হয়।

3.1 প্যাকেজ কাঠামো প্রস্তুত করুন

সেই ডিরেক্টরিতে পরিবর্তন করুন যা প্যাকেজের সম্পূর্ণ সোর্স কোড রাখে। আমাদের উদাহরণে প্যাকেজটিতে `helloworld.py` ফাইল রয়েছে, শুধুমাত্র:

~$ cd build/helloworld/0.1/helloworld-0.1 ~/build/helloworld/0.1/helloworld-0.1$ ls helloworld.py 

ডেবিয়ান প্যাকেজের জন্য নির্দিষ্ট ফাইলগুলি যোগ করা যাক। টুল `dh_make` চলে আসে। সুইচ `-ই` প্রদত্ত ঠিকানাটি` ডেবিয়ান/কন্ট্রোল` ফাইলের `রক্ষণাবেক্ষণ` ক্ষেত্রের ইমেল ঠিকানা হিসাবে ব্যবহার করে। প্যাকেজ নির্মাণের পরিবর্তে আপনার নিজের ইমেল ঠিকানা ব্যবহার করুন। মনে রাখবেন যে একই ইমেইল ঠিকানা ব্যবহার করুন যা আপনার জিপিজি কী এর সাথে সামঞ্জস্যপূর্ণ।

সুইচ `-f` প্রদত্ত ফাইলটিকে মূল উৎস আর্কাইভ হিসাবে ব্যবহার করে এবং বর্তমান প্রোগ্রাম ট্রি কপি করে‘ program.orig` এ চলে যায়।

~/build/helloworld/0.1/helloworld-0.1$ dh_make -e [email protected] -f ../helloworld-0.1.tar.gz 

প্রম্পটে আপনাকে যে ধরনের প্যাকেজ তৈরি করা উচিত তা নির্বাচন করতে বলা হয়। _ একক বাইনারি_ টাইপ `s` নির্বাচন করতে।

Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch? [s/i/m/l/k/n] s Maintainer name : Frank Hofmann Email-Address : [email protected] Date : Sat, 04 Nov 2017 21:16:13 +0100 Package Name : helloworld Version : 0.1 License : blank Type of Package : Single Hit to confirm: Currently there is no top level Makefile. This may require additional tuning. Done. Please edit the files in the debian/ subdirectory now. You should also check that the helloworld Makefiles install into $DESTDIR and not in / . 

এর ফলে 'ডেবিয়ান' নামে একটি ডিরেক্টরি পাওয়া যায়:

~/build/helloworld/0.1/helloworld-0.1$ ls debian helloworld.py 

এই ডিরেক্টরিতে সমস্ত প্যাকেজ-নির্দিষ্ট ফাইল রয়েছে।

3.2। নিয়ন্ত্রণ ফাইল সামঞ্জস্য করুন

ফাইল 'ডেবিয়ান/কন্ট্রোল' প্যাকেজটি নির্মাণের জন্য প্রয়োজনীয় নির্ভরতা রাখে। 'Dpkg -depcheck -d।/Configure' কমান্ড ব্যবহার করে আপনি সমস্ত প্রয়োজনীয় প্যাকেজ সহ একটি তালিকা পাবেন। আমাদের ক্ষেত্রে আর কোন প্যাকেজের প্রয়োজন নেই কারণ পাইথন একটি ব্যাখ্যা করা ভাষা।

এরপরে, আমাদের ফাইল 'ডেবিয়ান/কন্ট্রোল' সম্পাদনা করতে হবে এবং প্যাকেজ-নির্দিষ্ট মান যুক্ত করতে হবে। আমাদের উদাহরণের জন্য এটি নিম্নরূপ দেখায়:

Source: helloworld Section: python Priority: optional Maintainer: Frank Hofmann < [email protected] > Build-Depends: debhelper (>= 9) Standards-Version: 3.9.5 Homepage: http://www.efho.de/ #Vcs-Git: git://anonscm.debian.org/collab-maint/helloworld.git #Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/helloworld.git;a=summary Package: helloworld Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, python Description: Prints Hello World in Python Prints Hello World in Python 

3.3। কপিরাইট ফাইল সামঞ্জস্য করুন

ফাইল `ডেবিয়ান/কপিরাইট` সফটওয়্যার প্যাকেজের জন্য লাইসেন্স তথ্য রয়েছে। এটি GNU পাবলিক লাইসেন্স 2 (GPLv2) এর মাধ্যমে মুক্তির জন্য প্রস্তুত। আমাদের উদাহরণের জন্য এটি নিম্নরূপ দেখায়:

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: helloworld Source: http://www.efho.de/ Files: debian/* Copyright: 2017 Frank Hofmann < [email protected] > License: GPL-2+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in '/usr/share/common-licenses/GPL-2'. 

3.4। চেঞ্জলগ ফাইল সামঞ্জস্য করুন

কপিরাইট তথ্যের পর ফাইল `ডেবিয়ান/চেঞ্জলগ` সমন্বয় করতে হবে। আমাদের উদাহরণে আমরা প্রাথমিক রিলিজের তথ্য যোগ করি।

helloworld (0.1-1) unstable; urgency=low * Initial release -- Frank Hofmann < [email protected] > Sat, 04 Nov 2017 21:16:13 +0100 

আমাদের এখন পর্যন্ত এটাই দরকার - এখন আমরা প্যাকেজটি তৈরি করতে পারি, অবশেষে।


4. প্যাকেজ তৈরি করুন

প্যাকেজটি তৈরি করতে আমাদের একটি ডিরেক্টরি উপরে নিয়ে যেতে হবে এবং নিম্নলিখিত কমান্ডটি চালাতে হবে:

~/build/helloworld/0.1/helloworld-0.1$ dpkg-buildpackage -rfakeroot

বিকল্পটি -rfakeroot 'dpkg-buildpackage'- কে' fakeroot 'কমান্ডের সাহায্যে একটি বিশেষায়িত ব্যবহারকারী হিসাবে কমান্ড চালানোর অনুমতি দেয়। প্যাকেজ প্রস্তুত করতে এবং ফাইল এবং ডিরেক্টরি তৈরির জন্য এটি প্রয়োজনীয়।
উপরের কমান্ডটি আউটপুট বার্তার একটি দীর্ঘ তালিকায় ফলাফল দেয় (এখানে একটি জার্মান ভাষার পরিবেশে দেখানো হয়েছে):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution unstable dpkg-buildpackage: Quellen geändert durch Frank Hofmann < [email protected] > dpkg-buildpackage: Host-Architektur amd64 dpkg-source --before-build helloworld-0.1 fakeroot debian/rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-source: Information: Quellformat 3.0 (quilt) wird verwendet dpkg-source: Information: helloworld wird unter Benutzung des existierenden ./helloworld_0.1.orig.tar.gz gebaut dpkg-source: Information: helloworld wird in helloworld_0.1-1.debian.tar.xz gebaut dpkg-source: Information: helloworld wird in helloworld_0.1-1.dsc gebaut debian/rules build dh build dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian/rules binary dh binary dh_testroot dh_prep dh_auto_install dh_installdocs dh_installchangelogs dh_perl dh_link dh_compress dh_fixperms dh_strip dh_makeshlibs dh_shlibdeps dh_installdeb dh_gencontrol dpkg-gencontrol: Warnung: Feld Depends von Paket helloworld: unbekannte Substitutionsvariable ${shlibs:Depends} dh_md5sums dh_builddeb dpkg-deb: Paket helloworld wird in ../helloworld_0.1-1_amd64.deb gebaut. dpkg-genchanges <../helloworld_0.1-1_amd64.changes dpkg-genchanges: kompletter Quellcode beim Hochladen hinzufügen dpkg-source --after-build helloworld-0.1 dpkg-buildpackage: Alles hochzuladen (Originalquellen enthalten) signfile helloworld_0.1-1.dsc Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: 'Frank Hofmann (Hofmann EDV) < [email protected] > ' 4096-Bit RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1। প্যাকেজ যাচাই করা হচ্ছে

অভিনন্দন - আপনি একটি ডেবিয়ান প্যাকেজ তৈরিতে সফল হয়েছেন - হ্যাঁ! এখন, প্যাকেজটি ঘনিষ্ঠভাবে দেখুন। এখানে, `lintian` খেলার মধ্যে আসে। এই টুলটি আপনার প্যাকেজটি যাচাই করে যাতে ডেবিয়ান প্যাকেজগুলির কঠোর নিয়মগুলির বিরুদ্ধে লঙ্ঘন খুঁজে পাওয়া যায়।

পরীক্ষা চালানোর জন্য নিম্নলিখিত কমান্ড টাইপ করুন:

lintian helloworld_0.1-1_amd64.deb 

টুলটি নিয়ম লঙ্ঘন করে না কিন্তু বানান ত্রুটি এবং ভুল অক্ষর খুঁজে পায় না। সুইচ `–পেড্যান্টিক`` lintian` কে স্বাভাবিকের চেয়ে অনেক বেশি সমালোচনামূলক হতে বলে। আপনি নীচে দেখতে পাচ্ছেন `লিন্টিয়ান` একটু বিড়ম্বনাপূর্ণ এবং তিনটি সতর্কতা এবং একটি ত্রুটি আবিষ্কার করেছে।

প্রথম সতর্কতা ব্যতীত আমরা সহজেই `লিন্টিয়ান` কে খুশি করতে পারি এবং নিয়ম অনুযায়ী প্যাকেজের বিষয়বস্তু ঠিক করতে পারি। সতর্কতা 'নতুন-প্যাকেজ-বন্ধ হওয়া উচিত-এটিপি-বাগ'-এর অর্থ হল যে আইটিপি প্যাকেজের বিরুদ্ধে কোন বাগ রিপোর্ট নেই নিয়মিত ডেবিয়ান প্যাকেজের জন্য একটি বাগ রিপোর্ট বাগট্র্যাকারের কাছে পাঠাতে হবে প্যাকেজ ITP- কে অন্যদের জানাতে যে আপনি এই সফটওয়্যার প্যাকেজিং শুরু করতে চান।

4.2। সতর্কতা: `readme-debian-contains-debmake-template

ফাইল 'README.Debian' এই প্যাকেজ সম্পর্কিত অতিরিক্ত নোট রাখার উদ্দেশ্যে। `dh_make` আমাদের জন্য এই ফাইলটি তৈরি করেছে:

helloworld for Debian --------------------- -- Frank Hofmann < [email protected] > Sat, 04 Nov 2017 21:16:13 +0100 

আমাদের উদাহরণে আমাদের কাছে অতিরিক্ত তথ্য নেই, তাই আমরা ফাইলটি মুছে ফেলতে পারি।

4.3। সতর্কতা: `বর্ণনা-শুরু-সঙ্গে-নেতৃস্থানীয়-স্পেস`

এই সতর্কতাটি উত্থাপিত হয়েছে কারণ 'ডেবিয়ান/কন্ট্রোল' ফাইলে আমাদের প্যাকেজের দীর্ঘ বিবরণ একটি একক জায়গার বেশি দিয়ে শুরু হয়। যত তাড়াতাড়ি আমরা একটি একক স্থান অপসারণ সতর্কতা অদৃশ্য হয়ে যাবে।

4.4। ত্রুটি: 'বর্ণনা-সারসংক্ষেপ-ই-সদৃশ'

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


5. লিঙ্ক এবং রেফারেন্স

- [ddr] আন্দ্রিয়াস বার্থ, অ্যাডাম ডি কার্লো, রাফায়েল হার্টজগ, লুকাস নুসবাউম, ক্রিশ্চিয়ান শোয়ার্জ, ইয়ান জ্যাকসন: ডেবিয়ান ডেভেলপারের রেফারেন্স
- [ডিএনএমজি] জোসিপ রডিন, ওসামু আওকি: ডেবিয়ান নিউ মেইনটেনারের গাইড
- [dpmb] এক্সেল বেকার্ট, ফ্রাঙ্ক হফম্যান: ডেবিয়ান প্যাকেজ ম্যানেজমেন্ট বই
- [dpm] ডেবিয়ান নীতি ম্যানুয়াল
- [করতে পারা] ডেবিয়ান প্যাকেজিং টিউটোরিয়াল
- [জিপিএইচ] জিএনইউ প্রাইভেসি হ্যান্ডবুক
- [লুশপাই প্যাকেজ] অ্যালেক্স লুশপাই: কিভাবে উৎস থেকে ডেবিয়ান প্যাকেজ তৈরি করবেন


6. স্বীকৃতি

লেখক ধন্যবাদ জানাতে চান এক্সেল বেকার্ট এবং জেরোল্ড রুপ্রেচট এই নিবন্ধটি প্রস্তুত করার সময় তাদের সমর্থন এবং সমালোচকদের জন্য।