ڈیبین پیکیج تخلیق HowTo

Debian Package Creation Howto



1. پیشکش

مشین کے ذمہ دار ہونے کا مطلب ہارڈ ویئر کے ساتھ ساتھ سافٹ ویئر کے اجزاء کا خیال رکھنا ہے۔ جیسا کہ ہر روز کی زندگی میں بطور سسٹم ایڈمنسٹریٹر دیکھا جاتا ہے کہ سافٹ ویئر پیکج کے طور پر سافٹ ویئر کو انسٹال کرنا بہتر ہے بجائے سورس فائلوں کے ایک گروپ کے۔ یہ نظام کو صحیح طریقے سے برقرار رکھنے کے اخراجات کو کم کرتا ہے۔

پیکیج جو آپ کے پسندیدہ ڈسٹری بیوٹر سے دستیاب ہیں ان کی توثیق کی جاتی ہے اور ان کی نگرانی ایک پیکیج مینٹینر کرتا ہے۔ اس نے سافٹ ویئر کا تجربہ کیا ، اور یقین دلایا کہ یہ تقسیم میں دستیاب دیگر سافٹ وئیر پیکجوں کے مطابق ہے۔ مزید برآں ، پیکیج پر ایک GPG کلید کے ساتھ پیکج مینٹینر سے دستخط کیے جاتے ہیں۔ یہ پیکیج کی سالمیت کی ضمانت دیتا ہے اور آپ کو دکھاتا ہے کہ پیکیج ایک قابل اعتماد ذریعہ سے ہے۔







پیکیج کی شکل آپ کے لینکس کی تقسیم پر منحصر ہے۔ منتخب کردہ فارمیٹس درج ذیل ہیں:



deb

استعمال شدہ پیکیجز: ڈیبین جی این یو/لینکس۔ ، اوبنٹو۔ ، آرمبین ، لینکس ٹکسال۔ ، نوپکس۔



rpm

استعمال شدہ پیکیجز: لال ٹوپی ، فیڈورا۔ ، سینٹوس۔ ، اوپن سوز۔





tgz and txz

استعمال شدہ پیکیجز: سلیک ویئر

tar.xz

استعمال شدہ پیکیجز: آرک لینکس۔



یہ دستاویز بتاتی ہے کہ ڈیبین GNU/لینکس کے لیے مختصرا a ایک پیکیج کیسے بنایا جائے۔ ڈیبین پیکج فارمیٹ اور 'ڈیب' پر مبنی لینکس سسٹم کو برقرار رکھنے کے ٹولز کے بارے میں تفصیلی معلومات کے لیے آپ ڈیبین پیکیج مینجمنٹ بک پر نظر ڈال سکتے ہیں [ڈی پی ایم بی] ڈیبین GNU/لینکس کے لیے پیکج بنانے کے لیے یہ دستاویزات ضروری ہیں:

ہم جس پیکیج کے ساتھ کام کریں گے اس کا نام `helloworld` ہے اور اس کا ورژن نمبر 0.1 ہے۔ مظاہرے کے مقاصد کے لیے اس میں صرف ایک ازگر کا سکرپٹ ہوتا ہے جو مشہور پیغام ہیلو ، ورلڈ!

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

2. تقاضے۔

2.1۔ جی پی جی کلید۔

مرحلہ 1 کے طور پر ، اپنی GPG کلید دستیاب کریں۔ بعد میں ، پیکیج پر دستخط کرنے کے لیے کلید کی ضرورت ہوگی۔ ذہن میں رکھو کہ دستخط شدہ پیکج ناقابل اعتماد ہیں اور ڈیبین کائنات کا حصہ نہیں بن سکتے۔

اگر آپ کے پاس جی پی جی کلید نہیں ہے تو ابھی تک ایک بنائیں۔ آپ ذیل میں تین مراحل پر عمل کر سکتے ہیں۔ پہلی کمانڈ ایک نئی کلید تیار کرتی ہے ، دوسری آپ کی نئی کلید کو ایک علیحدہ فائل میں برآمد کرتی ہے ، اور تیسری آپ کی ذاتی کلید میں کلید شامل کرتی ہے۔

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

