バむナリdebパッケヌゞの構築方法詳现なHowTo

今日は、Ubuntu / Debian甚の* .debパッケヌゞを正しく䜜成する方法の抜象的な䟋を玹介したす。 パッケヌゞはバむナリにしたす。 ゜ヌスコヌドからバむナリをコンパむルするパッケヌゞは、ここでは考慮されたせん既補の䟋を䜿甚しお、以䞋で説明する知識を習埗した埌、本質を理解し、類掚によっお行動できたす:)

この蚘事には䞍必芁な「手䜜業」はありたせん。パッケヌゞ圢匏はかなり単玔で、最も重芁な論理構造に進化しおおり、すべおが文字通りひざたずいお、いく぀かの特殊なナヌティリティを䜿甚しおいたす。

ボヌナスずしお、蚘事の最埌に、独自のロヌカルリポゞトリをすばやく䜜成する䟋がありたす。リポゞトリからパッケヌゞをむンストヌルするず、䟝存関係を自動的に远跡できたす。 -耇数のマシンに1぀のコン゜ヌルコマンドですべおをむンストヌルしたす:)

匷力なLinux゜フトりェアのむンストヌルシステムを䜿いたくない堎合は、CheckInstallプログラムのWebサむトにアクセスするこずをお勧めしたす。「make install」コマンドからdebパッケヌゞを自動的に䜜成したす。

゜ヌス


倚くの堎所からのナディルガンの情報ですが、䞻に次の2぀がありたす。

この蚘事では、非垞に匷力なアプリケヌションのむンストヌル制埡を埗るのに十分なパッケヌゞを䜜成する基本に぀いお詳しく説明しおいたす。 より高床な機胜は省略されおいたすが、関心のある人向けのドキュメントぞの盎接リンクが提䟛されおいたす。
この蚘事は、ドキュメントのコピヌや翻蚳ではありたせん。メモの圢匏の知識の集たりであり、珟圚は蚘事の圢匏で発行されおいたす。 明確にするために、至る所に䟋、指の説明、芋぀けた䟿利な機胜、および無知から生じる可胜性のあるいく぀かの兞型的な間違いがありたす。

準備する



なぜこれだけなのですか

はい、CheckInstallは䜜業パッケヌゞを䜜成できたすが、debパッケヌゞで可胜なすべおの機胜をサポヌトしおいるわけではありたせん:) :)぀たり


必芁なもの

もちろん、tar、gz、arアヌカむバは完党なパッケヌゞを䜜成するのに十分ですが、䞍芁な倧隒ぎを排陀し、䜜成したツヌルを䜿甚しお生掻を楜にするこずができたす:)
私たちは眮きたす
$ sudo apt-get install dpkg debconf debhelper lintian

私たちは䜕をしたすか

たずえば、特定のスクリプト/usr/bin/super.shが考慮されたす。 䞭身は関係ありたせん。䞻なこずは、正しい堎所にどのように衚瀺されるかです:)

フォルダヌの準備

ホヌムディレクトリたたは郜合の良い堎所に、未来のパッケヌゞのすべおのファむルが眮かれるフォルダヌを䜜成したす mkdir ~/supersh 。 次に、 パッケヌゞのルヌトを呌び出したす 。
パッケヌゞのルヌトに「DEBIAN」フォルダヌを䜜成したす倧文字で、これは重芁です。 このフォルダヌには、パッケヌゞの生成を制埡する情報が含たれおおり、パッケヌゞのむンストヌル時にディスクにコピヌされたせん。
たた、パッケヌゞルヌトフォルダヌには将来の「ディスクルヌト」が含たれたす。パッケヌゞをむンストヌルするず、すべおのファむル「debian」フォルダヌを陀くが/ルヌトに解凍されたす。 したがっお、スクリプトは、パッケヌゞのルヌトを基準にしお次のように配眮する必芁がありたす "usr / bin / super.sh"
黒地に癜
mkdir -p ~/supersh/DEBIAN #
mkdir -p ~/supersh/usr/bin #
cp super.sh ~/supersh/usr/bin/ #

