Mục lục
README.Debian
compat
conffiles
package
.cron.*
dirs
package
.doc-base
docs
emacsen-*
package
.examples
package
.init
và
package
.default
install
package
.info
package
.links
{package
.,source/}lintian-overrides
manpage.*
package
.manpages
NEWS
{pre,post}{inst,rm}
package
.symbols
TODO
watch
source/format
source/local-options
source/options
patches/*
Để kiểm soát hầu hết những gì debhelper
thực hiện khi xây dựng gói, bạn thêm
các tệp cấu hình tuỳ chọn trong thư mục debian
. Chương
này sẽ cung cấp một cái nhìn tổng quan về những tệp tin này và định dạng của
nó. Vui lòng tham khảo thêm Debian Policy
Manual và Debian Developer's
Reference.
Lệnh dh_make sẽ tạo một số tệp cấu hình mẫu dưới thư mục
debian
. Hầu hết tên các tập tin có hậu tố là
.ex
. Một số chúng có các tên tệp bắt đầu bằng tên gói
nhị phân như
. Hãy xem
tất cả tại. [54]
package
Một số tệp cấu hình mẫu cho debhelper
có thể không được tạo bởi lệnh
dh_make. Trong các trường hợp này, bạn cần phải tự tạo
chúng bằng trình soạn thảo.
Nếu bạn muốn hoặc cần kích hoạt bất kỳ tệp nào, hãy làm như sau:
Đổi tên các tệp mẫu bằng cách xoá bỏ hậu tố .ex
hoặc
.EX
nếu có;
Đổi tên các tệp cấu hình để sử dụng tên gói thực sự của thay cho
;
package
sửa đổi nội dung tệp mẫu theo ý bạn muốn;
loại bỏ các tập tin mẫu mà bạn không cần;
sửa đổi tệp control
(xem Phần 4.1, “control
”),
nếu bạn cần;
chỉnh sửa tệp rules
(xem Phần 4.4, “rules
”), nếu
bạn cần.
Bất kỳ tệp tin cấu hình debhelper
nào mà không có tiền tố
, chẳng hạn như
package
install
, sẽ áp dụng cho gói nhị phân đầu tiên. Khi có
nhiều gói nhị phân, các cấu hình của chúng được xác định bằng các tệp chứa
tiền tố là tên gói nhị phân đấy như
,
package-1
.install
, vân vân.
package-2
.install
Bất kỳ chi tiết bổ sung hoặc sự khác biệt giữa gói gốc ban đầu và phiên bản Debian của bạn nên được ghi lại ở đây
dh_make đã tạo ra một tệp mặc định, giống như thế này:
gentoo for Debian ----------------- <possible notes regarding this package - if none, delete this file> -- Josip Rodin <joy-mg@debian.org>, Wed, 11 Nov 1998 21:02:14 +0100
Nếu bạn không có gì để ghi chú, hãy xoá tệp này. Xem dh_installdocs(1).
Tệp compat
định nghĩa mức độ tương thích với
debhelper
. Hiện tại, bạn nên để nó
là debhelper
v10 như sau:
$ echo 10 > debian/compat
Bạn có thể sử dụng mức v9 trong trường hợp nhất định sự tương thích với các hệ thống cũ. Tuy nhiên, sử dụng bất kỳ mức nào dưới 9 là không khuyến kích và nên là bị chặn cho các gói mới.
Một trong những điều gây phiền phức nhất về phần mềm là khi bạn đã dành rất nhiều thời gian và nỗ lực để cấu hình một chương trình, và khi nâng cấp phần mềm thì mọi thay đổi của bạn bị đè. Debian giải quyết vấn đề này bằng cách gọi các tập tin cấu hình trong gói là conffiles. [55] Khi bạn nâng cấp một gói, bạn sẽ được hỏi rằng bạn có muốn giữ các tệp cấu hình cũ (hiện tại) hay không.
dh_installdeb(1) tự động đánh
dâu bất kỳ tệp nào trong thư mục /etc
là conffiles, vậy
nếu chương trình của bạn có conffiles ở đây, bạn không cần thiết phải thêm
chúng vào trong tệp này. Hầu hết các loại gói, nơi lưu trữ conffiles duy
nhất nên là /etc
, và vì thế tệp này không cần thiết
phải tồn tại
Nếu chương trình của bạn sử dụng các tệp cấu hình nhưng cũng viết lại chúng như là cơ sở dư liệu, tốt nhất bạn không nên định nghĩa chúng là conffiles vì dpkg sẽ nhắc nhở người dùng xác minh các thay đổi mọi lúc.
Nếu chương trình bạn đang đóng gói đòi hỏi mỗi người dùng chỉnh sửa các tập
tin cấu hình trong thư mục /etc
, có hai cách phổ biến
để định nghĩ chúng không phải là conffiles, giữ dpkg yên
tĩnh:
Tạo một liêt kết tượng trưng trong thư mục /etc
trỏ tới
tệp ở thư mục /var
được sinh ra bởi maintainer scripts.
Tạo một tệp bở maintainer scripts dưới thư mục /etc
.
Để biêt thêm thông tin về maintainer scripts, xem Phần 5.18, “{pre,post}{inst,rm}
”.
Nếu gói của bạn yêu cầu các tác vụ được lên lịch thường xuyên để hoạt động đúng, bạn có thể sử dụng các tệp này để làm điều đó. Bạn có thể thiết lập các tác vụ thường xuyên hoặc xảy ra hàng giờ, hàng ngày, hàng tuần, hàng tháng, hoặc bất cứ lúc nào bạn muốn. Các tên tập tin là:
- Được
cài đặt tại
package
.cron.hourly/etc/cron.hourly/
;
chạy mỗi giờ một lần.
package
- Được
cài đặt tại
package
.cron.daily/etc/cron.daily/
;
chạy mỗi ngày một lần.
package
- Được
cài đặt tại
package
.cron.weekly/etc/cron.weekly/
;
chạy mỗi tuần một lần.
package
- Được
cài đặt tại
package
.cron.monthly/etc/cron.monthly/
:
chạy mỗi tháng một lần.
package
- Được cài
đặt tại package
.cron.d/etc/cron.d/
:
cho bất kỳ thời gian khác.
package
Hầu hết các tệp này là kịch bản shell, ngoại trừ tệp trong
tuân thủ theo
định dạng của crontab(5).
package
.cron.d
Không cần chỉ định tệp cron.*
cho cài đặt ghi chép nhật
ký (log rotation); để làm điều này, xem
dh_installlogrotate(1) and
logrotate(8).
Tệp này chỉ định bất kỳ thư mục nào chúng ta cần nhưng không tạo theo quy
trình cài đặt thông thường (make install DESTDIR=...
được
gọi bởi dh_auto_install
). Điều này có nghĩa sẽ có vấn đề
với Makefile
.
Các tệp này được liệt kê trong tệp install
không cần
thư mục của chúng đuợc tạo trước. Xem Phần 5.11, “install
”.
Tốt nhất là thử cài đặt trước và chỉ sửa dụng điều này nếu bạn gặp rắc
rối. Không có dấu gạch chéo trước tên thư mục được liệt kê trong
dirs
Nếu gói của bạn có tài liệu khác với trang hướng dẫn sử dụng và thông tin
(man, info), bạn nên sử dụng tệp doc-base
để đăng ký, để người dùng có thể tìm
thấy nó bằng như: dhelp(1), dwww(1), or doccentral(1).
Thường bao gồm các tệp HTML, PS và PDF, được đặt tại
/usr/share/doc/
.
packagename
/
Đây là tệp doc-base của gói gentoo
gentoo.doc-base
trong giống như sau:
Document: gentoo Title: Gentoo Manual Author: Emil Brink Abstract: This manual describes what Gentoo is, and how it can be used. Section: File Management Format: HTML Index: /usr/share/doc/gentoo/html/index.html Files: /usr/share/doc/gentoo/html/*.html
Thông tin về định dạng tệp tin này, xem install-docs(8) và the Debian doc-base
manual ở bản copy
/usr/share/doc/doc-base/doc-base.html/index.html
trên máy của bạn được cung cấp bởi gói
doc-base
.
Để biết thêm chi tiết về cài đặt tài liệu bổ sung, vui lòng xem Phần 3.3, “Cài đặt các tệp tin đến đích của chúng”
Tệp này chỉ định tên tệp của các tệp tài liệu mà chúng ta có thể dh_installdocs(1) cài đặt vào thư mục tạm thời cho chúng.
Mặc định, nó sẽ bao gồm tất cả các tệp tồn tại ở trong thư mục top-level
(không tính thư mục con) của mã nguồn bao gồm BUGS
,
README*
, TODO
vân vân.
Cho gentoo
, vài tệp tin cũng được
bao gồm:
BUGS CONFIG-CHANGES CREDITS NEWS README README.gtkrc TODO
Nếu gói của bạn cung cấp các tệp Emacs có thể được cài tại thời điểm cài đặt gói, bạn có thể sử dụng những tệp này để thiết lập nó.
Chúng được cài đặt vào thư mục tạm thời bởi dh_installemacsen(1).
Nếu bạn không cần, hãy xoá chúng đi
Lệnh dh_installexamples(1) cài các tệp và thư mục được liệt kê trong tệp này như là các tệp mẫu.
Nếu gói của bạn là một daemon cần được chạy tại thời điểm start-up của hệ thống, bạn bỏ qua đề xuất ban đầu của mình, phải không ?
Tệp
được cài
đặt vào kịch bản
package
.init/etc/init.d/
mà có
thể starts và stops tiếng trình daemon. Một bộ khung mẫu được cung cấp bởi
lệnh dh_make là package
init.d.ex
. Bạn sẽ
có thể phải đổi tên và chỉnh sửa nó, khá nhiều, trong khi đảm bảo cung cấp
header phù hợp với Linux Standard Base (LSB). Nó
được cài đặt vào thư mục tạm thời bởi dh_installinit(1).
Tệp
sẽ được
cài đặt vào
package
.default/etc/default/
. Tệp
này cài đặt mặc định được sử dụng bởi kịch bản init. Tệp
package
thường được
sử dụng để vô hiệu hoá một daemon đang chạy, hoặc cài đặt vài tuỳ chọn mặc
định hoặc độ trê. Nếu kịch bản init của bạn có các tính năng cấu hình nhất
định, bạn có thể cài chúng vào
tệppackage
.default
, thay vì
viết trực tiếp vào chính kịch bản init.
package
.default
Nếu chương trình của bạn cung cấp một tệp cho kịch bản init, bạn cũng có thể
sử dụng nó hoặc không. Nếu bạn không sử dụng kịch bản init của họ thì hãy
tạo một tệp là
. Tuy nhiên nếu
kịch bản init của thượng nguồn trông ổn và để đúng vị trí, bạn vẫn cần cài
đặt liên kết tượng trưng package
.initrc*
. Để làm điểu này bạn cần
phải ghi đè dh_installinit trong tệp
rules
với các dòng sau:
override_dh_installinit: dh_installinit --onlyscripts
Nếu bạn không cần nó, hãy xoá những tệp này.
Nếu những tệp tin này cần được cài đặt vào trong gói của bạn nhưng
make install
của bạn sẽ không làm điều đó. Vậy hãy đặt
các tên tập tin và đích của nó vào tệp install
này,
chúng sẽ được cài đặt bởi
dh_install(1).[56] Bạn nên kiểm tra có hay không cách khác cụ thể hơn để sử dụng
trước. Ví dụ, các tài liệu nên đặt ở docs
chứ không
phải trong tệp này.
Mỗi dòng trong tệp install
thể hiện cho mỗi tệp được
cài đặt, mỗi dòng bắt đầu với tên của tệp nguồn (tương đối với thư mục
build) sao đó một dấu cách (phím space) và tiếp theo là vị trí thư mục đích
sẽ được cài đặt (tương đối với thư mục cài đặt). Một ví dụ như tệp nhị phân
src/
muốn cài đặt; tệp
bar
install
trông giống như sau:
src/bar
usr/bin
Nghĩa là khi gói này được cài đặt, sẽ có một lệnh thực thi ở
/usr/bin/
.
bar
Ngoài ra, tệp install
có thể chứa tên của tệp tin mà
không có thư mục đích để cài đặt khi thư mục tương đối không thay đổi. Định
dạng này thường được sử dụng cho một gói lớn phân chia đầu ra của gói của nó
thành nhiều gói nhị phân bằng cách sử dụng
,
package-1
.install
, vân vân.
package-2
.install
Lệnh dh_install sẽ tìm laị trong thư mục
debian/tmp
, nếu nó không tìm thấy chúng trong thư mục
hiện tại, (hoặc bạn đã nói với nó qua tuỳ chọn
--sourcedir
).
Nếu gói của bạn có các trang thông tin, bạn nên cài chúng bởi dh_installinfo(1) bằng cách liệt kê chúng trong tệp
.
package
.info
Nếu bạn cần tạo các liên kết tượng trưng trong thư mục gói như người bảo trì
gói, bạn nên cài chúng bởi dh_link(1) bằng cách liệt kê đường dẫn đầy đủ của nguồn và đích trong
tệp
.
package
.links
Nếu chương trình lintian
báo có một
chuẩn đoán về lỗi cho trường hợp khi Debian policy chấp nhận ngoại lệ cho
một số quy tắc, bạn có thể sử dụng tệp
hoặc package
.lintian-overridessource/lintian-overrides
để không còn báo lỗi từ
lintian. Vui lòng đọc Lintian User's Manual
(https://lintian.debian.org/manual/index.html
) và tránh lạm dụng điều này.
cho gói nhị phân có tên là package
.lintian-overrides
và được cài
đặt vào
package
usr/share/lintian/overrides/
bởi lệnh dh_lintian.
package
source/lintian-overrides
là cho gói nguồn. Nó không
phải cho cài đặt.
Các chương trình của bạn nên có một trang hướng dẫn (manual page). Nếu không có, bạn có thể tạo mới chúng. Lệnh dh_make tạo vài mẫu tệp cho các trang hướng dẫn. Chúng cần được sao chép và chỉnh sửa cho mỗi lệnh thiếu trong trang hưỡng dẫn. Vui lòng đảm bảo xoá các mẫu không sử dụng.
Các trang hướng dẫn thường viết bằng nroff(1). Mẫu manpage.1.ex
cũng được viết bằng
nroff. Xem trang hướng dẫn man(7)
để biết mô tả ngắn gọn về cách chỉnh sửa tệp đó.
Cuối cùng, tên của tệp trang hướng dẫn nên là tên của chương trình mà tệp đó
mô tả, vậy chúng ta sẽ đổi tên nó từ manpage
thành
gentoo
. Tên tệp cũng bao gồm .1
là
đuôi cho loại một, điều đó có nghĩa là một trang hướng dẫn cho lệnh của
người dùng. Hãy chắc chắn xác minh rằng mục này chính xác.Đây là một danh
sách ngắn của các mục:
Mục | Mô tả | Ghi chú |
---|---|---|
1 | Các lệnh người dùng | Lệnh hoặc kịch bản thực thi |
2 | Lời gọi Hệ thống | Chức năng được cung cấp từ nhân |
3 | Lời gọi Thư viện | Chức năng trong thư viện hệ thống |
4 | Các tệp đặc biệt | Thường xuyên là tệp tại /dev |
5 | Định dạng tệp | Ví dụ định dạng /etc/passwd |
6 | Các trò chơi | Trò chơi hoặc chương trình giải trí |
7 | Gói Macro | Ví dụ như macros man |
8 | Quản trị hệ thống | Các chương trình chỉ thực thi bởi root |
9 | Chương trình của nhân | Các lời gọi không theo chuẩn |
Vì vậy trang man của gentoo
nên được
gọi là gentoo.1
. Nếu không có tệp
gentoo.1
trong thượng nguồn, bạn nên tạo nó bằng cách
đổi tên template manpage.1.ex
thành
gentoo.1
và chỉnh sửa nó bằng cách sử dụng thông tin từ
các ví dụ và tài liệu thượng nguồn.
Bạn có thể sử dụng lệnh help2man để tạo một manpage mới,
help2man sử dụng các dữ liệu từ tuỳ chọn --help
và
--version
của chương trình để tạo ra
manpage. [57]
Mặt khác, nếu bạn thích viết SGML thay vì nroff, bạn có
thể sử dụng tệp mẫu manpage.sgml.ex
. Nếu bạn làm điều
này, bạn phải:
đổi tên tệp tin thành gentoo.sgml
.
cài đặt gói docbook-to-man
thêm docbook-to-man
vào dòng
Build-Depends
của tệp control
thêm mục target override_dh_auto_build
vào tệp
rules
:
override_dh_auto_build: docbook-to-man debian/gentoo.sgml > debian/gentoo.1 dh_auto_build
Hoặc nếu bạn yêu thích XML hơn là SGML, bạn có thể sử dụng mẫu
manpage.xml.ex
. Nếu bạn làm điều này, bạn phải:
đổi tên thành gentoo.1.xml
cài đặt gói docbook-xsl
và một XSLT
processor như xsltproc
(khuyên dùng)
thêm tên các gói docbook-xsl
,
docbook-xml
, và xsltproc
vào dòng
Build-Depends
trong tệp control
thêm mục target override_dh_auto_build
vào tệp
rules
:
override_dh_auto_build: xsltproc --nonet \ --param make.year.ranges 1 \ --param make.single.year.ranges 1 \ --param man.charmap.use.subset 0 \ -o debian/ \ http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl\ debian/gentoo.1.xml dh_auto_build
Nếu gói của bạn có các trang hướng dẫn, bạn nên cài đặt chúng bởi
dh_installman(1) bằng cách liệt kê chúng trong tệp
.
package
.manpages
Để cài đặt docs/gentoo.1
như một tệp manpage cho gói
gentoo
, hãy tạo tệp
gentoo.manpages
như sau:
docs/gentoo.1
Các tệp postinst
, preinst
,
postrm
và prerm
[58] được gọi là maintainer
scripts. Chúng là các kịch bản được đặt trong vùng điều khiển
của gói và sẽ được chạy bởi dpkg khi gói của bạn được cài
đặt, nâng cấp hoặc xóa.
Là một chuyên gia bảo trì, bạn nên tránh bất kỳ chỉnh sửa thủ công các tập lệnh bảo trì vì chúng dễ xảy ra vấn đề. Để biết thêm thông tin, hãy tham khảo Debian Policy Manual, 6 "Package maintainer scripts and installation procedure", và xem các tệp ví dụ được cung cấp bởi dh_make.
Nếu bạn không lắng nghe tôi và đã tạo ra tập lệnh bảo trì tuỳ chỉnh cho một gói, bạn nên chắc chắn kiểm tra chúng không chỉ với install và upgrade mà còn remove và purge.
Nâng cấp lên phiên bản mới nên silent (lặng lẽ, ổn định) và không phá vỡ (để các người dùng không cần chú ý nâng cấp ngoại trừ việc phát hiện ra rằng lỗi cũ đã được khắc phục và có thể có các tính năng mới).
Khi sự nâng cấp cần thiết việc xâm nhập (ví dụ: các tập tin cấu hình rải rác
thông qua các thư mục chính của người dùng với cấu trúc hoàn toàn khác), và
bạn có thể coi đây là phương án cuối cùng để chuyển gói sang trạng thái dự
phòng an toàn (ví dụ như vô hiệu hóa dịch vụ) và cung cấp tài liệu thích hợp
theo yêu cầu của chính sách (README.Debian
và
NEWS.Debian
). Đừng làm phiền người dùng với các câu hỏi
debconf được gọi từ các tập lệnh bảo trì để nâng cấp.
Gói ucf
cung cấp
conffile-like xử lý hạ tầng để ngăn người dùng thay đổi
các tệp mà không được gắn nhãn conffiles chẳng hạn như
những tài liệu được quản lý bởi các kịch bản bảo trì. Điều này sẽ giảm thiếu
các vấn đề phát sinh.
Các kịch bản bảo trì nằm trong số các cải tiến Debian nhằm giải thích tại sao mọi người chọn Debian. Bạn phải thật cẩn thận để không biết chúng thành nguồn gây phiền toái.
Việc đóng gói một thư viện là không dễ dàng cho người bảo trì mới làm quen
và nên tránh. Còn nếu gói của bạn có các thử viện, bạn nên có tệp
debian/
. Xem
Phần A.2, “Quản lý
package
.symbolsdebian/
”.
package
.symbols
Định dạng tệp watch
là tài liệu uscan(1). Tệp watch
cấu hình chương trình
uscan (có trong gói devscripts
) để theo dõi trang web mà bạn lấy
nguồn. Nó cũng được sử dụng bởi dịch vụ Debian
Package Tracker.
Đây là nội dung của nó:
# watch control file for uscan version=3 http://sf.net/gentoo/gentoo-(.+)\.tar\.gz debian uupdate
Thông thường với một tệp watch
, đường dẫn URL tại
http://sf.net/gentoo
được tải về và tìm kiểm cho các liên kết
theo biểu mẫu <a href=...>
. Tên (phần phía sau của
đường dẫn /
) của mỗi liên kết URL được so sánh với mẫu
biểu thức chính quy Perl (xem perlre(1))gentoo-(.+)\.tar\.gz
. Trong số các tệp
phù hợp, tệp đượctải xuống có số phiên bản lớn nhất và chương trình
uupdateđược chạy để tạo một bản nguồn đã được cập nhật.
Mặc dù điều này là đúng cho vài trang web, dịch vụ tải của SourceForge tại
http://sf.net là một ngoại lệ. Khi tệp watch
chứa một đường dẫn URL khớp với biểu thức chính quy Perl
^http://sf\.net/
, chương trình uscan
thay thế nó với http://qa.debian.org/watch/sf.php/
và sau đó áp dụng
quy tắc này. Dịch vụ chuyển hướng URL tại http://qa.debian.org/ được thiết
kế để cung cấp dịch vụ ổn định đến tệp mong muốn với bất kỳ
watch
mẫu biểu thức
http://sf.net/
.
Điều này giải quyết các vấn đề liên quan đế thay đổi định kỳ các đường dẫn
SourceForge.
project
/tar-name
-(.+)\.tar\.gz
Nếu thượng nguồn cung cấp chữ ký mật mã của tarball, bạn nên xác minh tính
xác thực của nó bằng cách sử dụng tùy chọn
pgpsigurlmangle
như mô tả trong
uscan(1).
Trong tệp debian/source/format
, nên có một dòng chỉ
định định dạng mong muốn cho gói nguồn (kiểm tra
dpkg-source>
(1) để có danh sách đầy đủ). Sau phiên
bản squeeze
, cần chỉ ra rằng:
3.0 (native)
cho các gói Debian native hoặc
3.0 (quilt)
cho mọi thứ khác.
Định dạng 3.0 (quilt)
mới sẽ ghi lại các sửa đổi trong
một loạt bản vá lỗi quilt trong thư mục
debian/patches
. Những thay đổi này sau đó sẽ tự động
được áp dụng trong quá trình giải nén gói nguồn. [59] Các sửa đổi Debian chỉ đơn giản được lưu trữ trong
kho lưu trữ debian.tar.gz
chứa tất cả các tệp tin trong
thư mục debian
. Định dạng mới này hỗ trợ đưa các tệp
tin nhị phân như các biểu tượng PNG của người bảo trì gói mà không yêu cầu
thủ thuật. [60]
Khi dpkg-source giải nén một gói nguồn trong định dạng
nguồn 3.0 (quilt)
, nó sẽ tự động áp dụng tất cả các bản
vá được liệt kê trong debian patches/series
. Bạn có
thể bỏ qua việc áp dụng các bản vá ở cuối quá trình giải nén với tùy chọn
--skip-patches
.
Khi bạn muốn quản lý các hoạt động đóng gói Debian bằng VCS, bạn thường tạo
một nhánh (ví dụ. upstream
) để theo dõi thượng nguồn và
một nhánh khác (thường là master
đối với Git) để theo dõi
gói Debian. Đối với trường hợp thứ hai, bạn thường xuyên muốn có thượng
nguồn chưa được vá lỗi với các tệp của bạn debian/*
để
dễ dàng hợp nhất với mã nguồn mới của thượng nguồn.
Sau khi bạn xây dựng một gói, nguồn thường đã được vá. Bạn cần phải gỡ vá
bằng tay bằng cách chạy dquilt pop -a
trước khi đẩy hết
vào nhánh master
. Bạn có thể tự động hóa việc này bằng
cách thêm tệp tin tuỳ chọn debian/source/local-options
để chứa các unapply-patches
. Tệp này không được bao gồm
trong gói nguồn đã tạo và chỉ thay đổi hành vi xây dựng cục bộ. Tệp này có
thể chứa abort-on-upstream-changes
, (xem thêm
dpkg-source ( 1
)).
unapply-patches abort-on-upstream-changes
Các tệp được tự động sinh trong cây nguồn có thể gây khó chịu cho đóng gói
vì chúng tạo ra các tệp vá lỗi không có ý nghĩa. Có các mô đun tùy chỉnh
như dh_autoreconf nhằm giải quyết các vấn đề này như mô
tả trong Phần 4.4.3, “Tuỳ chỉnh tệp rules
”.
Bạn có thể cung cấp một biểu thức chính quy Perl là đối số của tùy chọn
--extend-diff-ignore
khi chạy dpkg-source (1) để bỏ qua các thay đổi được thực hiện đối với các tệp được
tạo tự động trong khi tạo gói nguồn.
Như một giải pháp chung để giải quyết vấn đề của các tệp tự động tạo mới,
bạn có thể lưu trữ một đối số tùy chọn dpkg-source trong
tệp tin source/options
. Ví dụ sau sẽ bỏ qua việc tạo
tệp vá cho config.sub
,
config.guess
và Makefile
.
extend-diff-ignore = "(^|/)(config\.sub|config\.guess|Makefile)$"
Định dạng nguồn cũ 1.0
tạo một tệp
diff.gz
duy nhất có chứa tệp bảo trì gói trong
debian
và các tệp vá cho nguồn. Một gói như vậy hơi
rườm rà để kiểm tra và hiểu cho mỗi thay đổi cây nguồn sau đó. Vì thế đây
không phải định dạng tốt.
Định dạng mới 3.0 (quilt)
sẽ lưu các bản vá lỗi vào các
tệp debian/patches/*
bằng cách sử dụng công cụ
quilt. Các bản vá này và các dữ liệu gói khác nằm trong
thư mục debian
được đóng gói dưới dạng tệp
debian.tar.gz
. Do lệnh dpkg-source
có thể xử lý dữ liệu vá lỗi định dạng của quilt trong
định dạng 3.0 (quilt)
mà không cần tới gói quilt
, nó không cần
quilt
ở trong mục
Build-Depends
. [61]
Lệnh quilt được giải thích trong quilt(1). Nó ghi chép lại các thay đổi của mã nguồn và tạo thành các
bản vá -p1
trong thư mục
debian/patches
và cây mã nguồn không bị ảnh hưởng ngoại
trừ thư mục debian
. Trình tự áp dụng bản vá được ghi
lại tại tệp debian/patches/series
. Bạn có thể áp dụng
(=push), un-apply (=pop), và làm mới một các dễ dàng. [62]
Đối với Chương 3, Sửa đổi mã nguồn, chúng tôi đã tạo ba bản vá lỗi trong
debian/patches
.
Vì các bản vá lỗi của Debian được đặt trong
debian/patches
, hãy đảm bảo thiết lập lệnh
dquilt đúng như mô tả trong Phần 3.1, “Cài đặt quilt”.
Khi mọi người (kể cả bạn) cung cấp một bản vá lỗi mới
cho mã nguồn, áp
dụng cho mã nguồn định dạng gói nguồn foo
.patch3.0 (quilt)
khá
đơn giản:
$ dpkg-source -x gentoo_0.9.12.dsc
$ cd gentoo-0.9.12
$ dquilt import ../foo
.patch
$ dquilt push
$ dquilt refresh
$ dquilt header -e
... describe patch
Các bản vá được lưu trữ trong phiên bản mới 3.0 (quilt)
phải là fuzz tự do. Bạn có thể đảm bảo điều này với
dquilt pop -a; while dquilt push; do dquilt refresh;
done
.
[54]
Trong chương này, các tệp tin trong thư mục debian
được
đề cập đến mà không có debian/
để đơn giản hóa bất cứ
khi nhắc tới.
[55] Xem dpkg(1) và Debian Policy Manual, "D.2.5 Conffiles".
[56] Tệp này sẽ thay thế lệnh dh_movefiles(1) không được dùng nữa, được cấu hình bởi tệp
files
.
[57] Lưu ý rằng lệnh help2mansẽ yêu cầu nhiều tài liệu chi tiết hơn có sẵn trong hệ thống info. Nếu thiếu lệnh này trong trang info, bạn nên tạo nó bằng cách sử dụng lệnh help2man.
[58] Mặc dù việc sử dụng biểu thức viết tắt bash
{pre,post}{inst,rm}
để chỉ ra các tệp này, bạn nên sử
dụng cú pháp POSIX cho các maintainer scripts tương thích với dash như trình
shell của hệ thống
[59] Xem DebSrc3.0 để biết tổng quan việc chuyển
đổi sang các địng dạng mã nguồn mới 3.0 (quilt)
and
3.0 (native)
.
[60] Trên thực tế, định dạng mới này cũng hỗ trợ nhiều tarballs thượng nguồn và các phương pháp nén khác. Những điều này nằm ngoài phạm vi của tài liệu này.
[61] Một số phương pháp bảo trì bộ vá đã được đề xuất và đang được sử dụng cho
các gói Debian. Hệ thống quilt là hệ thống bảo trì được
ưa thích sử dụng. Các hệ thống khác bao gồm dpatch,
dbs, và cdbs. Nhiều trong số này giữ
các bản vá như các tệp tin debian/patches/*
.
[62] Nếu bạn đang yêu cầu một nhà tài trợ để tải lên gói của bạn, cầm làm rõ ràng và viết tài liệu của những thay đổi của bạn là rất quan trọng để tiến hành xem xét gói bởi nhà tài trợ.