تخلیق کے دوران اس بات کو یقینی بنائیں کہ دیا گیا نام _YOUR NAME_ درست ہے۔ پہلے نام اور آخری نام کا مجموعہ استعمال کرنا عام ہے۔ یہ نام پیکیج میں بالکل ایک جیسا ہونا پڑے گا ، پھر ، جب ڈیبین پیکیج کی `کنٹرول‘ فائل بنائی جائے۔ GPG کے بارے میں مزید معلومات کے لیے GNU پرائیویسی ہینڈ بک [gph] پر ایک نظر ڈالیں۔

2.2۔ پیکیجنگ ٹول چین۔

سورس کوڈ کے ساتھ ڈیبین پیکیج بنانے کے لیے آپ کے سسٹم پر درج ذیل سافٹ وئیر پیکج درکار ہیں۔

  • تعمیر ضروری
  • autoconf
  • آٹو میک
  • autotools-dev
  • ڈی ایچ میک
  • کمزور
  • devscripts
  • جعلی
  • 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. ڈیبائینائزیشن

اس مقام پر ہم ان فائلوں کو شامل کریں گے جو ڈیبین پیکیج کے لیے مخصوص ہیں۔ یہی وجہ ہے کہ اس مرحلے کو سافٹ ویئر کا _Debianization_ کا نام دیا گیا ہے۔ یہ کئی سنگل مراحل میں کیا جاتا ہے۔

3.1 پیکیج کا ڈھانچہ تیار کریں۔

ڈائریکٹری میں تبدیل کریں جو پیکیج کا پورا سورس کوڈ رکھتا ہے۔ ہماری مثال میں پیکیج میں فائل `helloworld.py` ہے ، صرف:

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

آئیے ان فائلوں کو شامل کریں جو ڈیبین پیکیج کے لیے مخصوص ہیں۔ آلہ `dh_make` کھیل میں آتا ہے۔ سوئچ `-e` دیئے گئے ایڈریس کو` ڈیبین/کنٹرول ‘فائل کے` مینٹینر` فیلڈ میں بطور ای میل ایڈریس استعمال کرتا ہے۔ پیکیج بنانے کے بجائے اپنا ای میل ایڈریس استعمال کریں۔ ذہن میں رکھیں کہ وہی ای میل پتہ استعمال کریں جو آپ کی GPG کلید کے مطابق ہو۔

سوئچ `-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 

اس آلے میں قاعدے کی خلاف ورزی نہیں ملتی بلکہ ہجے کی غلطیاں اور غلط حروف بھی ملتے ہیں۔ سوئچ `` پیڈینٹک '' لنٹین سے پوچھتا ہے کہ وہ معمول سے کہیں زیادہ اہم ہو۔ جیسا کہ آپ نیچے دیکھ سکتے ہیں `لنٹین‘ تھوڑا سا بدمزاج ہے اور اس نے تین انتباہات اور ایک غلطی دریافت کی ہے۔

پہلی انتباہ کے علاوہ ہم آسانی سے `لنٹین‘ کو خوش کر سکتے ہیں اور قاعدے کے مطابق پیکج کے مواد کو درست کر سکتے ہیں۔ انتباہ `new-package-should-close-itp-bug` کا مطلب ہے کہ آئی ٹی پی پیکیج کے خلاف کوئی بگ رپورٹ نہیں ہے باقاعدہ ڈیبین پیکیج کے لیے بگ ٹریکر کو پیکج آئی ٹی پی کے لیے بھیجنا ہوتا ہے تاکہ دوسروں کو مطلع کیا جا سکے کہ آپ اس سافٹ ویئر کی پیکیجنگ شروع کرنا چاہتے ہیں۔

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] آندریاس بارتھ ، ایڈم ڈی کارلو ، رافیل ہرٹزوگ ، لوکاس نوسباؤم ، کرسچن شوارز ، ایان جیکسن: ڈیبین ڈویلپر کا حوالہ۔
- [ڈی این ایم جی] جوسیپ روڈین ، اوسامو اوکی: ڈیبین نیو مینٹینر گائیڈ۔
- [ڈی پی ایم بی] ایکسل بیکرٹ ، فرینک ہوفمین: ڈیبین پیکیج مینجمنٹ بک۔
- [ڈی پی ایم] ڈیبین پالیسی دستی
- [کر سکتے ہیں] ڈیبین پیکیجنگ ٹیوٹوریل۔
- [gph] جی این یو پرائیویسی ہینڈ بک۔
- [lushpaiPackage] الیکس Lushpai: سورس سے ڈیبین پیکیج بنانے کا طریقہ


6. اعترافات

مصنف شکریہ ادا کرنا چاہتا ہے۔ ایکسل بیکرٹ۔ اور جیرولڈ روپریچٹ۔ اس مضمون کی تیاری کے دوران ان کی حمایت اور ناقدین کے لیے۔