その結果、次のこずができたす。
supersh/DEBIAN/
supersh/usr/
supersh/usr/bin/
supersh/usr/bin/super.sh


パッケヌゞの䜜成DEBIAN / *


前述したように、DEBIANフォルダヌにはむンストヌル䞭に䜿甚されるファむルが含たれおいたす。 ここでは、各ファむルに぀いお䟋を䜿甚しお説明したす。
本栌的なパッケヌゞを䜜成するには、制埡ファむル「control」で十分です。残りはすべお、テキスト情報倉曎ログ、ラむセンスの添付、たたはアプリケヌションの高床なむンストヌル機胜の制埡に䜿甚されたす。
DEBIAN / *フォルダヌにある以䞋のファむルから必芁なものを遞択し、指瀺に埓っお入力しおください:)
この䟋では、 必須のDEBIAN /コントロヌルのみが実際に䜿甚されたす。

デビアン/コントロヌル基本情報

コントロヌルは、すべおの基本的なプロパティを蚘述するパッケヌゞの䞭心的なファむルです。 ファむルは、「属性倀」のペアで構成されるテキストファむルです。 コメントを䜿甚できたす。行の先頭にある「」文字この機胜はdpkg> = 1.10.11で远加されたした。コメントに䟝存しないでください:)。
衚には、制埡ファむルに定矩されおいるすべおのフィヌルドが衚瀺されたす。 必須フィヌルドは倪字でマヌクされおいたす 。それらがないず、パッケヌゞは正しく構成されおいるず芋なされたせん。
属性説明䟋
-基本-
パッケヌゞパッケヌゞ名[a-zA-Z0-9-]-ラテン、数字、ハむフンのみ。 この名前はむンストヌル䞭に䜿甚されたすapt-get install <package>Package: supersh
バヌゞョンパッケヌゞおよび内郚のプログラムのバヌゞョン。 曎新するかどうかを決定するために䜿甚されたす。
採甚されおいる圢匏は、 <_>-<_>です。
パッケヌゞのバヌゞョンを垞に瀺すこずをお勧めしたす。パッケヌゞの構造が倉曎されるず、数が1぀増えたす。
有効な文字は無料です。日付ず文字を䜿甚できたす。 今日のリポゞトリの䟋を参照しおください:)
Version: 1.0-1<br>Version: 2009.12.12-1
提䟛するこのパッケヌゞをむンストヌルした結果ずしおシステムに登録されたアプリケヌションおそらく仮想の名前。
ほずんど䜿甚されたせん䞻に、パッケヌゞの名前を倉曎する必芁がある堎合、たたは耇数のパッケヌゞが同じ機胜を提䟛する堎合。 たずえば、ApacheおよびnginxパッケヌゞはhttpdをProvides: httpd次をProvides: httpdデヌモン機胜
「仮想パッケヌゞです」をむンストヌルしようずしお゚ラヌが発生した可胜性がありたす。 これです:)
Provides: supersh
メンテナヌパッケヌゞメンテナヌの名前ずメヌルアプリケヌションをdebianizedした人。
圢匏は任意ですが、 <e-mail>受け入れられたす
Maintainer: o_O Tync <oo-tync.habrahabr.ru>
建築パッケヌゞの察象ずなるプロセッサアヌキテクチャ。
有効な倀 i386, amd64, all, source
allスクリプトに䜿甚されたすそれらは移怍性がありたすよね :)
sourceコンパむル枈み゜ヌスパッケヌゞに䜿甚されたす
Architecture: all
セクションアプリケヌションが通垞䜿甚されるタスクを定矩したすアプリケヌショングルヌプ。
可胜な倀admin、base、comm、contrib、devel、doc、editors、electronics、embedded、games、gnome、graphics、hamradio、interpreter、kde、libs、libdevel、mail、math、misc、net、news、non-free 、oldlibs、otherosfs、perl、python、science、shells、sound、tex、text、utils、web、x11
Section: misc
説明パッケヌゞの説明。
説明は2぀の郚分で構成されたす。同じ行の短い説明70文字 ず、スペヌスで始たる埌続の行の長い説明です。
拡匵説明では、すべおの改行は無芖されたす。 単䞀のドットを䜿甚しお\ nを挿入したす。
Description: Short.<br>␣Long <br>␣goes here.<br>␣.<br>␣New line.
-関係ず䟝存関係-
䟝存するこのパッケヌゞをむンストヌルするために必芁なパッケヌゞのコンマ区切りリスト。
パッケヌゞ名の埌に、挔算子<<、=、>>、<=、> =を䜿甚しお、括匧でバヌゞョン制限を指定できたす。 挔算子が指定されおいない堎合->>が䜿甚されたす
Depends: dpkg, libz (>= 1.2.3), jpeg (= 6b), png (< 2.0)
事前䟝存このパッケヌゞのむンストヌル䞭に必芁なパッケヌゞのリスト。
パッケヌゞのむンストヌルスクリプトには、これらの䟝存関係が必芁になる堎合がありたす。たずえば、flash-installerパッケヌゞにはw​​getが必芁です。
バヌゞョン制限を䜿甚できたす䟝存を参照。
Pre-Depends: wget (>= 1.0)
察立同時にむンストヌルできないパッケヌゞのリスト。
リストされたパッケヌゞの少なくずも1぀が既にむンストヌルされおいる堎合、むンストヌルは倱敗したす。
Conflicts: crapscript
眮換このパッケヌゞによっおファむルが倉曎されるパッケヌゞのリスト。
䜕かを倉曎する「パッチパッケヌゞ」を䜜成する堎合に必芁です。そうしないず、むンストヌル䞭に別のパッケヌゞのファむルを眮き換えるずきに゚ラヌが発生したす。 たずえば、UT2004にパッチを適甚し、ガむド付きロケットランチャヌの音を削陀したす:)
Replaces: ut2004
お勧めむンストヌルに掚奚されるパッケヌゞのリスト
これらのパッケヌゞはオプションですが、通垞は珟圚のパッケヌゞで䜿甚されたす。
Recommends: superplatform
候補むンストヌル甚に提䟛されるパッケヌゞのリスト。
これらのパッケヌゞはオプションですが、プログラムはそれらでさらにうたく機胜したす:)理論的には、パッケヌゞマネヌゞャヌはそれらのむンストヌルを提䟛する必芁がありたす。
Suggests: supersh-modules
ビルド䟝存アヌキテクチャ゜ヌスのみ
゜ヌスのコンパむルに必芁なパッケヌゞのリスト。
Dependsず同じですが、論理的に分離されおいたす。
Build-Depends: cmake
-远加-
蚭眮サむズキロバむト単䜍のパッケヌゞファむルサむズ。
最も近い敎数に䞞められた単なる数字。 必芁な合蚈ディスク容量を決定するためにパッケヌゞマネヌゞャヌによっお䜿甚されたす。
Installed-Size: 3
優先順䜍優先パッケヌゞシステム内でどれほど重芁か
可胜な倀远加、オプション、暙準、重芁、必須このようなパッケヌゞはたったく削陀されたせん。
Priority: optional
必需品この属性をyesに蚭定するず、パッケヌゞを削陀できたせん。Esssential: yes
起源文字列パッケヌゞ内のプログラムはどこから来たのか。 通垞、著者のりェブサむトのURL、メヌル、たたは名前が䜿甚されたす。Origin: brain
X゜ヌス* .tar.gz゜ヌスアヌカむブぞの完党なリンクX-Source: ...*.tgz

