డెబియన్ ప్యాకేజీ సృష్టి హౌ టు

Debian Package Creation Howto



1. ముందుమాట

యంత్రానికి బాధ్యత వహించడం అంటే హార్డ్‌వేర్‌తో పాటు సాఫ్ట్‌వేర్ భాగాలను జాగ్రత్తగా చూసుకోవడం. సిస్టమ్ అడ్మినిస్ట్రేటర్‌గా ప్రతి రోజు జీవితంలో చూసినట్లుగా, సాఫ్ట్‌వేర్‌ను సోర్స్ ఫైల్‌ల సమూహం కాకుండా సాఫ్ట్‌వేర్ ప్యాకేజీగా ఇన్‌స్టాల్ చేయడం చాలా మంచిది. ఇది వ్యవస్థను సరిగ్గా నిర్వహించడానికి ఖర్చులను తగ్గిస్తుంది.

మీకు ఇష్టమైన డిస్ట్రిబ్యూటర్ నుండి లభించే ప్యాకేజీలు ప్యాకేజీ నిర్వహణదారుచే ధృవీకరించబడతాయి మరియు పర్యవేక్షించబడతాయి. అతను సాఫ్ట్‌వేర్‌ను పరీక్షించాడు మరియు పంపిణీలో అందుబాటులో ఉన్న ఇతర సాఫ్ట్‌వేర్ ప్యాకేజీలకు ఇది సరిపోతుందని హామీ ఇచ్చాడు. ఇంకా, ప్యాకేజీ నిర్వహణదారు నుండి GPG కీతో ప్యాకేజీ సంతకం చేయబడింది. ఇది ప్యాకేజీ యొక్క సమగ్రతకు హామీ ఇస్తుంది మరియు ప్యాకేజీ విశ్వసనీయ మూలం నుండి అని మీకు చూపుతుంది.







ప్యాకేజీ ఫార్మాట్ మీ లైనక్స్ పంపిణీపై ఆధారపడి ఉంటుంది. ఎంచుకున్న ఫార్మాట్‌లు క్రిందివి:



deb

ఇందులో ఉపయోగించే ప్యాకేజీలు: డెబియన్ GNU/Linux , ఉబుంటు , అర్ంబియన్ , లైనక్స్ మింట్ , నాపిక్స్



rpm

ఇందులో ఉపయోగించే ప్యాకేజీలు: RedHat , ఫెడోరా , CentOS , OpenSuse





tgz and txz

ఇందులో ఉపయోగించే ప్యాకేజీలు: స్లాక్వేర్

tar.xz

ఇందులో ఉపయోగించే ప్యాకేజీలు: ఆర్చ్ లైనక్స్



ఈ పత్రం డెబియన్ GNU/Linux కొరకు క్లుప్తంగా ప్యాకేజీని ఎలా నిర్మించాలో వివరిస్తుంది. డెబియన్ ప్యాకేజీ ఫార్మాట్ మరియు `డెబ్` ఆధారిత లైనక్స్ సిస్టమ్‌ను నిర్వహించే సాధనాల గురించి వివరణాత్మక సమాచారం కోసం మీరు డెబియన్ ప్యాకేజీ మేనేజ్‌మెంట్ బుక్‌ను చూడవచ్చు [dpmb] డెబియన్ GNU/Linux కోసం ప్యాకేజీలను రూపొందించడానికి ఈ పత్రాలు అవసరం:

  • డెబియన్ న్యూ మెయింటైనర్స్ గైడ్ [dnmg]
  • డెబియన్ డెవలపర్ రిఫరెన్స్ [GDR]
  • డెబియన్ ప్యాకేజింగ్ ట్యుటోరియల్ [చెయ్యవచ్చు]
  • డెబియన్ పాలసీ మాన్యువల్ [dpm]

మేము పని చేసే ప్యాకేజీకి `హెలోలోల్డ్` అని పేరు పెట్టబడింది మరియు వెర్షన్ నంబర్ 0.1 ఉంది. ప్రదర్శన ప్రయోజనాల కోసం ఇది హలో, వరల్డ్!

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

2. అవసరాలు

2.1. GPG కీ

దశ 1 గా, మీ GPG కీ అందుబాటులో ఉంటుంది. తరువాత, ప్యాకేజీపై సంతకం చేయడానికి కీ అవసరం. సంతకం చేయని ప్యాకేజీలు నమ్మదగనివి మరియు డెబియన్ విశ్వంలో భాగం కాకూడదని గుర్తుంచుకోండి.

ఒకవేళ ఒకవేళ మీకు 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 ప్యాకేజింగ్ టూల్ చైన్

