Mục lục
Có vài phương pháp bạn nên biết để dò tìm lỗi trong một gói phần mềm trước khi tải nó lên kho phần mềm công cộng.
Thực hiện việc kiểm tra trên một máy khác không phải của bạn cũng là một ý hay. Ban phải quan sát kỹ bất kỳ cảnh báo hoặc lỗi cho tất cả các bài kiểm tra được mô tả ở đây.
Nếu bạn tìm thấy một tập tin vá mới được tự động tạo ra như là
debian-changes-*
trong thư mục
debian/patches
sau khi biên dịch gói phần mềm Debian
không dựa trên nền tảng máy bạn dưới định dạng 3.0
(quilt)
, rất có thể bạn đã thay đổi vài tập tin vô ý hoặc kịch bản
biên dịch đã thay đổi mã nguồn của thượng nguồn. Nếu đây là lỗi của bạn,
hãy sửa nó. Nếu đây là lỗi gây ra bởi kịch bản biên dịch, sửa nguyên nhân
gốc với lệnh dh-autoreconf như trong Phần 4.4.3, “Tuỳ chỉnh tệp rules
” hoặc đi vòng qua nó với tập tin
source/options
như trong Phần 5.24, “source/options
”.
Bạn phải kiểm tra gói phần mềm của bạn xem có lỗi trong quá trình cài đặt hay không. Lệnh debi(1) giúp bạn kiểm tra việc cài đặt của tất cả các gói phần mềm nhị phân được tạo ra.
$ sudo debi gentoo_0.9.12-1_i386.changes
Để tránh vấn đề trong quá trình cài đặt trên các hệ thống khác nhau, bạn
phải chắc chắn rằng không có xung đột về tên tập tin với các gói phần mềm
khác đang hiện hữu, dùng tập tin
Contents-
tải về từ kho
Debian. Lệnh apt-file có thể rất tiện cho công việc
này. Nếu có xung đột, xin hãy hành động để tránh vấn đề thực tế này, dù cho
bằng cách thay đổi tên tập tin, bằng cách di chuyển một tập tin chung qua
một gói phần mềm khác mà nhiều gói phần mềm có thể dựa trên, bằng các phương
pháp thay thế (xem
update-alternatives(1)) phối hợp với các nhà bảo trì của
các gói phần mềm bị ảnh hưởng khác, hoặc khai báo một mối quan hệ
i386
Conflicts
trong tập tin
debian/control
.
Tất cả các kịch bản bảo trì (đó là, các tập tin
preinst
, prerm
,
postinst
, and postrm
) rất khó để
viết đúng cách trừ khi chúng được tạo ra tự động bởi các chương trình
debhelper
. Vì thể đừng sử dụng
chúng nếu bạn là một người bảo trì mới vào nghề (xem Phần 5.18, “{pre,post}{inst,rm}
”).
Nếu gói phần mềm tận dụng các kịch bản bảo trì phức tạp này, hãy chắc chắn rằng bạn kiểm tra không chỉ quá trình cài đặt mà cả công đoạn tháo gỡ phần mềm, xóa hoàn toàn phần mềm, và nâng cấp. Nhiều lỗi kịch bản bảo trì hiện ra khi các phần đã được tháo gỡ hoặc xóa bỏ. Sử dụng lệnh dpkg như sau để kiểm tra:
$ sudo dpkg -r gentoo $ sudo dpkg -P gentoo $ sudo dpkg -i gentoo_version
-revision
_i386
.deb
Lệnh đó nên được chạy theo các chuỗi như sau:
cài đặt phiên bản trước đó (nếu cần thiết).
nâng cấp nó từ phiên bản trước.
giảm cấp nó xuống phiên bản thấp hơn (không bắt buộc).
xóa bỏ hoàn toàn nó.
cài đặt gói phần mềm mới
tháo gỡ nó.
cài đặt nó lại.
xóa bỏ hoàn toàn nó.
Nếu đây là gói phần mềm đầu tiên của bạn, bạn nên tạo các gói phần mềm giả với các phiên bản khác nhau để kiểm tra gói của bạn trước để tránh các vấn đề trong tương lai.
Hãy nhớ rằng nếu gói phần mềm của bạn đã được tung ra trước đây trong Debian, mọi người sẽ thông thường nâng cấp nó lên gói phần mềm của bạn từ phiên bản vốn nằm trong bản phân phối Debian trước. Hãy nhớ kiểm tra việc nâng cấp từ phiên bản đó.
Mặc dù giảm cấp không được hỗ trợ chính thức, hỗ trợ nó là một cử chỉ thân thiện.
Chạy lintian(1) qua tập tin
.changes
của bạn. Lệnh lintian chạy
nhiều kịch bản kiểm tra các lỗi đóng gói thường gặp. [76]
$ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes
Tất nhiên, thay thế tên tập tin với tên của tập tin
.changes
được tạo ra cho gói phần mềm của bạn. Kết quả
của lệnh lintian sử dụng các cờ sau:
E:
cho lỗi; một lỗi đóng gói hoặc một vi phạm chắc chắn
về chính sách.
W:
cho cảnh báo; một lỗi đóng gói hoặc một vi phạm có thể
liên quan đến chính sách.
I:
cho thông tin; thông tin về một số mặt của việc đóng
gói.
N:
cho ghi chú; a thông điệp chi tiết để hỗ trợ tìm lỗi.
O:
cho đè lên ngầm định; một thông điệp bị đè lên bởi các
tập tin lintian-overrides
nhưng hiện ra bởi tham số
--show-overrides
.
Khi bạn thấy các cảnh báo, tùy chỉnh gói phần mềm để tránh chúng hoặc kiểm
tra để chắc rang các cảnh báo đó là cảnh báo nhầm. Nếu là nhầm, hãy thiết
đặt các tập tin lintian-overrides
như mô tả trong Phần 5.14, “{
”.
package
.,source/}lintian-overrides
Ghi chú rằng bạn có thể biên dịch gói phần mềm với dpkg-buildpackage và chạy lintian trên nó trong một dòng lệnh, nếu bạn sử dụng debuild(1) hay pdebuild(1).
Bạn có thể liệt kê các tập tin trong gói phần mềm Debian nhị phân với lệnh debc(1).
$ debc package
.changes
Bạn có thể so sánh nội dung tập tin của hai gói phần mềm Debian chứa mã nguồn với lệnh debdiff(1).
$ debdiffold-package
.dscnew-package
.dsc
Bạn có thể so sánh danh sách tập tin trong hai gói phần mềm Debian nhị phân với lệnh debdiff(1).
$ debdiffold-package
.changesnew-package
.changes
Những lệnh này rất hữu dụng để phát hiện cái gì đã thay đổi trong gói phần mềm nguồn và để tìm ra những thay đổi vô ý tạo ra trong khi cập nhật các gói phần mềm nhị phân, như vô ý đặt tập tin sai địa điểm hoặc vô ý xóa tập tin.
Bạn có thể so sánh hai tập tin diff.gz
với lệnh
interdiff(1). Lệnh này rất hữu dụng để chắc
chắn rằng không có thay đổi vô ý nào được tạo ra trong mã nguồn bởi người
bảo trì trong quá trình tạo các gói phần mềm dưới định dạng nguồn cũ
1.0
.
$ interdiff -zold-package
.diff.gznew-package
.diff.gz
Định dạng nguồn mới 3.0
lưu trữ những thay đổi trong
nhiều tập tin vá như mô tả ở Phần 5.25, “patches/*
”. Bạn cũng có thể
theo dõi những thay đổi của tập tin debian/patches/*
dùng lệnh interdiff.
Rất nhiều thao tác kiểm soát tập tin này có thể được gộp chung vào một quá
trình trực quan bởi một trình quản lý tập tin như mc(1)
với khả năng cho phép bạn duyệt không chỉ nội dung của các tập tin gói phần
mềm *.deb
mà cả các tập tin
*.udeb
, *.debian.tar.gz
,
*.diff.gz
, và *.orig.tar.gz
.
Hãy quan sát cả những tập tin bổ sung không cần thiết và những tập tin không
có nội dung, trong cả gói phần mềm nhị phân và nguồn. Thông thường những
phần thừa không được dọn dẹp sạch sẽ; thay đổi tập tin
rules
của bạn để bù lại điều này.
[76] Bạn không cần phải cung cấp lintian tham số -i
-I --show-overrides
nếu bạn tùy chỉnh
/etc/devscripts.conf
hoặc
~/.devscripts
như mô tả trong Phần 6.3, “Lệnh debuild”.