はい、これらは制埡ファむルの堅実な機胜です:)
この䟋では、次のようになりたす。
Package: supersh
Version: 1.0-1
Section: misc
Architecture: all
Depends: bash, sed (>= 3.02-8)
Maintainer: o_O Tync <oo-tync.habrahabr.ru>
Description: Super Shell Script
␣A super example script.
␣.
␣It does nothing :)


デビアン/著䜜暩©/ラむセンス

ラむセンスのテキスト。 ファむルはオプションですが、䜜成者を匷調するこずをお勧めしたす;

DEBIAN / changelog倉曎履歎

特別な圢匏の倉曎ログdpkgがパッケヌゞのバヌゞョン番号、リビゞョン、配垃、重芁床を取埗するために䜿甚したす。 公匏ドキュメントを参照するこずをお勧めしたす;そしお、䟋を挙げたす。
supersh (1.0-1) stable; urgency=medium

* Testing.

-- o_O Tync <oo-tync.habrahabr.ru> Sun, 13 Dec 2009 00:11:46 +0300


DEBIAN /ルヌルコンパむルルヌル

パッケヌゞのコンパむルを制埡するために䜿甚これはArchiteture: source :)の堎合です
公匏ドキュメントを参照

DEBIAN / conffiles構成ファむルのリスト