సోర్స్ కోడ్‌తో డెబియన్ ప్యాకేజీని రూపొందించడానికి మీ సిస్టమ్‌లో కింది సాఫ్ట్‌వేర్ ప్యాకేజీలు అవసరం:

  • నిర్మాణం-అవసరం
  • ఆటోకాన్ఫ్
  • ఆటోమేక్
  • ఆటోటూల్స్-డెవ్
  • dh- తయారు
  • డీబెల్పర్
  • డెవిస్క్రిప్ట్‌లు
  • ఫకెరూట్
  • xutils
  • లింటియన్
  • pbuilder

యూజర్ `రూట్` గా మీరు కింది ఆదేశాన్ని ఉపయోగించి వీటిని ఇన్‌స్టాల్ చేయవచ్చు:

# 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` ఒరిజినల్ సోర్స్ ఆర్కైవ్‌గా ఇచ్చిన ఫైల్‌ని ఉపయోగిస్తుంది మరియు ప్రస్తుత ప్రోగ్రామ్ ట్రీని` ప్రోగ్రామ్.ఓరిగ్` కి కాపీ చేయడాన్ని దాటవేస్తుంది.

~/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 helloworld_0.1-1_amd64.deb 

సాధనం నియమ ఉల్లంఘనలను కనుగొనలేదు కానీ స్పెల్లింగ్ లోపాలు మరియు తప్పు అక్షరాలను కూడా కనుగొనలేదు. స్విచ్ `–పెడాంటిక్` సాధారణం కంటే చాలా క్లిష్టంగా ఉండటానికి` లింటియన్` ని అడుగుతుంది. మీరు క్రింద చూడగలిగినట్లుగా `లింటియన్` కొద్దిగా క్రోధంగా ఉంది మరియు మూడు హెచ్చరికలు మరియు ఒక లోపం కనుగొనబడింది.

మొదటి హెచ్చరిక మినహా, మేము సులభంగా `lintian` ని సంతోషపెట్టవచ్చు మరియు రూల్ సెట్ ప్రకారం ప్యాకేజీ కంటెంట్‌ను సర్దుబాటు చేయవచ్చు. హెచ్చరిక `new-package-should-close-itp-bug` అంటే ITP ప్యాకేజీకి వ్యతిరేకంగా బగ్ నివేదిక లేదు (ITP అంటే ప్యాకేజీకి _ఇంటెండెడ్ అని అర్థం). రెగ్యులర్ డెబియన్ ప్యాకేజీ కోసం మీరు ఈ సాఫ్ట్‌వేర్‌ని ప్యాకేజింగ్ చేయడం ప్రారంభించాలనుకుంటున్నట్లు ఇతరులకు తెలియజేయడానికి ప్యాకేజీ ITP కోసం బగ్ రిపోర్ట్ బగ్‌ట్రాకర్‌కు పంపాలి.

4.2. హెచ్చరిక: `రీడ్‌మె-డెబియన్-కలిగి-డెబ్‌మేక్-టెంప్లేట్

`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] ఆండ్రియాస్ బార్త్, ఆడమ్ డి కార్లో, రాఫెల్ హెర్ట్జోగ్, లుకాస్ నస్‌బామ్, క్రిస్టియన్ స్క్వార్జ్, ఇయాన్ జాక్సన్: డెబియన్ డెవలపర్ రిఫరెన్స్
- [Dnmg] జోసిప్ రోడిన్, ఒసాము అకి: డెబియన్ న్యూ మెయింటైనర్స్ గైడ్
- [dpmb] ఆక్సెల్ బెకెర్ట్, ఫ్రాంక్ హాఫ్మన్: డెబియన్ ప్యాకేజీ మేనేజ్‌మెంట్ బుక్
- [dpm] డెబియన్ పాలసీ మాన్యువల్
- [చెయ్యవచ్చు] డెబియన్ ప్యాకేజింగ్ ట్యుటోరియల్
- [gph] GNU గోప్యతా హ్యాండ్‌బుక్
- [lushpaiPackage] అలెక్స్ లుష్‌పై: మూలం నుండి డెబియన్ ప్యాకేజీని ఎలా సృష్టించాలి


6. రసీదులు

రచయిత ధన్యవాదాలు తెలియజేయాలనుకుంటున్నారు ఆక్సెల్ బెకెర్ట్ మరియు గెరాల్డ్ రుప్రెచ్ట్ వారి మద్దతు మరియు విమర్శకుల కోసం ఈ కథనాన్ని సిద్ధం చేస్తున్నప్పుడు.