Làm thế nào để tạo một tệp DEB bằng tay?


46

Tôi muốn tạo một tệp DEB bằng tay. Tôi chỉ muốn cung cấp một thư mục chứa dữ liệu để cài đặt và tập lệnh sẽ được thực thi sau khi cài đặt.

Điều này có thể không?


Câu trả lời không hay lắm bạn chọn?
Gigamess

@David, thực sự tôi đã tạo ra nó bằng "dpkg-deb", nó dễ dàng hơn nhiều, đó là lý do tại sao tôi chọn Gilles, bằng cách liệt kê các tệp trong thư mục gói cho tôi một cái nhìn rõ ràng về tệp để đặt ở đó. Vì vậy, tôi nghĩ rằng câu trả lời của anh ấy tốt hơn ..
daisy

Tôi cũng đã liệt kê tất cả các tập tin trong gói.
Gigamess

11
@David Ý tôi là, cho rằng câu trả lời của anh ấy là phái sinh là một chuyện, nhưng "không phải là một câu trả lời hay"? Câu trả lời của Gilles là tuyệt vời; không thành vấn đề nếu câu trả lời của bạn là đầu tiên, câu trả lời của anh ấy hoàn thiện hơn nhiều. Và không có gì sai khi lấy một câu trả lời hiện có và mở rộng về nó; đó là một điều tốt
Michael Mrozek

Câu trả lời:


57

Làm một gói nguồn

Đề nghị của tôi là làm cho một gói nguồn. Cài đặt bản dựng, thiết yếu , gỡ lỗi , dh-make . Thay đổi thư mục chứa các tệp bạn muốn cài đặt (tên thư mục phải có dạng $PACKAGE-$VERSION, ví dụ như myapp-4.2-1lần thử đầu tiên của bạn trong việc đóng gói Myapp V4.2) và chạy dh_make --createorig. Trả lời các câu hỏi. Debhelper sẽ tạo cơ sở hạ tầng cơ bản cần thiết để xây dựng gói bằng cách tạo các tệp trong thư mục con được gọi debian, cả một số tệp và mẫu bắt buộc cho các tệp tùy chọn. Bạn có thể cần sửa đổi một số tệp này:

  • Chỉnh sửa debian/rulesđể xây dựng những gì cần xây dựng và cài đặt các tệp ở đúng nơi. Nếu bạn chỉ cần sao chép một số tệp và không biên dịch nội dung, chỉ cần chỉnh sửa tệp debian/installđể chỉ định tệp nào cần được cài đặt ở đâu.
  • Chỉnh sửa debian/copyrightđể thêm thông tin giấy phép về gói của bạn và thông tin về nơi nhận phiên bản mới nhất (nếu có liên quan).
  • Chỉnh sửa debian/changelogđể xóa tham chiếu đến ITP (chỉ liên quan nếu bạn đang làm việc cho dự án Debian). Đổi tên debian/postinst.exđể debian/postinstvà thêm lệnh sau khi cài đặt bạn ở đó. Nếu sau này bạn cập nhật gói của mình, hãy chạy debchange -iđể thêm mục nhập thay đổi hoặc chỉnh sửa tệp trong Emacs ( đã cài đặt dpkg-dev-el ).

Chạy dpkg-buildpackage -rfakeroot -us -ucđể xây dựng .debgói (loại bỏ -us -ucnếu bạn muốn ký gói bằng khóa PGP của bạn).

Tạo gói nhị phân trực tiếp

Nếu bạn quyết định tạo gói nhị phân trực tiếp mà không xây dựng gói từ gói nguồn, điều này không thực sự dễ dàng hơn vì không có nhiều công cụ để tạo thuận lợi cho quá trình, bạn sẽ cần một số quen thuộc cơ bản với định dạng của gói gỡ lỗi. Nó được mô tả trong Hướng dẫn chính sách Debian , đặc biệt là ch. 3 (định dạng của gói nhị phân) , ch. 5 (tập tin kiểm soát) , ch. 6 (tập lệnh cài đặt)phụ lục B (thao tác gói nhị phân) .

Bạn đảm bảo rằng gói của bạn cài đặt các tệp dự kiến /usr/share/doc/copyright(chứa giấy phép của nội dung gói, cũng như nơi tìm phiên bản mới nhất của gói) và /usr/share/doc/changelog.Debian.gz(chứa thay đổi của gói gỡ lỗi). Bạn không cần những thứ này nếu bạn chỉ sử dụng gói trong nhà, nhưng tốt hơn là nên có chúng.

Trên Debian và các dẫn xuất

Nếu bạn có sẵn các công cụ Debian, hãy sử dụng dpkg-debđể xây dựng gói. Trong thư mục chứa dữ liệu cần cài đặt, hãy thêm một thư mục được gọi DEBIANở cấp cao nhất, chứa các tệp điều khiển và tập lệnh bảo trì.

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42

Con đường gian nan

Nếu bạn không có các công cụ Debian, hãy xây dựng một kho lưu trữ các tệp bạn muốn gói data.tar.gz, một kho lưu trữ riêng biệt của các tệp điều khiển được gọi control.tar.gz(không có thư mục con) và tệp văn bản được gọi debian-binaryvà chứa văn bản 2.0.

cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz

Bạn cần ít nhất một tập tin điều khiển với các lĩnh vực Package, Maintainer, Priority, Architecture, Installed-Size, Version, và bất kỳ tuyên bố phụ thuộc cần thiết.

Kịch bản được thực hiện sau khi cài đặt được gọi postinst. Hãy chắc chắn để làm cho nó thực thi. Nó đi cùng control.