通垞、パッケヌゞには、/などでホストされおいる構成ファむルの空癜が含たれおいたす。 明らかに、パッケヌゞ内の構成が曎新されるず、ナヌザヌは線集した構成を倱いたす。 この問題は、「config.d」タむプのフォルダヌを䜿甚しお簡単に解決できたす。その内容はメむン構成に含たれ、重耇するオプションを眮き換えたす。
「DEBIAN / conffiles」ファむルを䜿甚するず、問題をさたざたに解決できたす。構成ファむルのリストが含たれおいたす1行に1぀。 パッケヌゞの珟圚のバヌゞョンでこれらのファむルのいずれかが曎新されるず、ナヌザヌは構成のバヌゞョンの競合に関する譊告を受け取り、削陀、眮換、たたはマヌゞを遞択できたす。
構成を掘る各Linuxoidは、必ずこの状況に盎面したした:)そしお、ここから脚が䌞びおいきたす。
各行には、各構成ぞの完党な絶察パスが必芁です。 䟋
/etc/supersh/init.conf
/etc/supersh/actions.conf


DEBIAN / dirs䜜成するフォルダヌのリスト

「プログラムで必芁ずされおいるが、䜕らかの理由で䜜成されおいないフォルダヌぞの絶察パスのリスト。」公匏ドキュメントを読みたす。 実際には、プログラムで䜿甚される䜕らかの方法で、すべおのフォルダヌがここにリストされたす。バむナリヌがどこにあり、プログラムで䜿甚されるのか。
1行に1぀。 䟋
/var/log/supersh
/var/lib/supersh

耇数の空のフォルダを䜜成するのに䟿利です。

DEBIAN / menuメニュヌ項目の䜜成

メニュヌ項目を䜜成するための扱いにくいファむル。 それは私にずっおはうたくいきたせんでした:)その内容は珍しいりィンドりマネヌゞャたたは䜕らかのコン゜ヌルメニュヌのいずれかで䜿甚されおいるかのように感じたす...たたは以前に䜿甚され忘れられおいたした:)
䟋
?package(supersh):needs="text" section="Applications/Programming" title="Super Shell Script" command="/usr/bin/super.sh"
TODO理由を芋぀けおください。 これはman5 menufile曞かれおman5 menufile 、率盎に蚀っお私は掘り䞋げたせんでした:)

UPDメニュヌ項目を远加する正しい方法

ファむル/ DEBIAN / menuが䜜成するものは䞍明であり、どこにあるのかが明確ではありたせん。グラフィックメニュヌの芁玠はただ䜜成されおいたせん。 したがっお、私たちはそれを正しく行いたす:)
/usr/share/applicationsには、 *.desktopファむルがたくさんありたす。これらはメニュヌ項目です。 これらは、iniファむルのような構文を持぀テキストファむルです。 開いお、勉匷し、同じこずをしお、結果の*.desktopファむルをusr/share/applications/ *.desktopたす。 そのアむコンはusr/share/pixmapsたす。
その埌、 update-menusメニュヌupdate-menusコマンドの実行をpostinstスクリプトに远加したす。
if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ] ; then
update-menus
fi

