Hướng dẫn đóng gói Ubuntu

Tài liệu

Bao bì với Debhelper


[Quan trọng]

Yêu cầu: Các yêu cầu từ phần được gọi là "Bao bì từ đầu" cộng với debhelper và dh-make

Là một trình đóng gói, bạn hiếm khi tạo các gói từ đầu như chúng ta đã làm trong phần trước. Như bạn có thể tưởng tượng, nhiều nhiệm vụ và thông tin trong tệp quy tắc , ví dụ, là phổ biến cho các gói. Để làm cho bao bì dễ dàng hơn và hiệu quả hơn, bạn có thể sử dụng debhelper để trợ giúp với các tác vụ này. Debhelper là một tập hợp các kịch bản Perl (bắt đầu bằng dh_ ) tự động hóa quá trình xây dựng gói. Với những kịch bản này, việc xây dựng một gói Debian trở nên khá đơn giản.

Trong ví dụ này, chúng ta sẽ xây dựng lại gói GNU Hello, nhưng lần này chúng ta sẽ so sánh công việc của chúng ta với gói hello-debhelper của Ubuntu. Một lần nữa, tạo một thư mục nơi bạn sẽ làm việc:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

Sau đó, tải gói nguồn Ubuntu:

apt-get nguồn hello-debhelper cd ..

Giống như ví dụ trước, điều đầu tiên chúng ta cần làm là giải nén tarball gốc (ngược dòng).

tar -xzvf hello-2.1.1.tar.gz

Thay vì sao chép tarball ngược dòng sang hello_2.1.1.orig.tar.gz như chúng ta đã làm trong ví dụ trước, chúng ta sẽ để dh_make thực hiện công việc cho chúng ta. Điều duy nhất bạn phải làm là đổi tên thư mục nguồn để nó ở dạng - trong đó packagename là chữ thường. Trong trường hợp này, chỉ cần sửa đổi tarball tạo ra một thư mục nguồn được đặt tên chính xác để chúng ta có thể di chuyển vào nó:

cd hello-2.1.1

Để tạo ra "debianization" ban đầu của nguồn, chúng ta sẽ sử dụng dh_make .

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

dh_make sau đó sẽ hỏi bạn một loạt câu hỏi:

Loại gói: nhị phân đơn, nhiều nhị phân, thư viện, mô-đun hạt nhân hoặc cdbs? [s / m / l / k / b] s
Tên người bảo trì: Địa chỉ Email của Captain Packager: packager@coolness.com Ngày: Thứ năm, ngày 6 tháng 4 năm 2006 10:07:19 -0700 Tên gói: hello Phiên bản: 2.1.1 Giấy phép: trống Loại gói: Lần truy cập duy nhất để xác nhận: Nhập


[Chú ý]

Chỉ chạy dh_make -e một lần. Nếu bạn chạy nó lần nữa sau khi bạn làm điều đó lần đầu tiên, nó sẽ không hoạt động đúng. Nếu bạn muốn thay đổi nó hoặc mắc lỗi, hãy xóa thư mục nguồn và gỡ bỏ tarball ngược dòng. Sau đó, bạn có thể di chuyển vào thư mục nguồn và thử lại.

Chạy dh_make -e làm hai việc:

Chương trình Hello không phải là rất phức tạp, và như chúng ta đã thấy trong phần được gọi là "Bao bì từ đầu", bao bì nó không đòi hỏi nhiều hơn các tập tin cơ bản. Do đó, hãy loại bỏ các tệp .ex :

cd debian rm * .ex * .EX

Xin chào , bạn cũng sẽ không

* Giấy phép

* Chỉ mục Hướng dẫn đóng gói Ubuntu

cần README.Debian (tệp README cho các vấn đề Debian cụ thể, không phải là README của chương trình), dirs (được sử dụng bởi dh_installdirs để tạo các thư mục cần thiết), tài liệu (được sử dụng bởi dh_installdocs để cài đặt tài liệu chương trình), hoặc thông tin (được dh_installinfo sử dụng để cài đặt thông tin tập tin) vào thư mục debian . Để biết thêm thông tin về những tệp này, hãy xem phần có tên "dh_make example files".

Tại thời điểm này, bạn chỉ nên có các tệp changelog , compat , control , copyrightrules trong thư mục debian . Từ phần có tên "Bao bì từ đầu", tệp duy nhất mới là compat , là tệp chứa phiên bản debhelper (trong trường hợp này là 4) được sử dụng.

Bạn sẽ cần phải điều chỉnh các thay đổi một chút trong trường hợp này để phản ánh rằng gói này được đặt tên hello-debhelper chứ không chỉ là hello :

hello-debhelper (2.1.1-1) người lập bản đồ; khẩn cấp = thấp * Phát hành lần đầu - Captain Packager Thu, 6 Apr 2006 10:07:19 -0700

Bằng cách sử dụng debhelper , những thứ duy nhất chúng ta cần thay đổi trong control là tên (thay thế hello cho hello-debhelper ) và thêm debhelper (> = 4.0.0) vào trường Build-Depends cho gói nguồn. Gói Ubuntu cho hello-debhelper trông giống như:

Chúng tôi có thể sao chép các tập tin bản quyền và các kịch bản postinstprerm từ gói hello-debhelper của Ubuntu, vì chúng không thay đổi kể từ phần có tên "Packaging From Scratch". Chúng tôi cũng sẽ sao chép các tập tin quy tắc để chúng tôi có thể kiểm tra nó.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

Tập tin cuối cùng chúng ta cần xem xét là các quy tắc , nơi mà sức mạnh của các kịch bản debhelper có thể được nhìn thấy. Phiên bản quy tắc debhelper hơi nhỏ hơn (54 dòng so với 72 dòng trong phiên bản từ phần được gọi là "quy tắc").

Phiên bản debhelper trông giống như:

#! / usr / bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (chuỗi tìm kiếm noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean : dh_testdir dh_clean rm -f build - $ (MAKE) -i cài đặt distclean: tạo tiền tố dh_clean dh_installdirs $ (MAKE) = $ (CURDIR) / debian / $ (gói) / usr \ mandir = $ (CURDIR) / debian / $ (gói) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (gói) / usr / share / info \ install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Không có tệp độc lập về kiến ​​trúc nào được tải lên # được tạo bởi gói này. Nếu có thì chúng sẽ được làm ở đây. nhị phân-arch: cài đặt dh_testdir -a dh_testroot -a dh_installdocs -a TIN TỨC dh_installchangelogs -a Thay đổiĐăng nhập dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -một nhị phân: nhị phân-nhị phân-nhị phân- arch .PHONY: nhị phân nhị phân-nhị phân-indep sạch checkroot

Lưu ý rằng các nhiệm vụ như kiểm tra nếu bạn ở đúng thư mục ( dh_testdir ), đảm bảo rằng bạn đang xây dựng gói có đặc quyền root ( dh_testroot ), cài đặt tài liệu ( dh_installdocsdh_installchangelogs ) và dọn dẹp sau khi xây dựng ( dh_clean ) được xử lý tự động . Nhiều gói phức tạp hơn nhiều so với hellocác tập tin quy tắc không lớn hơn bởi vì các kịch bản debhelper xử lý hầu hết các nhiệm vụ. Để biết danh sách đầy đủ các tập lệnh debhelper , vui lòng xem phần "Danh sách các kịch bản debhelper ". Họ cũng được ghi lại trong các trang của họ. Nó là một bài tập hữu ích để đọc trang người đàn ông (chúng được viết tốt và không dài) cho mỗi tập lệnh trợ giúp được sử dụng trong tệp quy tắc ở trên.