Chuyển đổi gói nhị phân từ một định dạng khác

Nếu bạn đã có gói nhị phân từ một bản phân phối khác, bạn có thể sử dụng người ngoài hành tinh để chuyển đổi nó.


3
IMO nó là một bản sao từ anwser của tôi? Bạn nghĩ sao?
Gigamess

1
Câu trả lời giả định OP biết cách sử dụng emacs. Là emacs thực sự cần thiết ở đây? Để chỉnh sửa thay đổi, tôi nghĩ người ta có thể sử dụng dch -i.
Faheem Mitha

Điều gì đang arlàm tarkhông phải là?
mmstick

@mmstick Đó là một định dạng khác nhau. Tôi không biết tại sao các nhà thiết kế định dạng deb chọn sử dụng ar ở đây.
Gilles 'SO- ngừng trở nên xấu xa'

1
Nếu bạn muốn thay đổi tên và email dh_make --createorigsử dụng, bạn cần phải export DEBEMAIL="me@example.com"export DEBFULLNAME="Firstname Lastname"trước.
Ryan

10

Trước hết, bạn cần tạo một thư mục xây dựng và lưu trữ các tệp của mình: tar czvf data.tar.gz files

Sau đó, trong thư mục bản dựng, bạn phải tạo một tệp điều khiển với một số thông tin mong muốn:

 Package: xxxxxx
 Version: 0.0.1
 Section: user/hidden 
 Priority: optional
 Architecture: armel
 Installed-Size: `du -ks usr|cut -f 1`
 Maintainer: Your Name <xxx@xxx.xx>
 Description: This is optional, but creates warnings if left out

Sau đó, bạn có thể thêm các tập lệnh shell preinst, postint, prerm và postrm độc lập để kiểm soát cài đặt trước và sau khi đăng và loại bỏ hành vi của tệp .deb và sau đó bạn có thể tạo tệp lưu trữ điều khiển bằng tar: tar czvf control.tar.gz control preinst postinst prerm postrm

Sau đó, bạn cần một tệp nhị phân debian : echo 2.0 > debian-binary. Trong thư mục bản dựng của bạn, bạn sẽ có các tệp này: debian-binary control.tar.gzdata.tar.gz.

Cuối cùng, bạn cần argói để tạo tệp .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz


1
Về ar -r xxx.deb debian-binary control.tar.gz data.tar.gznó có thể có giá trị để nhấn mạnh thứ tự là quan trọng: kiểm soát phải đến trước dữ liệu.
Hibou57

@Bytemain, câu trả lời được bình chọn hàng đầu thực sự trông một phần dựa trên văn bản của bạn, nhưng nó bổ sung chi tiết cho nó và nó dễ đọc hơn. trình tự chúng ta có thể sao chép / dán làm cho nó đặc biệt đẹp trai hơn.
mariotomo

3

Tôi làm rất nhiều gói, và để làm một gói đầy đủ không phải là chuyện nhỏ. Trên một lưu ý tích cực, các tập tin và tập lệnh là công việc ít hơn nhiều. Bạn có thể tạo một gói như vậy, rất đơn giản, với một công cụ được gọi là debreate .

Debreate là một GUI thực sự đơn giản, chỉ để tạo các gói DEB đơn giản. Bạn chỉ có thể chỉ định tệp nào, nơi chúng đi và nếu / cái gì sẽ thực thi khi đăng / cài đặt trước / gỡ cài đặt. Tôi đã từng làm tất cả các gói của mình theo cách tiêu chuẩn, nhưng sau khi tôi bắt đầu sử dụng công cụ này, tôi sẽ chỉ quay lại khi cần thiết.



1

Chạy vào đây với Zimbra 7 trên Debian bằng các gói Ubuntu của nó. .

mkdir new
for i in *.deb
 do echo `date`: working on $i
 ar x $i
 cd control
 rm * 2> /dev/null
 tar -xzpvf ../control.tar.gz
 tr "_" "-" < control > control2
 mv -v control2 control
 tar -czpvf ../control.tar.gz .
 cd ..
 ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control

Tất cả các tệp .deb mới của bạn sẽ nằm trong new/.

Lưu ý : đây là về vắt - dpkg trên wheezy có - lực lượng-phiên bản xấu bây giờ.


1

Để tạo nhanh các gói bạn có thể sử dụng chương trình cài đặt. Nó thực hiện một chương trình, xem các thay đổi - và tạo gói deb hoặc vòng / phút của chương trình.


Điều này có vẻ như là một tùy chọn tuyệt vời để theo dõi các gói bạn phải cài đặt từ nguồn. Bạn có thể cung cấp thêm chi tiết? Ví dụ, trong quá trình cài đặt, bạn có thể thay đổi liên kết tượng trưng, ​​xóa tệp, chỉnh sửa tệp cấu hình, thêm trình nền, v.v ... đến mức nào người tham gia kiểm tra theo dõi cài đặt và hoàn tác các thay đổi này? Bạn có thể dễ dàng sửa đổi đầu ra của nó để thêm các kịch bản prerm và postrm?
AatG

hãy xem wiki.debian.org/CheckInstall Nếu bạn muốn thay đổi mọi thứ trong khi cài đặt - cách dễ nhất là sửa đổi Makefile để thay đổi phần cài đặt. prerm / postrm - tôi đã không tìm cách sửa đổi nó. Nó chỉ dành cho các chương trình nhỏ để cho phép gỡ cài đặt đơn giản.
xác định

-4
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
  libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.