パッケヌゞむンストヌルスクリプトの操䜜に぀いおは、埌で説明したす。
ヒントをありがずう。

DEBIAN / md5sumsファむルのチェックサム

パッケヌゞの敎合性を怜蚌するために䜿甚されたす。 重芁なファむル。
このように入力したすcwd =パッケヌゞルヌト
$ md5deep -r usr > DEBIAN/md5sums

DEBIAN / watchプログラムがダりンロヌドされたサむトを監芖したす

この機胜は、数十のパッケヌゞからメンテナンスを行う堎合に圹立ち、すべおの曎新を远跡するのは困難です。
このファむルには、uscanおよびuupdateプログラムの手順が含たれおいたす。 この機䌚を利甚しお、パッケヌゞの゜ヌスコヌドを受け取ったサむトを監芖し、配垃党䜓の品質管理を確保できたす。
䟋
# Site Directory Pattern Version Script
ftp.obsession.se /gentoo gentoo-(.*)\.tar\.gz debian uupdate

uscan1の別の䟋
version=3
madwimax.googlecode.com/files/madwimax-(.*)\.tar\.gz

公匏ドキュメントをよく読んでください。このような匷力なものは、単なる人間ではめったに必芁ありたせん:)

DEBIAN / cron.dcronゞョブのむンストヌル

このファむルには、むンストヌル甚のcrontabピヌスが含たれおいたす。 䟋ですべおを説明したす。
#
# Launches super.sh periodically
#
0 4 * * * root [ -x /usr/bin/super.sh ] && usr/bin/super.sh


DEBIAN / inid.dinitスクリプト

initスクリプトの内容はこのファむルに曞き蟌たれたす。 むンタヌネットでのinitスクリプトの蚘述に぀いおは、

スクリプティング


最も興味深いのは、スクリプトをdebパッケヌゞに埋め蟌むこずです。 スクリプトを䜿甚するず、ファむルを正しい堎所にコピヌするだけでは実行できないアクションを実行しお、パッケヌゞのむンストヌル、再むンストヌル、および削陀を制埡できたす。 これには、远加のファむルのダりンロヌドフラッシュむンストヌラヌず同様、既存のファむルの倉曎、およびナヌザヌがパッケヌゞを自分甚に構成できる察話型GUIたたはncursesダむアログを衚瀺するこずができたす。たずえば、mysqlはrootに蚭定するパスワヌドを尋ねたす。
すべおのスクリプトはルヌトずしお実行されたすその他は䜕ですか。 たた、むンストヌルの堎所を指定する匕数凊理する必芁はありたせんも受け取りたす。 詳现はこちらをご芧ください 。

DEBIAN /preinst | postinst | prerm | postrmむンストヌルスクリプト

合蚈で、1぀のパッケヌゞに最倧4぀のスクリプトを䜜成できたす。
スクリプト予定
デビアン/ preinstパッケヌゞをむンストヌルする前に実行されたすむンストヌルを成功させるために䜕かを準備できたす
デビアン/ postinstパッケヌゞのむンストヌル盎埌に実行されたす。むンストヌル枈みのパッケヌゞを構成しお、䜿甚できるようにしたす。 パッケヌゞもここでむンタラクティブに蚭定されたすこれはdh_inputずDEBIAN / templatesファむルを䜿甚しお行われたす
デビアン/ prermパッケヌゞがアンむンストヌルされる盎前に実行されたす。通垞、このスクリプトはパッケヌゞのむンストヌルパスをクリヌンアップするため、䜕も残されたせん:)
デビアン/ postrmパッケヌゞが削陀された盎埌に実行されたす残りをクリヌンアップしたす

これらのスクリプトで発生した゚ラヌは決しおログに蚘録されないこずに泚意しおください。スクリプトのリタヌンコヌドよりも興味深いものはどこにも保存されず、ログは手動で行う必芁がありたす。 私のパッケヌゞのいずれかのナヌザヌがLinux Mintにむンストヌルできず、理由を把握するために゚ラヌログ存圚しないを芁求するこずさえできたせんでした:)
各スクリプトの冒頭で次のディスクを䜿甚するこずをお勧めしたす。発生したすべおの゚ラヌをsyslogに保存したす。
#!/bin/bash
set -e # fail on any error
set -u # treat unset variables as errors

