Lệnh chính để thao tác các gói deb là dpkg-deb
.
Để giải nén gói, tạo một thư mục trống và chuyển sang gói đó, sau đó chạy dpkg-deb
để trích xuất thông tin điều khiển của nó và các tệp gói. Sử dụng dpkg-deb -b
để xây dựng lại gói.
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Xin lưu ý rằng trừ khi tập lệnh của bạn đang chạy bằng root, quyền và quyền sở hữu của tệp sẽ bị hỏng ở giai đoạn trích xuất. Một cách để tránh điều này là chạy tập lệnh của bạn theo fakeroot
. Lưu ý rằng bạn cần chạy toàn bộ chuỗi bên dưới fakeroot
, không phải từng chuỗi dpkg-deb
riêng lẻ, vì đó là fakeroot
quá trình giữ bộ nhớ cho phép của các tệp không thể được tạo như hiện tại.
fakeroot sh -c '
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
'
Thay vì lộn xộn với các quyền, bạn có thể giữ nguyên kho lưu trữ dữ liệu và chỉ sửa đổi kho lưu trữ kiểm soát. dpkg-deb
không cung cấp một cách để làm điều đó. May mắn thay, các gói deb có định dạng chuẩn: chúng là ar
tài liệu lưu trữ. Vì vậy, bạn có thể sử dụng ar
để trích xuất kho lưu trữ điều khiển, sửa đổi các tệp của nó và sử dụng ar
lại để thay thế kho lưu trữ điều khiển bằng một phiên bản mới.
mkdir tmp
cd tmp
ar p ../original.deb control.tar.gz | tar -xz
# edit postinst
cp ../original.deb ../fixed.deb
tar czf control.tar.gz *[!z]
ar r ../fixed.deb control.tar.gz
Bạn nên thêm một mục thay đổi và thay đổi số phiên bản nếu bạn sửa đổi bất cứ điều gì trong gói. Cơ sở hạ tầng để thao tác các gói Debian giả định rằng nếu hai gói có cùng tên và phiên bản thì chúng là cùng một gói. Thêm một hậu tố vào phần debian numvision ở cuối số phiên bản; để sắp xếp các lý do hậu tố nên bắt đầu bằng ~
, ví dụ như 1.2.3-4.1
trở thành 1.2.3-4.1~johnjumper1
.
Thay vì sử dụng các công cụ shell, bạn có thể sử dụng Emacs. Các dpkg-dev-el
gói (đó là thượng nguồn riêng của mình vì đây là một gói phần mềm Debian mẹ đẻ) chứa các chế độ chỉnh sửa .deb
tập tin và chỉnh sửa ghi thay đổi Debian. Emacs có thể được sử dụng tương tác hoặc kịch bản.
-e
tắc của fpm để thay đổi tệp điều khiển :fpm -e -s deb -t deb ../old.deb
. Điều này sẽ mở tập tin điều khiển trong trình soạn thảo của bạn.