2013-03-18 21 views
7

Naprawdę utknąłem w tym drobnym (jestem tego pewien) problem, więc każda pomoc będzie bardzo ceniona. Stworzyłem standardowy pakiet ubuntu z dh_make. Celem tego pakietu jest utworzenie pakietu, który skonfiguruje wszystkie pakiety związane z ldap, które system potrzebuje, włączając jego konfigurację. Jednym z kroków, które próbuję wykonać, jest skopiowanie pliku /etc/ldap.conf podczas tworzenia kopii zapasowej istniejącego pliku. Jak mam to zrobic? Próbowałem utworzyć skrypt postinst, który wygląda zasadniczo tak, jak poniżej, ale nie jestem pewien, w jaki sposób pakiet przechowuje pliki i pojawia się komunikat o braku pliku etc/ldap.conf. Jaki jest najlepszy sposób na zrobienie tego? Oto mój skrypt postinst:Tworzenie pakietów Debiana - Jak instalować pliki konfiguracyjne?

#!/bin/bash -xv

install -v -b etc/ldap.conf /etc/ldap.conf > /tmp/tst 2>&1 

Oto moja konstrukcja szkieletu:

 
    [email protected]:~/navldapubuntu-0.1/debian# tree 


    ├── changelog 
    ├── compat 
    ├── control 
    ├── copyright 
    ├── docs 
    ├── etc 
    └── ldap.conf 
    ├── install 
    ├── postinst 
    ├── README.Debian 
    ├── README.source 
    ├── rules 
    ├── source 
    └── format 
    ├── navldapubuntu 
    └── etc 
    ├── navldapubuntu.debhelper.log 
    ├── navldapubuntu.dirs 
    └── navldapubuntu.doc-base.EX 

Oto kilka dodatkowych informacji pakietu stworzyłem.

 
    dpkg --contents tnoldapubuntu_0.1-1_all.deb (truncated output) 
    ./usr/ 
    ./usr/share/ 
    ./usr/share/doc
./usr/share/doc/navldapubuntu/ ./usr/share/doc/navldapubuntu/copyright ./usr/share/doc/navldapubuntu/README.Debian ./usr/share/doc/navldapubuntu/changelog.Debian.gz ./etc/ldap.conf

+0

kopia zapasowa w postinst? może w preinst? plik check istnieje: 'if [-f /etc/ldap.conf] to cp /etc/ldap.conf /etc/ldap.conf.dist fi', prawda? – mkjasinski

+0

Problem nie leży w logice cp. Problem polega na tym, że źródło /etc/ldap.conf nie istnieje. Jak dołączyć to do pakietu, aby mój skrypt po instalacji zobaczył plik /etc/ldap.conf? Pojawił się błąd w moim skrypcie teraz, który stwierdza coś takiego: install: can not stat '/navldap-0.1/debian/etc/ldap.conf ': Nie ma takiego pliku lub dyrektor – user2175757

+0

dziwnie, nie masz pliku w'/etcetera i zgłaszanie błędu, którego nie masz w innym katalogu? skrypt nie może uruchomić 'stat' na pliku w twoim pakiecie, z którego katalogu uruchamiasz instalację? – mkjasinski

Odpowiedz

3

Musisz utworzyć plik "conffiles" w katalogu DEBIAN, obok pliku "control" i zadeklarować w nim /etc/ldap.conf. Tak więc ten plik zostanie automatycznie uznany za plik konfiguracyjny, a zmiany w nim spowodują pojawienie się "nowego pliku konfiguracyjnego, który chcesz nadpisać, yadda yadda".

+0

Dziękuję bardzo. Otrzymuję teraz błąd podczas budowania po utworzeniu pliku conffiles z /etc/ldap.conf w nim. Czy można przekazać flagę, aby utworzyć plik kopii zapasowej pliku /etc/ldap.conf? : dpkg-deb --build debian/navldapubuntu .. dpkg-deb: błąd: conffile '/etc/ldap.conf 'nie pojawia się w pakiecie dh_builddeb: dpkg-deb --build debian/tnoldapubuntu .. zwrócony kod zakończenia 2 – user2175757

+0

W rzeczywistości, plik conffiles wygląda tak, jakby tylko zachowywał plik. Czekam na pakiet zawierający wersję pliku ldap.conf instalowaną podczas instalacji apt-get. Na przykład: (1) Utwórz pakiet z dostosowanym plikiem ldap.conf (2) apt-get install "nazwa pakietu" i ten dostosowany plik ldap.conf również zostanie zainstalowany. Mam nadzieję, że to ma sens? – user2175757

+0

To ma sens, więc powinieneś w pakiecie umieścić plik /etc/ldap.conf. Co się stanie, jeśli to zrobisz? – wazoox

7

Jest to specjalne narzędzie, które przeznaczone do tworzenia pakietów konfiguracyjnych: http://debathena.mit.edu/config-packages

Oto prosty szablon, który może być pomocny dla szybkiego startu.

Lista plików

  • szablonu (katalog)
  • template/debian (katalog)
  • template/debian/control
  • template/debian/changelog
  • template/debian/displace
  • Szablon/debian/rules
  • Szablon/debian/Postinst
  • template/debian/zainstalować
  • template/debian/docs
  • template/debian/compat
  • szablon/README
  • template/BUILD
  • szablon/pliki (katalog)
  • template/files/etc/ldap.conf.mycompanyname

Content

template/debian/control:

Source: PACKAGE_NAME 
Section: morpho/misc 
Priority: optional 
Maintainer: MAINTAINER 
Build-Depends: debhelper, config-package-dev (>= 5.0~) 

Package: PACKAGE_NAME 
Architecture: all 
Depends: ${misc:Depends}, DEPENDENCY [, DEPENDENCY ...] 
Provides: ${diverted-files} 
Conflicts: ${diverted-files} 
Description: PACKAGE_DESCRIPTION_SHORT 
PACKAGE_DESCRIPTION_LONG. 

template/debian/wypierać

/etc/ldap/ldap.conf.mycompanyname 

template/debian/zainstalować

files/*/

template/debian/postinst

#!/bin/sh 
set -e 
#DEBHELPER# 

POSTINST_SCRIPT 

template/debian/rules

#!/usr/bin/make -f 

# Exclude *.svn* from building 
# you probably don't need this if don't use SVN 
export DH_ALWAYS_EXCLUDE=.svn 

# Core (check http://debathena.mit.edu/config-packages for more information) 
%: 
     dh [email protected] --with=config-package 

# Prevent dh_installdeb of treating files in /etc as configuration files 
# you need this if need configuration files been always rewritten 
# even if changed 
override_dh_installdeb: 
     dh_installdeb 
     rm debian/*/DEBIAN/conffiles 

template/debian/docs

README 
BUILD 

I wreszcie można zbudować ten pakiet za pomocą następującego polecenia:

dpkg-buildpackage -us -uc -I.svn 
+0

Dzięki za dostarczenie pełnego przykładu, właśnie tego szukałem! – Magnus

+0

Zauważyłem, że sufiks pliku "nazwa_moja_mooby" musi być prefiksem nazwy pakietu (np. "Mojafirma_nazwa-ldap-config") z 'config-package-dev' 5.1.2 – Lucas

Powiązane problemy