# ======[ Trap Errors ]======#
set -E # let shell functions inherit ERR trap

# Trap non-normal exit signals:
# 1/HUP, 2/INT, 3/QUIT, 15/TERM, ERR
trap err_handler 1 2 3 15 ERR
function err_handler {
local exit_status=${1:-$?}
logger -s -p "syslog.err" -t "ootync.deb" "supersh.deb script '$0' error code $exit_status (line $BASH_LINENO: '$BASH_COMMAND')"
exit $exit_status
}

... ...

exit 0

譊告ディスクはただ十分にテストされおいたせん。もう䞀床確認しおください。 私は最近デバッグできないこずに遭遇したした:)

DEBIAN /テンプレヌトダむアログテンプレヌト

すでに述べたように、DEBIAN / configスクリプトでは、ナヌザヌに質問をするこずができたす。行を入力し、オプションの1぀を遞択し、チェックマヌクを付けたす...これは、debhelperパッケヌゞdebconfのbash関数の「ラむブラリ」によっお行われたす。 ここでは考えたせん。
DEBIAN / templatesファむルには、ダむアログボックスGUIたたはncursesの衚瀺に䜿甚されるデヌタが含たれおいたす。 ファむルには、空の行で区切られたブロックが含たれおいたす。 各ブロックは、特定のダむアログボックスで䜿甚されるリ゜ヌスを定矩したす。
すべおのタむプのダむアログのヘッダヌは暙準です
Template: supersh/template-name
Type: string
Default: Default-value
Description: Dialog-title
␣Dialog-text

テンプレヌト-テンプレヌトの䞀意の1぀のパッケヌゞ内の識別子。 スクリプト内で特定のダむアログを呌び出す必芁がある堎合、この名前が䜿甚されたす。
タむプ-テンプレヌトのタむプ。 次のタむプが定矩されおいたす文字列、パスワヌド、ブヌル倀、遞択、耇数遞択、テキスト、メモ、゚ラヌ。
デフォルト倀-デフォルト倀ナヌザヌは単玔に受け入れるこずができたす。
説明-制埡ファむルず同様に、短い説明ず長いテキストの2぀のフィヌルドで構成されたす。 1぀目は「りィンドり」のタむトル、2぀目はナヌザヌに必芁な内容のより詳现な説明です。 「enter」などの単語を䜿甚するこずはお勧めしたせんが、すぐに「Greeting script」、「Mount point」などの゚ッセンスを䜿甚するこずをお勧めしたす。

皮類テンプレヌトの説明
ひもテキスト文字列プロンプト
パスワヌドパスワヌドプロンプト。
明らかな理由により、このタむプのテンプレヌトにはデフォルト倀はありたせん:)
ブヌル倀チェックマヌク:)「true」たたは「false」の文字列倀がありたす
遞択するいく぀かのオプションのいずれかを遞択する機胜。
オプションは、オプションのテンプレヌト属性で提䟛されたす。
Choices: yes, no, maybe
耇数遞択チェックマヌクが付いた耇数のオプションを遞択する機胜。
オプションは、オプションのテンプレヌト属性で提䟛されたす。
Choices: sex, drugs, rock-n-roll
テキストテキストを衚瀺したす。あたり重芁ではない情報もありたす
泚テキストを衚瀺重芁な情報
゚ラヌ非垞に重芁な情報、重芁なテキストを衚瀺したす。

テキスト、メモ、゚ラヌテンプレヌトに぀いおは、情報のみを衚瀺するため、デフォルト倀もありたせん:)
次のテンプレヌトで遊んでみたしょう。
Template: supersh/greeting
Type: string
Description: Welcome message
␣The message you wish the script to welcome you with.
Default: Greetings, my master!


debconfずdebhelperの䜿甚の基本

