2012-06-12 9 views
5

prosty pakiet Debian będzie utworzony w następujących etapach, następujące kroki byłyby poradnik dla początkującychjak to katalog w pakiecie debuild

rozważyć Mam plik powiedzmy test.sh które po prostu wydrukować testu na ekranie:

Co powinno być wyjściem po zainstalowaniu pakietu debian? A) Chcę umieścić powyższy plik, który nazwałem jako test.sh w/home/bla/Desktop/po zainstalowaniu pakietu przy użyciu "dpkg -i test-1.0.deb"

Aby osiągnąć powyższy proces postępować zgodnie z poniżej wymienionych czynności, gdyż

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 

dodać plik kontrolny z następujących zawartości

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 

pakiet jest gotowy przyjść poza folderze testowym i wprowadź dpkg --build Test-1,0/

Twój pakiet jest gotowy i możesz go zainstalować za pomocą dpkg -i test-1.0.deb

Jeśli chcę zrobić ten sam proces z dh_make i debuild, nie mogłem dodać struktury katalogów, w której chciałem test.sh być umieszczone po instalacji

kroki, które ja stosować:

  1. mkdir test-1.0
  2. skopiować strukturę katalogów jak wyżej

    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

nie mater co mój test.sh wcale nie jest zawarte w pakiecie potem, dawca wiedzieć z tego powodu zrozumiałem w Debianie podręcznik

każdy może to zrobić, proszę pozwól mi jak najszybciej ..Chcę tylko wiedzieć, w jaki sposób można dołączyć pliki w pakiecie podczas budowania pakietów używając debuild/dpkg-buildpackage jak mam zrobić w pierwszym procesie, który jest bardzo prosty przykład

+0

Nie zawierają katalogi domowe użytkownik w samym pakiecie (jest to okropny pomysł), umieść plik wykonywalny w standardowej lokalizacji (na przykład. '/ usr/bin') i utwórz do niego link (lub lepiej utwórz plik .desktop) za pomocą skryptu' postinst'. –

+0

który był przykład, muszę utworzyć pakiet, który umieszcza wszystkie pliki w odpowiednich folderach, takich jak test1 w/tmp/test, test2 w/usr/test2 –

Odpowiedz

11

AQ/D wykorzystując dh *i dpkg-buildpackage:

1) Pepare katalog roboczy i plik testowy (mamy zamiar pakować "foo" skrypt, który powinien być zainstalowany na "/ any/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) tworzyć proste Makefile który zajmie instalacja:

binary: 
    # we are not going to build anything 

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

3) Generowanie pakietów szkielet:

dh_make -i --createorig 

3a) Opcja Y regulacji debian pliku kontrolnego

4) zbudować pakiet:

dpkg-buildpackage -A -uc 

5) testowych przygotowanych zawartość opakowania:

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 

Edycja: Przykład bez użycia Makefile (jeśli nie zamierzamy build cokolwiek):

1) tworzyć dane testowe:

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

2) Tworzenie pakietów szkielet:

dh_make -i --createorig 

3) Utwórz debian/test.zainstalować plik o następującej treści:

contents/ /usr/share/mycontents 

4) Budowanie pakietu:

dpkg-buildpackage -A -uc 

5) Zbadać wbudowany pakiet:

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

dziękuję bardzo, co jeśli mam setki plików mogę zawrzeć Spis treści, a następnie skopiuj zawartość w skryptach postinst. Nie ma innej alternatywy niż Makefile –

+0

@ user1430462: dodaj 'cp yourdir/* $ (DESTDIR) /' do Makefile lub zobacz edycję pliku Makefile za darmo :) –

+0

jestem trochę dziecinna mogę użyć dowolnego innego pliku niż makefile, jakoś boję się makefile mam dokładnie 1145 plików do skopiowania, myślałem, aby skopiować zawartość w folderze tmp później skopiować wszystkie pliki w odpowiednich pozycjach za pomocą skryptów postinst, ale martwię się, co jeśli potrzebuję zaktualizować pliki, muszę wziąć pod uwagę kilka rzeczy, w których tracę domyślne uaktualnienie pakietu debian, w każdym razie dzięki za świetny tutorial –