Mục lục
Hãy bắt đầu bằng cách tạo một gói riêng của bạn (hoặc, thậm chí tốt hơn, chấp nhận một cái hiện tại).
Nếu bạn đang tạo ra một gói Debian từ một chương trình thượng nguồn, quy trình làm việc điển hình của việc xây dựng gói Debian liên quan đến việc tạo ra một số tệp được đặt tên cụ thể cho từng bước như sau:
Lấy một bản sao của phần mềm thượng nguồn, thường ở dạng nén tar.
package
-version
.tar.gz
Thêm các sửa đổi đóng gói cụ thể của Debian vào chương trình thượng nguồn
trong thư mục debian
và tạo một gói mã nguồn mới
(non-native) (tức là bộ tập tin đầu vào sử dụng cho việc xây dựng gói
Debian) với định dạng 3.0 (quilt)
.
package
_version
.orig.tar.gz
package
_version
-revision
.debian.tar.gz
[4]
package
_version
-revision
.dsc
Xây dựng các gói nhị phân Debian, là những gói có thể cài đặt bình thường
trong định dạng .deb
(hoặc định dạng
.udeb
, được sử dụng bởi Trình cài đặt Debian) từ gói
nguồn Debian.
package
_version
-revision
_arch
.deb
Xin lưu ý rằng ký tự phân tách
và
package
đã thay đổi từ
version
-
(dấu trừ) trong tên tệp nén thành _
(gạch dưới) ở trong tên của gói Debian
Trong tên tệp ở trên, hãy thay thế
bằng package name, tên
package
bằng upstream version,
version
thành Debian revision, và
revision
thành package architecture, như đã định nghĩa trong
Debian Policy Manual. [5]
arch
Mỗi bước của phác thảo này được giải thích với các ví dụ chi tiết trong các phần sau.
Có thể bạn đã chọn gói bạn muốn tạo. Điều đầu tiên bạn cần làm là kiểm tra xem gói có trong kho lưu trữ đã được phân phối bằng cách sử dụng như sau:
lệnh aptitude
trang web Debian packages
trang web Debian Package Tracker
Nếu một gói đã tồn tại, tốt, hãy cài đặt nó! :-) Nếu lúc cài đặt xuất hiện từ orphaned (điều đó có nghĩa người bảo trì gói đấy đã thiết lập tại Debian QA Group), bạn có thể chọn nó nếu nó vẫn có sẵn. Bạn cũng có thể giúp một gói nếu người bảo trị của gói đó đã tạo một "Request for Adoption" (RFA).[6]
Có một số tài nguyên trạng thái quyền sở hữu gói:
Một lưu ý quan trọng là Debian đã có các gói cho hầu hết các loại chương trình, và số lượng các gói đã có trong kho lưu trữ Debian lớn hơn nhiều so với các cộng tác viên có quyền tải lên. Do đó, đóng góp cho các gói đã có sẵn trong kho lưu trữ luôn được đánh giá cao hơn (và nhiều khả năng nhận tài trợ) bởi các nhà phát triển khác [7]. Bạn có thể đóng góp bằng nhiều cách:
Tiếp nhận gói mồ côi, nhưng vẫn đang được sử dụng
tham gia vào packaging teams
xử lý lỗi của các gói phổ biến
chuẩn bị QA or NMU uploads
Nếu bạn có thể nhận bảo trì gói nào, hãy lấy nguồn (bằng các công cụ như
apt-get source
) và
kiểm tra chúng. Tài liệu này tiếc là không bao gồm thông tin toàn diện về
việc nhận bảo trì gói. Rất may, bạn không cần phải mất nhiều thời gian khó
khăn để tìm hiểu cách gói làm việc, khi đã có ai đó trước đây thực hiện các
thiết lập ban đầu cho bạn. Hãy tiếp tục đọc, và; Rất nhiều lời khuyên dưới
đây vẫn sẽ được áp dụng cho trường hợp của bạn.
packagename
Nếu là một gói mới, và bạn quyết định muốn xem nó trong Debian, thực hiện theo các bước sau:
Trước tiên, bạn phải biết rằng chương trình hoạt động như thế nào, và đã thử nó một thời gian để xác nhận tính hữu dụng của nó.
Bạn phải kiểm tra xem có ai khác đang làm việc trên gói trên trang Work-Needing và Prospective Packages . Nếu không có
ai khác đang làm việc trên nó, hãy gửi báo cáo lỗi ITP (Intent To Package)
đến gói wnpp
bằng cách sử dụng lệnh
reportbug. Nếu ai đó đã làm việc đó rồi, hãy liên hệ với
họ nếu bạn cảm thấy cần. Nếu không — hãy tìm một chương trình thú vị
mà chưa ai đang duy trì.
Phần mềm phải có một giấy phép.
Đối với mục main
, Chính sách Debian yêu cầu các gói phải
tuân thủ hoàn toàn Nguyên tắc về Phần mềm Tự do
Debian ( DFSG và không yêu cầu một gói nào bên ngoài mục
main
để biên dịch hay thực thi. Đây là trường
hợp bắt buộc.
Đối với mục contrib
, nó phải tuân thủ DFSG nhưng nó có
thể yêu cầu một gói bên ngoài mục main
để biên dịch hoặc
thực thi.
Còn mục non-free
, nó có thể không tương thích với DFSG
nhưng cần được phân phối .
Nếu bạn không chắc chắn về vị trí của gói đó, hãy đăng hỏi về giấy phép trên debian-legal@lists.debian.org và xin tư vấn.
Chương trình không nên tác động tới mối quan tâm bảo mật và bảo trì cho hệ thống Debian.
Chương trình nên được ghi chép đầy đủ và mã của nó cần phải có thể hiểu được (không làm rối)
Bạn nên liên hệ với tác giả của chương trình để kiểm tra nếu họ đồng ý với việc đóng gói nó trở nên thân thiện với Debian. Điều quan trọng là có thể tham khảo ý kiến của tác giả trong trường hợp có bất kỳ vấn đề với chương trình, do đó, không cố gắng với gói phần mềm không còn phát triển/bảo trì từ thượng nguồn
Chương trình chắc chắn không nên chạy setuid root, hoặc thậm chí cao hơn, nó không cần phải setuid hoặc setgid để làm bất cứ điều gì.
Chương trình không nên là một daemon, hoặc cho vào trong thư mục
*/sbin
, hoặc mở một cổng như là root.
Tất nhiên, cuối cùng chỉ là một biện pháp an toàn, và nhằm cứu bạn khỏi sự kích động của người dùng nếu bạn làm điều gì đó sai trái trong một số daemon setuid… Khi bạn có nhiều kinh nghiệm hơn trong trong gói, bạn sẽ có thể gói phần mềm kiểu như vậy.
Là một người bảo trì mới, bạn được khuyến khích để có được một số kinh nghiệm trong đóng gói với các gói đơn giản và không khuyến khích từ việc tạo ra các gói phức tạp.
Gói đơn giản
gói nhị phân duy nhất, arch = all (bộ sưu tập dữ liệu như hình nền)
gói nhị phân duy nhất, arch = all (các tệp thực thi được viết bằng ngôn thông dịch như POSIX shell)
Gói phức tạp trung bình
gói nhị phân duy nhất, arch = all (tệp tin thực thi nhị phân của ELF được biên dịch từ các ngôn ngữ như C và C ++)
nhiều gói nhị phân, arch = any + all (các gói cho các tập tin thực thi nhị phân ELF + tài liệu)
thượng nguồn ở định dạng khác với tar.gz
hoặc
tar.bz2
thượng nguồn chứa nội dung không thể giải quyết
Gói phức tạp cao
gói chứa các kịch bản được sử dụng bởi các gói khác
gói thư viện ELF chung được sử dụng bởi các gói khác
nhiều gói nhị phân bao gồm gói thư viện ELF
gói nguồn có nhiều thượng nguồn
gói module hạt nhân
các gói bản vá cho hạt nhân
bất kỳ gói nào kịch bản người bảo trì không tầm thường
Đóng gói gói phức tạp cao không phải là quá khó, nhưng nó đòi hỏi một chút kiến thức. Bạn nên tìm kiếm hướng dẫn cụ thể cho từng tính năng phức tạp. Ví dụ, một số ngôn ngữ có tài liệu chính sách phụ của riêng mình:
Có một câu trong tiếng Latinh nói rằng: fabricando fit
faber (thực hành làm cho hoàn hảo). Đó là tính cao
nhất được đề nghị để thực hành và thử nghiệm với tất cả các bước
của gói Debian với các gói đơn giản trong khi đọc hướng dẫn này. Một
tarball thượng nguồn đơn giản hello-sh-1.0.tar.gz
được
tạo như sau có thể cung cấp một điểm khởi đầu tốt: [8]
$ mkdir -p hello-sh/hello-sh-1.0; cd hello-sh/hello-sh-1.0 $ cat > hello <<EOF #!/bin/sh # (C) 2011 Foo Bar, GPL2+ echo "Hello!" EOF $ chmod 755 hello $ cd .. $ tar -cvzf hello-sh-1.0.tar.gz hello-sh-1.0
Vì vậy, điều đầu tiên cần làm là tìm và tải về mã nguồn gốc. Có lẽ bạn đã
có tập tin nguồn mà bạn đã chọn ở trang chủ của tác giả. Mã nguồn của các
chương trình Unix tự do thường có trong
tar+gzip định dạng với phần mở rộng là
.tar.gz
, tar+bzip2
định dạng với phần mở rộng là .tar.bz2
,
hoặc tar+xz định dạng với phần mở rộng
là .tar.xz
. Các bản nén này thường chứa một thư mục
gọi là
với tất cả các
nguồn bên trong.
package
-version
Nếu phiên bản mới nhất của mã nguồn có sẵn thông qua Version Control
System(VCS) như Git, Subversion hoặc CVS, bạn cần phải lấy nó với
git clone
, svn co
hoặc cvs
co
và đóng gói lại nó vào
tar+gzip định dạng cho mình bằng cách
sử dụng tuỳ chọn --exclude-vcs
Nếu mã nguồn chương trình của bạn xuất hiện dưới dạng một số loại lưu trữ
khác (ví dụ: tên tập tin kết thúc bằng Z
hoặc
.zip
[9]), Bạn cũng
nên giải nén nó bằng các công cụ thích hợp và đóng gói lại nó.
Nếu mã nguồn chương trình của bạn đi kèm với một số nội dung không tuơng
thích DFSG, bạn cũng nên giải nén nó để loại bỏ các nội dung đó và đóng gói
lại nó bằng một phiên bản chỉnh sửa của thượng nguồn có chứa
dfsg
.
Với một ví dụ: Tôi sẽ sử dụng chương trình được gọi là gentoo , trình quản lý tệp GTK+. [10]
Tạo một thư mục con trong thư mục home của bạn có tên là
debian
hoặc deb
hoặc bất cứ thứ gì
bạn thấy thích hợp (ví dụ như ~/gentoo
sẽ là tốt trong
trường hợp này). Đặt tệp nén mã nguồn đã tải xuống vào trong đó và giải nén
(với tar xzf gentoo-0.9.12.tar.gz
). Đảm bảo không có
thông báo cảnh báo lỗi, thậm chí irrelevant, bởi vì
các công cụ giải nén của người khác có thể hoặc không thể bỏ qua những dị
thường này, vì vậy họ có thể gặp sự cố khi giải nén chúng. Dòng lệnh trình
báo của bạn có thể giống như sau:
$ mkdir ~/gentoo ; cd ~/gentoo
$ wget http://www.example.org
/gentoo-0.9.12.tar.gz
$ tar xvzf gentoo-0.9.12.tar.gz
$ ls -F
gentoo-0.9.12/
gentoo-0.9.12.tar.gz
Bây giờ bạn có một thư mục con khác, gọi là gentoo-0.9.12
. Đi vào thư mục đó và cẩn trọng đọc tài
liệu được cung cấp. Thường có các tệp có README*
,
INSTALL*
, *.lsm
hoặc
*.html
. Bạn phải tìm hướng dẫn về cách biên dịch và
cài đặt chương trình (có lẽ họ giả sử rằng bạn sẽ muốn cài đặt chương trình
vào thư mục /usr/local/bin
), bạn sẽ không làm điều đó,
nhưng còn nhiều thứ về sau trong Phần 3.3, “Cài đặt các tệp tin đến đích của chúng”).
Bạn nên bắt đầu đóng gói với một thư mục mã nguồn hoàn toàn sạch sẽ (nguyên sơ), hoặc chỉ đơn giản với mã nguồn mới được giải nén
Các chương trình đơn giản thường có một Makefile
và có
thể được biên dịch chỉ bằng cách chạy lệnh
make
. [11] Một số còn hỗ
trợ make check
, nhằm tự kiểm tra điều kiện biên dịch. Để
cài đặt chương trình vào thư mục đích thường được thực hiện với
make install
.
Bây giờ hãy thử biên dịch và chạy chương trình của bạn, để đảm bảo nó hoạt động đúng và không làm hỏng cái gì khác trong khi cài đặt hoặc chạy.
Ngoài ra, bạn có thể chạy make clean
(hoặc tốt hơn nữa là
make distclean
) để dọn dẹp thư mục build. Đôi khi thậm
chí còn hỗ trợ kịch bản gỡ cài đặt, make uninstall
được
sử dụng để xóa tất cả các tập tin đã cài đặt.
Rất nhiều chương trình phần mềm tự do được viết bằng ngôn ngữ C và C++. Nhiều trong
số đó sử dụng Autotools hoặc CMake để làm cho chúng dễ dàng biên dịch đối
với các nền tảng khác nhau. Các công cụ xây dựng này cần được sử dụng để tạo
tệp Makefile
từ tệp nguồn bắt buộc khác. Sau đó, các
chương trình dễ dàng được xây dựng bằng cách sử dụng make; make
install
.
Autotools là hệ thống xây dựng GNU
bao gồm Autoconf, Automake, Libtool,
và gettext. Bạn có thể nhận ra các nguồn như
vậy bằng các tệp configure.ac
,
Makefile.am
, và
Makefile.in
.[12]
Bước đầu tiên của quy trình làm việc với Autotools thường là chạy với bản
thượng nguồn autoreconf -i -f
trong thư mục nguồn và các
tệp được tạo ra cùng với mã nguồn.
configure.ac-----+-> autoreconf -+-> configure Makefile.am -----+ | +-> Makefile.in src/Makefile.am -+ | +-> src/Makefile.in | +-> config.h.in automake aclocal aclocal.m4 autoheader
Việc chỉnh sửa các tệp configure.ac
và
Makefile.am
yêu cầu vài kiên thức về
autoconf và automake. Xem
info autoconf
và info automake
.
Bước thứ hai của quy trình làm việc Autotools thường là chúng ta sẽ có được
các tệp mới sinh ra và chỉ cần chạy ./configure &&
make
trong thư mục nguồn để biên dịch thành chương trình
binary
.
Makefile.in -----+ +-> Makefile -----+-> make -> binary
src/Makefile.in -+-> ./configure -+-> src/Makefile -+
config.h.in -----+ +-> config.h -----+
|
config.status -+
config.guess --+
Bạn có thể thay đổi nhiều thứ trong Makefile
; ví dụ bạn
có thể thay đổi thư mục mặc định để cài đặt tệp bằng cách sử dụng tùy chọn
./configure --prefix=/usr
.
Mặc dù không bắt buộc, việc cập nhật cấu hình configure
và các tệp khác với autoreconf -i -f
có thể cải thiện
tính tương thích của mã nguồn. [13]
CMake là một hệ thống xây dựng thay thế. Bạn có
thể nhận ra các nguồn như vậy bằng tệp CMakeLists.txt
.
Nếu mã nguồn thượng nguồn là gentoo-0.9.12.tar.gz
, bạn
có thể dùng gentoo
làm nguồn (source) tên gói và 0.9.12
là phiên bản thượng nguồn. Chúng được mô tả trong tệp
debian/changelog
chi tiết tại Phần 4.3, “changelog
”.
Mặc dù phương pháp tiếp cận đơn giản này là chủ yếu, bạn có thể cần phải điều chỉnh tên gói và phiên bản thượng nguồn bằng cách đổi tên thượng nguồn theo Chính sách Debian và quy ước hiện hành.
Bạn phải chọn tên gói chỉ bao gồm các chữ
thường (a-z
), chữ số (0-9
, dấu cộng
(+
) dấu trừ (-
), và dấu chấm
(.
). Phải có ít nhất hai ký tự, phải bắt đầu bằng một ký
tự chữ hoặc số, và không được giống với tên đã tồn tại. Bạn nên giữ chiều
dài của nó trong vòng 30 ký tự. [14]
Nếu thượng nguồn sử dụng một số thuật ngữ chung chung như
test-suite
cho tên của nó, bạn nên đổi tên nó để xác định
rõ ràng nội dung của nó và cũng tránh làm rối không gian tên. [15]
Bạn nên chọn phiên bản thượng nguồn chỉ
bao gồm alphanumerics (0-9A-Za-z
), dấu cộng ( +
), dấu ngã ( ~
), và dấu chấm
(.
). Nó phải bắt đầu bằng một chữ số
(0-9
). [16]Tốt nhất nên
giữ chiều dài của nó trong vòng 8 ký tự nếu có thể. [17]
Nếu thượng nguồn không sử dụng cấu trúc phiên bản bình thường như
2.30.32
mà lại sử dụng một số kiểu như
11Apr29
, một chuỗi tên mã ngẫu nhiên, hoặc một giá trị
băm VCS như một phần của phiên bản, hãy chắc chắn loại bỏ chúng khỏi
phiên bản thượng nguồn. Thông tin này có
thể được ghi lại trong tệp debian/changelog
. Nếu bạn
cần tạo mới ra một chuỗi phiên bản, nên sử dụng định dạng
YYYYMMDD
như là 20110429
cho phiên
bản thượng nguồn. Điều này đảm bảo rằng dpkg hiểu các
phiên bản sau này chính xác như cho việc nâng cấp phiên bản. Nếu bạn cần đảm
bảo chuyển đổi suôn sẻ sang cấu trúc phiên bản bình thường như
0.1
trong tương lai, hãy sử dụng định dạng
0~YYMMDD
như 0~110429
cho phiên bản
thượng nguồn.
Các tên phiên bản [18] có thể được so sánh bằng cách sử dụng dpkg(1) như sau:
$ dpkg --compare-versionsver1
op
ver2
Quy tắc so sánh phiên bản có thể được tóm tắt như sau:
Chuỗi được so sánh từ đầu đến cuối chuỗi.
Các chữ cái lớn hơn chữ số.
Số được so sánh như số nguyên.
Các chữ cái được so sánh theo thứ tự mã ASCII.
Có các quy tắc đặc biệt cho các dấu chấm (.
), cộng
(+
), ngã (~
), như sau:
0.0
< 0.5
<
0.10
< 0.99
<
1
< 1.0~rc1
<
1.0
< 1.0+b1
<
1.0+nmu1
< 1.1
<
2.0
Một trường hợp có thể xảy ra khi các bản phát hành thượng nguồn có phiên bản
là gentoo-0.9.12-ReleaseCandidate-99.tar.gz
nó là phiên
bản trước của gentoo-0.9.12.tar.gz
. Bạn cần đảm bảo
rằng việc nâng cấp vẫn hoạt động bằng cách đổi tên nguồn thượng nguồn thành
gentoo-0.9.12~rc99.tar.gz
.
Thiết lập các biến môi trường shell $DEBEMAIL
và
$DEBFULLNAME
để các công cụ bảo trì Debian nhận biết địa
chỉ email và tên của bạn cho việc sử dụng cho các gói .[19]
$ cat >>~/.bashrc <<EOF DEBEMAIL="your.email.address@example.org" DEBFULLNAME="Firstname Lastname" export DEBEMAIL DEBFULLNAME EOF $ . ~/.bashrc
Các gói Debian thường là các gói non-native Debian được tạo từ các chương
trình thượng nguồn. Nếu bạn muốn tạo gói Debian mới từ nguồn của một nguồn
thượng nguồn gentoo-0.9.12.tar.gz
, bạn có thể tạo một
gói Debian đầu tiên bằng cách sử dụng lệnh dh_make như
sau:
$ cd ~/gentoo $ wget http://example.org/gentoo-0.9.12.tar.gz $ tar -xvzf gentoo-0.9.12.tar.gz $ cd gentoo-0.9.12 $ dh_make -f ../gentoo-0.9.12.tar.gz
Tất nhiên, hãy thay tên tệp bằng tên của bản lưu trữ gốc của bạn. [20] Xem dh_make(8) để biết chi tiết.
Bạn sẽ thấy một số câu hỏi về loại gói bạn muốn tạo. Gentoo là một gói nhị
phân duy nhất — nó chị tạo ra một gói nhị phân, tức chỉ cần một tập
tin .deb
— vì vậy chúng ta sẽ chọn tùy chọn đầu
tiên (với s
), kiểm tra thông tin trên màn hình và xác
nhận bằng cách nhấn ENTER
. [21]
Việc thực hiện dh_make sẽ tạo một bản sao của tarball
thượng nguồn gentoo_0.9.12.orig.tar.gz
trong thư mục
cha để phù hợp với việc tạo ra gói nguồn non-native Debian với tên
debian.tar.gz
sau này:
$ cd ~/gentoo ; ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz gentoo_0.9.12.orig.tar.gz
Vui lòng lưu ý hai điểm chính của tên tệp tin này
gentoo_0.9.12.orig.tar.gz
:
Tên gói và phiên bản phân cách nhau bởi kí tự _
(gạch
dưới)
Thành phần .orig
được chèn trước
.tar.gz
Bạn cũng nên lưu ý rằng nhiều tệp mẫu đã được tạo ra trong thư mục
debian
Chúng được giải thích ở Chương 4, Các tệp yêu cầu trong thư mục debian
và Chương 5, Các tệp khác trong thư mục debian
. Bạn cũng nên hiểu rằng việc đóng gói không thể
là một quá trình tự động hoàn toàn. Bạn sẽ cần phải chỉnh sửa thượng nguồn
cho Debian (xem Chương 3, Sửa đổi mã nguồn). Sau đó, bạn phải cần sử dụng
phương pháp thích hợp cho công việc xây dựng gói Debian (Chương 6, Biên dịch gói), kiểm thử chúng (Chương 7, Kiểm tra gói để tìm lỗi), vả đẩy chúng
lên máy chủ (Chương 9, Tải gói phần mềm lên). Tất cả các bước sẽ được giải thích.
Nếu bạn vô tình xoá một số tệp khuôn mẫu trong khi đang làm việc với chúng,
bạn có thể khôi phục chúng bằng cách chạy dh_make với tùy
chọn --addmissing
trong thư mục mã nguồn đang làm việc
Cập nhật cho một gói hiện sẽ có thể phức tạp vì nó có thể sử dụng các kỹ thuật cũ. Khi học những điều cơ bản, vui lòng gắn bó với việc tạo ra một gói theo kỹ thuật mới; Giải thích thêm được đưa ra trong Chương 8, Cập nhật gói phần mềm.
Vui lòng lưu ý rằng mã nguồn không cần chứa bất kỳ hệ thống xây dựng nào đã
thảo luận trong Phần 2.4, “Xây dựng hệ thống đơn giản” và Phần 2.5, “Xây dựng hệ thống phổ biến”.
Nó có thể chỉ là một tập hợp các dữ liệu đồ hoạ,... Việc cài đặt các tệp có
thể được chỉ thực hiện bằng các tập tin cấu hình debhelper
như là
debian/install
(xem Phần 5.11, “install
”).
[4] Đối với các gói mã nguồn Debian kiểu cũ với định dạng
1.0
,
được sử dụng để thay thế. package
_version
-revision
.diff.gz
[5] Xem 5.6.1 "Source", 5.6.7 "Package", và 5.6.12 "Version".kiến trúc gói theo Debian Policy Manual, 5.6.8 "Architecture" và đuợc tự động ký bởi tiến trình xây dựng gói.
[7] Có thể nói rằng, sẽ luôn có những chương trình mới sẽ thật sự cần đóng gói mới
[8] Đừng lo lắng về việc thiếu tệp Makefile
. Bạn có thể
cài đặt lệnh hello bằng cách sử dụng
debhelper như trong Phần 5.11, “install
”, hoặc bằng
cách sửa đổi nguồn thượng nguồn để thêm tệp Makefile
với mục install như trong Chương 3, Sửa đổi mã nguồn.
[9] Bạn có thể xác định định dạng lưu trữ bằng sử dụng lệnh file khi phần mở rộng tệp là không đủ thông tin.
[10] Chương trình này đã được đóng gói. phiên bản hiện tại sử dụng Autotools làm cấu trúc xây dựng nên sẽ khác với các ví dụ sau dựa trên phiên bản 0.9.12.
[11]
Nhiều chương trình hiện đại đi kèm với một kịch bản
configure
mà khi thực hiện tạo tệp
Makefile
tùy chỉnh linh hoạt đối với hệ thống của bạn.
[12] Autotools là công cụ quá lớn để giải quyết trong hướng dẫn nhỏ này. Phần này
chỉ nhằm cung cấp các từ khoá và tham khảo. Hãy đảm bảo đọc Autotools Tutorial và bản sao cục bộ
của /usr/share/doc/autotools-dev/README.Debian.gz
, nếu bạn cần sử dụng nó.
[13] Bạn có thể tự động hoá việc này bằng cách sử dụng gói dh-autoreconf
. Xem Phần 4.4.3, “Tuỳ chỉnh tệp rules
”.
[14] Độ dài của trường tên gói mặc định trong aptitude là 30. Và có hơn 90% gói có độ dài tên dưới 24 ký tự.
[15] Nếu bạn theo dõi Debian Developer's Reference 5.1. "New packages", quá trình ITP thường sẽ bắt lỗi loại vấn đề này.
[16] Quy tắc chặt chẽ hơn này sẽ giúp bạn tránh nhầm lẫn tên tập tin.
[17] Độ dài của trường phiên bản mặc định trong aptitude là 10. Phiên bản Debian với dấu gạch nối trước thường tiêu tốn 2. Đối với hơn 80% gói, phiên bản thượng nguồn ít hơn 8 ký tự và phiên bản Debian có ít hơn 2 ký tự. Đối với hơn 90% gói, phiên bản thượng nguồn ít hơn 10 ký tự và phiên bản Debian ít hơn 3 ký tự.
[18] Các chuỗi tên phiên bản có thể là upstream
version (
),
Debian revision
(version
), hoặc version
(revision
).
Xem Phần 8.1, “Phiên bản tu chỉnh Debian mới” để biết cách mà Debian revision hoạt động
version
-revision
[19] Ví dụ dưới đây giả định bạn đang sử dụng Bash là shell đăng nhập mặc định
của bạn. Nếu bạn sử dụng một số shell đăng nhập khác như Z shell, hãy sử
dụng các file cấu hình tương ứng thay vì ~/.bashrc
.
[20] Nếu thượng nguồn đã cung cấp thư mục debian
và cả nội
dung của nó, hãy chạy lệnh dh_make với tùy chọn thêm
--addmissing
. Định dạng nguồn 3.0
(quilt)
là đủ mạnh để không làm hỏng các gói này. Bạn có thể cần
phải cập nhật các nội dung được cung cấp bởi phiên bản thượng nguồn cho gói
Debian của bạn.
[21] Có vài sự lựa chọn bao gồm: s
cho Single binary package,
i
cho arch-Independent package, m
cho
Multiple binary packages, l
cho Library package,
k
cho Kernel module package, n
cho
kernel patch package, và b
cho cdbs
package. Tài liệu này tập trung vào sử
dụng câu lệnh dh (từ gói debhelper
) để tạo một single binary package,
nhưng cũng nói tới làm sao sử dụng nó cho arch-independent hay multiple
binary packages. Gói cdbs
cung cấp
các nền tảng kịch bản khác nhau cho lệnh dh và cả nằm
ngoài phạm vi tài liệu này.