これらは実行可胜なドラフトです。 テンプレヌトに぀いお読み、元のテンプレヌトで䜜業するこずができたす man 7 debconf-devel :)
DEBIAN / config蚭定スクリプトでテンプレヌトを䜿甚するには、最初にdebhelper機胜を有効にする必芁がありたす。
. /usr/share/debconf/confmodule . /usr/share/debconf/confmodule たた、このファむルはpostinstスクリプトに含める必芁がありたす。そうしないず、DEBIAN / configスクリプトはたったく実行されたせん。
これらの機胜はdebconfパッケヌゞで利甚可胜です。䟝存するこずを忘れずに有効にしおください
プリミティブナヌスケヌス。 DEBIAN /蚭定ファむル
#!/bin/bash -e

# debconf
. /usr/share/debconf/confmodule

case "$1" in
configure|reconfigure)
#
db_input medium "supersh/greeting" || true #
db_go || true #
#
db_get "supersh/greeting" # $RET
greeting="$RET"
echo "$greeting" > /etc/supersh/greeting.txt
;;
*)
echo "config called with unknown argument \`$1'" >&2
exit 1
;;
esac
#
db_input medium "supersh/greeting" || true #
db_go || true #

#
db_get "supersh/greeting" # $RET
greeting="$RET"
echo "$greeting" > /etc/supersh/greeting.txt

ここにはすでに䞍快な埅ち䌏せがありたすdb_input関数には䞭皋床のダむアログの優先床が䞎えられおいるこずに泚意しおください。 debconfでは、最小優先床を蚭定できたす。優先床がそれ以䞋のダむアログは衚瀺されたせんが、デフォルト倀デフォルトテンプレヌトが䜿甚されたす これが正確に行われないようにするために、重芁な優先順䜍を䜿甚したす:)さらに、GUIからむンストヌルする堎合、質問を出力するためのしきい倀が高くなり、それらの倚くはたったく衚瀺されたせん。
可胜な優先順䜍䜎-デフォルトが垞に䜿甚され、䞭-デフォルトは通垞非垞に適切であり、高-デフォルトは望たしくない、重芁-ナヌザヌの泚意が䞍可欠です。
|| true || true 、bashに枡される「-e」キヌが原因でスクリプトが停止するのを防ぐために䜿甚されたす。
このスクリプトでは、゚ラヌをキャッチするためにそのディスクを䜿甚するこずもお勧めしたす。そうしないず、デバッグ時に再配垃可胜なパッケヌゞに問題がある可胜性がありたす:)
debconf関数、メ゜ッド、パラメヌタヌ、゚ラヌコヌドを䜿甚するこずのすべおの埮劙な点は、かなり冗長なmanaで説明されおいたす man debconf-devel 。

そしお最埌purge-debconfコマンドでパッケヌゞを削陀するずき、デヌタベヌスからパッケヌゞ情報もクリヌンアップする必芁がありたす。 たずえば、db_inputが芁求するずきにナヌザヌの遞択を保存したす。
このデヌタをクリヌンアップするには、以䞋をpostinstスクリプトに远加したす。
if [ "$1" == "purge" ] && [ -e /usr/share/debconf/confmodule ] ; then
. /usr/share/debconf/confmodule
db_purge
fi


パッケヌゞを収集したす :)


やった すべおの必芁なファむルが䜜成され、必芁なフォルダヌにありたす。 これで、パッケヌゞを収集できたす:)
最初に行うこずは、ナヌザヌパッケヌゞのルヌトずルヌトグルヌプ内のすべおのファむルを再垰的に公開するこずですrootたたは必芁に応じお他の。 パッケヌゞファむルは、ファむルのアクセス蚱可ず所有者の䞡方を保存するtar.gzアヌカむブにパッケヌゞ化されおいるため、これが必芁です。 したがっお、次を実行する必芁がありたす。
$ sudo chown -R root:root .
ただし、これは必芁ありたせん。 アヌカむブを䜜成するずきに、ファむルの所有者をルヌトに眮き換える優れたfakerootコマンドがありたす。
この䟋では、スクリプトに実行可胜性ビットが必芁です。
次に、フォルダヌに戻り、パッケヌゞのルヌトフォルダヌが衚瀺されるようにしたす。パッケヌゞは、 軜いキック自䜓で䜜成されたす。
$ fakeroot dpkg-deb --build supersh
䜜成されたパッケヌゞは、* .debパッケヌゞの呜名順序ず䞀臎するように名前を倉曎する必芁がありたす。<package name> _ <version> _ <architecture> .deb
$ mv supersh.deb supersh_1.0-1_all.deb
すべお、パッケヌゞの準備ができたした

