2012-06-12 39 views
5

một gói Debian đơn giản sẽ được tạo ra trong các bước tiếp theo, các bước sau đây sẽ hướng dẫn cho người mới bắt đầulàm thế nào để bao gồm một thư mục trong gói debuild

xem xét tôi có một tập tin cho phép nói test.sh mà sẽ chỉ in thử nghiệm trên màn hình

#!/bin/sh 
set -e 
echo "this is sample debian package created " >&2 

Điều gì sẽ là đầu ra sau khi cài đặt gói debian? A) Tôi muốn đặt tệp ở trên mà tôi đặt tên là test.sh trong/home/bla/Desktop/sau khi cài đặt gói bằng "dpkg -i test-1.0.deb"

Để đạt được quy trình trên làm theo các bước dưới đây đề cập vì nó

mkdir test-1.0 
cd test-1.0 
#in order to place test.sh in /home/bla/Desktop, simply create the same directory structure in the test folder using this command 

mkdir -p home/bla/Desktop/ 
cp test.sh home/bla/Desktop/ 
cd .. 
cd .. 
cd .. 
mkdir DEBIAN 
cd DEBIAN 

thêm control file với nội dung sau

Package: test 
Version: 1.0 
Section: devel 
Priority: optional 
Architecture: all 
Essential: no 
Depends: bash 
Pre-Depends: no 
Recommends: no 
Maintainer: test <[email protected]> 
Replaces: no 
Provides: no 
Description: A sample testpackage in order to demonstrate how to create debian packages 

Package là sẵn sàng đến bên ngoài thư mục kiểm tra và nhập dpkg --build thử nghiệm 1.0/

gói của bạn đã sẵn sàng và bạn có thể cài đặt nó bằng cách sử dụng dpkg -i test-1.0.deb

Nếu tôi muốn thực hiện quy trình tương tự với dh_make và debuild, tôi không thể thêm cấu trúc thư mục mà tôi muốn test.sh được đặt sau khi cài đặt

bước mà tôi theo:

  1. mkdir test-1.0
  2. sao chép cấu trúc thư mục như trên

    cd test-1.0/ && mkdir -p home/bla/Desktop/ 
    cp test.sh home/bla/Desktop/ 
    
  3. dh_make -n -s -e [email protected]

  4. cd debian
  5. rm *.ex *.EX
  6. cd ..
  7. debuild -us -uc

không mater gì test.sh của tôi không phải là ở tất cả bao gồm trong gói sau đó, tôi donot biết lý do đó là những gì tôi đã hiểu từ hướng dẫn sử dụng debian

có thể bất kỳ ai biết để làm điều đó, xin vui lòng cho tôi càng sớm càng tốt .., Tôi chỉ muốn biết làm thế nào tôi có thể bao gồm các tập tin trong gói khi xây dựng gói debian sử dụng debuild/dpkg-buildpackage như tôi đã làm trong quá trình đầu tiên mà là rất đơn giản

+0

Không bao gồm danh bạ người dùng tại nhà trong gói chính nó (nó là một ý tưởng khủng khiếp), đặt thực thi của bạn ở vị trí tiêu chuẩn (ví dụ. '/ usr/bin') và tạo một liên kết tới nó (hoặc tạo tập tin .desktop tốt hơn) với tập lệnh' postinst' thay thế. –

+0

đó là một ví dụ, tôi cần tạo một gói để đặt tất cả các tệp vào các thư mục tương ứng như test1 trong/tmp/test, test2 trong/usr/test2 –

Trả lời

11

AQ/D ví dụ sử dụng dh *và dpkg-buildpackage:

1) Pepare thư mục làm việc và tập tin thử nghiệm (chúng ta sẽ gói "foo" kịch bản cần được cài đặt để "/ bất kỳ/dir"):

mkdir test-0.0.1 
cd test-0.0.1 
echo -e "#\!/bin/sh\necho \"hi, i'm foo\"" > foo 
chmod +x foo 

2) Tạo đơn giản Makefile mà sẽ xử lý cài đặt:

binary: 
    # we are not going to build anything 

install: 
    mkdir -p $(DESTDIR)/any/dir 
    cp foo $(DESTDIR)/any/dir 

3) Tạo gói xương:

dh_make -i --createorig 

3a) Optionall y điều chỉnh debian control file

4) Xây dựng trọn gói:

dpkg-buildpackage -A -uc 

5) thử nghiệm tạo ra nội dung gói:

dpkg-deb -c ../test_0.0.1-1_all.deb | grep any 

drwxr-xr-x root/root   0 2012-06-12 20:54 ./any/ 
drwxr-xr-x root/root   0 2012-06-12 20:54 ./any/dir/ 
-rwxr-xr-x root/root  30 2012-06-12 20:54 ./any/dir/foo 

Edit: Ví dụ mà không cần sử dụng Makefile (nếu bạn sẽ không build bất cứ điều gì):

1) Tạo dữ liệu thử nghiệm:

mkdir test-0.0.1 
cd test-0.0.1 
mkdir contents 
touch contents/a 
touch contents/b 

2) Tạo gói xương:

dh_make -i --createorig 

3) Tạo debian/test.cài đặt tập tin với nội dung sau:

contents/ /usr/share/mycontents 

4) xây dựng trọn gói:

dpkg-buildpackage -A -uc 

5) Kiểm tra gói xây dựng:

dpkg-deb -c ../test_0.0.1-1_all.deb | grep contents 

drwxr-xr-x root/root   0 2012-06-13 11:44 ./usr/share/mycontents/ 
drwxr-xr-x root/root   0 2012-06-13 11:38 ./usr/share/mycontents/contents/ 
-rw-r--r-- root/root   0 2012-06-13 11:37 ./usr/share/mycontents/contents/a 
-rw-r--r-- root/root   0 2012-06-13 11:38 ./usr/share/mycontents/contents/b 
+0

cảm ơn bạn rất nhiều, nếu tôi có hàng trăm tệp tôi có thể bao gồm một quả bóng tar của nội dung và sau đó sao chép nội dung trong các kịch bản sau khi đăng nhập .. thay thế khác ngoài Makefile –

+0

@ user1430462: thêm 'cp yourdir/* $ (DESTDIR) /' vào Makefile hoặc xem chỉnh sửa ví dụ Makefile miễn phí :) –

+0

Tôi hơi trẻ con có thể sử dụng bất kỳ tệp nào khác ngoài makefile, bằng cách nào đó tôi sợ makefile tôi có chính xác 1145 tệp được sao chép, tôi đã nghĩ sao chép nội dung trong thư mục tmp sau đó sao chép tất cả các tệp ở vị trí tương ứng bằng cách sử dụng tập lệnh postinst, nhưng đáng lo ngại những gì nếu tôi cần cập nhật các tập tin, tôi cần phải xem xét vài điều mà tôi mất mặc định updation của gói debian, bất kỳ cảm ơn như thế nào cho các hướng dẫn tuyệt vời –

Các vấn đề liên quan