2013-03-18 11 views
7

Ich bin wirklich auf dieses kleine (ich bin mir sicher) Problem fest, so dass jede Hilfe sehr geschätzt werden würde. Ich habe ein Standard-Ubuntu-Paket mit dh_make erstellt. Der Zweck dieses Pakets besteht darin, ein Paket zu erstellen, das alle ldap-bezogenen Pakete aufbaut, die ein System benötigt, einschließlich seiner Konfiguration. Einer der Schritte, die ich versuche, ist, eine Datei /etc/ldap.conf zu kopieren, während eine Sicherungskopie der vorhandenen Datei erstellt wird. Wie mache ich das? Ich habe versucht, ein Postinst-Skript zu erstellen, das im Wesentlichen wie das Folgende aussieht, aber ich bin nicht klar, wie das Paket die Dateien speichert, und ich bekomme einen Fehler, der die fehlende Datei etc/ldap.conf sagt. Was ist der beste Weg, dies zu tun? Hier ist mein postinst Skript:Debian-Paket-Erstellung - Wie installiert man Konfigurationsdateien?

#!/bin/bash -xv

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

Hier ist meine Skelettstruktur:

 
    [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 

Hier einige zusätzliche Informationen des Pakets I erstellt.

 
    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

Sicherung in postinst? vielleicht in preinst? check file exists: 'if [-f /etc/ldap.conf] dann cp /etc/ldap.conf /etc/ldap.conf.dist fi', oder? – mkjasinski

+0

Das Problem liegt nicht in der Logik des CP. Das Problem ist, dass die Quelle /etc/ldap.conf nicht existiert. Wie schließe ich das in das Paket ein, damit mein postinstall-Skript die Datei /etc/ldap.conf sehen kann? Ich erhalte einen Fehler in meinem Skript, in dem etwas wie folgt steht: install: can not stat '/navldap-0.1/debian/etc/ldap.conf ': Keine solche Datei oder Director – user2175757

+0

seltsam, Sie haben keine Datei in'/usw. und einen Fehler, dass Sie es nicht in einem anderen Verzeichnis haben? Skript kann 'stat' in der Datei in Ihrem Paket nicht ausführen, von welchem ​​Verzeichnis führen Sie aus? – mkjasinski

Antwort

3

Sie müssen eine "conffiles" -Datei im DEBIAN-Verzeichnis neben der "control" -Datei erstellen und /etc/ldap.conf darin deklarieren. So wird diese Datei automatisch als Konfigurationsdatei betrachtet, und Änderungen daran werden eine "neue Konfigurationsdatei, möchten Sie überschreiben, Yadda Yadda".

+0

Vielen Dank. Ich erhalte jetzt einen Fehler beim Erstellen nach dem Erstellen der confiles-Datei mit /etc/ldap.conf darin. Kann auch ein Flag übergeben werden, um eine Backup-Datei von /etc/ldap.conf zu erstellen? : dpkg-deb --build debian/navldapubuntu .. dpkg-deb: Fehler: conffile '/etc/ldap.conf 'erscheint nicht im Paket dh_builddeb: dpkg-deb --build debian/tnoldapubuntu .. zurückgegebenen Exit-Code 2 – user2175757

+0

Eigentlich sieht die Datei conffiles so aus, als würde nur die Datei beibehalten. Ich suche, dass das Paket eine Version der ldap.conf-Datei enthält, die installiert wird, wenn ich die apt-get-Installation mache. Zum Beispiel: (1) Build-Paket mit angepasster ldap.conf-Datei (2) apt-get install "Paketname" und diese angepasste ldap.conf wird ebenfalls installiert. Hoffe das macht Sinn? – user2175757

+0

Macht Sinn, also sollten Sie /etc/ldap.conf in Ihr Paket aufnehmen. Was passiert wenn du es tust? – wazoox

7

Es gibt ein spezielles Tool, das für die Erstellung von Konfigurationspaketen entwickelt: http://debathena.mit.edu/config-packages

Hier ist eine einfache Vorlage, die für einen schnellen Start hilfreich sein könnte.

Liste der Dateien

  • Vorlage (Verzeichnis)
  • template/debian (Verzeichnis)
  • template/debian/control
  • template/debian/changelog
  • template/debian/displace
  • Vorlage/debian/Regeln
  • Vorlage/debian/postinst
  • template/debian/installieren
  • template/debian/docs
  • template/debian/compat
  • template/README
  • template/BUILD
  • template/Dateien (Verzeichnis)
  • template/Dateien/etc/ldap.conf.MyCompanyName

Inhalt

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/

/etc/ldap/ldap.conf.mycompanyname 

template/debian verdrängen/install

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 

Und schließlich können Sie dieses Paket mit dem folgenden Befehl erstellen:

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

Danke für die Bereitstellung eines vollständigen Beispiels, das ist genau das, was ich gesucht habe! – Magnus

+0

Ich habe festgestellt, dass das verschobene Dateisuffix "meinFirmenname" das Präfix des Paketnamens sein muss (z. B. "meinFirmenname-ldap-config") mit 'config-package-dev' 5.1.2 – Lucas

Verwandte Themen