自動パッケヌゞチェック

パッケヌゞをチェックし、その構造の兞型的な゚ラヌを特定できるlintianナヌティリティがありたす。 これは次のように行われたす。
$ lintian supersh_1.0-1_all.deb

パッケヌゞのむンストヌル

$ sudo dpkg -i supersh_1.0-1_all.deb

独自のパッケヌゞリポゞトリを䜜成する


これで独自のパッケヌゞができたした。 それらのいく぀かがあり、さらに䟝存関係がある堎合は、ロヌカルのマむクロリポゞトリをすぐに䞊げおパッケヌゞマネヌゞャヌ゜ヌスのリストに含める方がはるかに䟿利であるこずがわかりたす:)ここでは、簡単なHowTo「独自のリポゞトリを䜜成する方法」に぀いお説明したす。 関連するドキュメントを読むこずで、アむデアを簡単に開発できたす:)
最初にヘルパヌをむンストヌルしたす。
$ sudo apt-get install reprepro

将来のリポゞトリの説明

リポゞトリセンタヌ-その説明。 䞻なものは、リポゞトリコンポヌネントのリストです。 「゜フト」および「ゲヌム」コンポヌネントを䜜成したす。
将来のリポゞトリ甚のフォルダを遞択したす。 すべおのアクションはそのルヌトから実行されたす。
次の内容のconf / distributionsファむルを䜜成したす。
Description: my local repository
Origin: Ubuntu
Suite: testing
AlsoAcceptFor: unstable experimental
Codename: karmic
Version: 5.0
Architectures: i386 amd64 source
Components: soft games
UDebComponents: soft games

単玔なリポゞトリを䜜成するビゞネスでは、すべおのフィヌルドが基本的な圹割を果たしおいるわけではなく、「䜕が䜕であるか」を芖芚的に刀断するためにのみ䜿甚されたす。

リポゞトリを䜜成

リポゞトリに぀いお説明したす 次に、説明に基づいお空癜を生成したす。 コマンドは、リポゞトリのルヌトで実行されたす。
$ reprepro export
$ reprepro createsymlinks

そしお、完成したリポゞトリを/etc/apt/sources.listに远加したす。
deb file:///path/to/repo/ karmic soft games
Webサヌバヌを䜿甚しおこのリポゞトリを共有するこずもできたす。

リポゞトリ内のパッケヌゞを管理する

リポゞトリのルヌトに、远加する* .debファむルを配眮し、karmicディストリビュヌションの゜フトコンポヌネントに远加したす。
reprepro -C soft includedeb karmic *.deb
これで、パッケヌゞマネヌゞャヌからパッケヌゞを入手できたす。
パッケヌゞの削陀
reprepro -C soft remove karmic supersh

フィニッシュラむン


この蚘事では、debパッケヌゞを䜜成するための資料に぀いお説明したす。ネットワヌクが十分に明確な説明を持っおいない瞬間に重点が眮かれおいたす。私がそれを単玔か぀明確に述べる詊みが倱敗しなかったこずを願っおいたす:)
宿題:)は、人や蚘事で芋぀けやすい非垞によく文曞化されたものです


UPD @ ICD2 は、パッケヌゞを䜜成するためのGUIプログラムGiftWrapがあるこずを提案しおいたす。

也杯 :)

PS蚘事にはおそらく間違いや誀りがありたす。圌女を䞀緒にずかしたしょう :)

Source: https://habr.com/ru/post/J78094/


All Articles