Problème dans slapd au moment de la mise à niveau

Salut à tous !

j’ai récemment mis à niveau mon serveur depuis Lenny vers Squeeze. Globalement, la procédure s’est bien passée, à part ce message d’erreur :

Installation de la nouvelle version du fichier de configuration /etc/init.d/slapd ...
  Backing up /etc/ldap/slapd.conf in /var/backups/slapd-2.4.11-1+lenny2... done.
  Moving old database directories to /var/backups:
  - directory dc=local... done.
  Loading from /var/backups/slapd-2.4.11-1+lenny2: 
  - directory dc=local... done.
  - chowning database directory (openldap:openldap)... done
  Migrating slapd.conf to slapd.d configuration style... done.
Starting OpenLDAP: slapd failed!
invoke-rc.d: initscript slapd, action "start" failed.
dpkg : erreur de traitement de slapd (--configure) :
 le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1

J’ai tenté d’amener Aptitude à corriger le problème, mais ça n’a rien donné :

$ sudo aptitude safe-upgrade
Les paquets partiellement installés suivants seront configurés : 
  slapd 
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 0 o seront utilisés.
Paramétrage de slapd (2.4.23-7.2) ...
  Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.11-1+lenny2... done.
  Moving old database directories to /var/backups:

  Backup path /var/backups/dc=local-2.4.11-1+lenny2.ldapdb exists. Giving up...
dpkg : erreur de traitement de slapd (--configure) :
 le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1
configured to not write apport reports
                                      Des erreurs ont été rencontrées pendant l'exécution :
 slapd
E: Sub-process /usr/bin/dpkg returned an error code (1)
Échec de l'installation d'un paquet. Tentative de réparation : 
Paramétrage de slapd (2.4.23-7.2) ...
  Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.11-1+lenny2... done.
  Moving old database directories to /var/backups:

  Backup path /var/backups/dc=local-2.4.11-1+lenny2.ldapdb exists. Giving up...
dpkg : erreur de traitement de slapd (--configure) :
 le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1
Des erreurs ont été rencontrées pendant l'exécution :
 slapd

Malheureusement, je n’ai aucune expérience avec Slapd, c’est aussi une des raisons pour lesquelles j’ai opté pour OBM (partant du principe que les choses étaient autant que possible automatisées et bien faites). Je dois encore farfouiller un peu le web, mais si vous avez une idée de point de départ, je suis preneur.

À bientôt.

Le Farfadet Spatial

Salut,
Apparament, le transfert de config est bon.
Ce que j’entend par “transfert” c’est le chargement de ton config dans /etc/ldap/slapd.d
Car a partir de Squeeze, le /etc/ldap/slapd.conf est remplacé par /etc/ldap/slapd.d
Néanmoins, tu peut tester ta config avec:

slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d

A ce que je vois, le problème est le lancement de slapd.
Par défaut, la sortie des logs d’OpenLDAP se fait dans /var/log/syslog.
Je te conseille de changer de fichier log
voir: aternatik.org/articles-et-ressou … s-openLDAP

Puis donne-nous le contenu de ton nouveau fichier log d’OpenLDAP

a+

Salut à tous !

$ sudo slaptest -f /etc/ldap/slapd.conf.orig -F /etc/ldap/slapd.d
config file testing succeeded

Cette page demande de modifier « /etc/ldap/slapd.conf », j’en déduis qu’il faut que je modifie « /etc/ldap/slapd.d ». Sauf que ce dernier est un répertoire :

$ ls /etc/ldap/slapd.d/
cn=config  cn=config.ldif

« cn=config » étant un sous-répertoire :

$ sudo ls /etc/ldap/slapd.d/cn\=config/
cn=module{0}.ldif  olcDatabase={0}config.ldif  olcDatabase={-1}frontend.ldif
cn=schema	   olcDatabase={1}bdb	       olcDatabase={1}hdb.ldif
cn=schema.ldif	   olcDatabase={1}bdb.ldif

J’hésite un peu. J’imagine qu’il faut modifier « /etc/ldap/slapd.d/cn=config.ldif ». Est-ce qu’il y a des variations dans la syntaxe de ce fichier par rapport à « /etc/ldap/slapd.conf » ?

À bientôt.

Le Farfadet Spatial

Salut!

c’est ok!

:115 Désôlé, j’avais oublié qu’on était sous Squeeze! :confused:

Il faut voir ceci:
my.opera.com/arand263/blog/2011/ … s-openldap

je l’ai spécialement publié pour toi. C’est pour ça qu’il n’apparait pas encore sur les aures blogs

Maintenant, donne-moi le contenu de ton /var/log/slapd.log

Salut à tous !

Hé bien merci.

Une fois le changement de configuration effectué :

$ sudo /etc/init.d/rsyslog restart
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.
$ sudo /etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd failed!
$ sudo tail -f /var/log/slapd.log 
Aug 24 21:36:03 hypochrone slapd[14701]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
Aug 24 21:36:03 hypochrone slapd[14701]: /etc/ldap/slapd.d : line 1: missing arg(s) in "limits <pattern> <limits>" line.
Aug 24 21:36:03 hypochrone slapd[14701]: config error processing olcDatabase={1}bdb,cn=config: <olcLimits> handler exited with 1
Aug 24 21:36:03 hypochrone slapd[14701]: slapd stopped.
Aug 24 21:36:03 hypochrone slapd[14701]: connections_destroy: nothing to destroy.

Comme visiblement il y a un problème dans « olcDatabase={1}bdb » :

$ sudo ls /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb
olcOverlay={0}glue.ldif

Et :

$ sudo cat /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb/olcOverlay\=\{0\}glue.ldif
dn: olcOverlay={0}glue
objectClass: olcOverlayConfig
olcOverlay: {0}glue
structuralObjectClass: olcOverlayConfig
entryUUID: f48b6f4c-6097-1030-8a35-4d5c2cf84da6
creatorsName: cn=config
createTimestamp: 20110821232051Z
entryCSN: 20110821232051.619248Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110821232051Z

Du coup, je suis incapable de faire le lien avec le message d’erreur. Par ailleurs, je n’ai pu trouver nul par de fichier « olcOverlay={0}glue », je ne sais pas si c’est anormal.

À bientôt.

Le Farfadet Spatial

Salut!
Donne moi-le contenu de ton /etc/ldap/slapd.conf
J’ai une chose en tête:

moduleload back_hdb backend hdb database hdb
Peut-être que pour le tien à la place de hdb c’est bdb

y-a_t_il une directive limits dans ton slapd.conf?

Mémorise les liens suivant car ils pourront surtout nous aider:
linuxtopia.org/online_books/ … tives.html
linuxtopia.org/online_books/ … ample.html
memolinux.info/doku.php?id= … 4:cnconfig
openldap.org/doc/admin24/sla … #cn=config

Salut à tous !

$ sudo cat /etc/ldap/slapd.conf.orig 
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        none

# Where the dynamically loaded modules are stored
modulepath	/usr/lib/ldap
moduleload	back_hdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for hdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend		hdb

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend		<other>

#######################################################################
# Specific Directives for database #1, of type hdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        hdb

# The base of your directory in database #1
suffix          "dc=le-bars,dc=net"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
# rootdn          "cn=admin,dc=le-bars,dc=net"

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

# Where to store the replica logs for database #1
# replogfile	/var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=le-bars,dc=net" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work 
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="cn=admin,dc=le-bars,dc=net" write
        by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=le-bars,dc=net" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be hdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix		"dc=debian,dc=org"

Comme tu peux le constater, dans le fichier c’est en effet « hdb » qui est mentionné. Est-ce que je dois modifier cela en « bdb » ? Le problème étant que tu m’as fait afficher le contenu de l’ancien fichier de configuration, avant que je passe à Squeeze. Je ne sais pas comment faire cette modification dans la nouvelle nomenclature.

Il y a une directive « sizelimit », mais pas de directive « limits ».

Merci. Je vais essayer de les lire aussi vite que je peux. Malheureusement, cela signifie pas tout de suite. J’espère avoir le temps après le week-end.

À bientôt.

Le Farfadet Spatial

Salut!
J’ai plusieurs idées en tête mais on va les tester les unes après les autres.

Fait d’abord une copie de ton /etc/ldap/slapd.d

# mv /etc/ldap/slapd.d /etc/ldap/slapd.d.old

Puis ton /var/lib/ldap

# cp -R /var/lib/ldap /var/lib/ldap.old

Crée un nouveau dossier slapd.d

# mkdir /etc/ldap/slapd.d

lance les commandes suivantes dans l’ordre:

# slaptest -f /etc/ldap/slapd.conf /etc/ldap/slapd.d
# chown -R openldap:openldap /etc/ldap/slapd.d
# slapd -u openldap -g openldap -F /etc/ldap/slapd.d

Redémarre le serveur LDAP:

# /etc/init.d/slapd restart

Lis le fichier log:

# tail -f /var/log/slapd.log

Je crois que maintenant tu comprends bien ce qui ce passe et ce que nous somme en train de faire.
Je pense que ça devrait marcher
A+

Salut à tous !

La sauvegarde s’est bien passée :

$ sudo mv /etc/ldap/slapd.d /etc/ldap/slapd.d.old
[sudo] password for yoann:
$ sudo cp -R /var/lib/ldap /var/lib/ldap.old
$ ls /etc/ldap/
ldap.conf       sasl2   slapd.conf.old   slapd.d.old
ldap.conf.orig  schema  slapd.conf.orig
$ ls /var/lib/
apt                  exim4            misc         python
aptitude             gconf            munin        python-support
apt-xapian-index     ghostscript      obm          slapd
aspell               initramfs-tools  obm-ca       snmp
cyrus                initscripts      obm-locator  sudo
dbus                 insserv          obm-tomcat   ucf
defoma               ldap             os-prober    update-rc.d
dhcp                 ldap.old         pam          urandom
dhcp3                libuuid          php5         usbutils
dictionaries-common  libxml-sax-perl  postfix      vim
dpkg                 logrotate        postgresql   x11
emacsen-common       mdadm            pycentral    xfonts

Ça se passe mal :

$ sudo slaptest -f /etc/ldap/slapd.conf.orig /etc/ldap/slapd.d
usage: slaptest [-v] [-d debuglevel] [-f configfile] [-F configdir] [-o <name>[=<value>]] [-n databasenumber] [-u]

À tout hasard, j’ai essayé ceci :

$ sudo slaptest -f /etc/ldap/slapd.conf.orig -F /etc/ldap/slapd.d
invalid config directory /etc/ldap/slapd.d, error 2
slaptest: bad configuration directory!

Ce n’est pas nécessairement surprenant, dans la mesure où le répertoire n’existe pas encore. Je suppose que l’objectif est de créer une nouvelle arborescence « /etc/ldap/slapd/ » à partir du fichier de configuration de la version précédente. Est-ce que cela se fait avec « slaptest » ?

À bientôt.

Le Farfadet Spatial

Salut à tous !

Oups !

Je viens de lancer une mise à jour du serveur. J’aurais dû le faire avant les manipulations que j’ai relaté dans mon message précédent, mais sur le coup je n’y ai pas pensé. Donc, après ce que j’ai relatées dans le message précédent, j’ai lancé ça :

$ sudo aptitude safe-upgrade
[sudo] password for yoann: 
Les paquets partiellement installés suivants seront configurés : 
  slapd 
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 0 o seront utilisés.
Paramétrage de slapd (2.4.23-7.2) ...
  Moving old database directory to /var/backups:
  - directory unknown... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.
Starting OpenLDAP: slapd.
                                              

Cela dit, le message est plutôt encourageant. Du coup, j’ai fait ça :

$ sudo slaptest -f /etc/ldap/slapd.conf.orig -F /etc/ldap/slapd.d
config file testing succeeded

Ce qui est également plutôt encourageant. Je me demande : est-ce que je dois faire plus pour m’assurer que tout est en ordre ?

À bientôt.

Le Farfadet Spatial

Salut!

En fait le fichier slapd.conf et le dossier slapd.d ne fait qu’un: la config de ldap.
Si on ne sait pas dans quel sous-repertoire et/ou quel fichier modifier dans slapd.d, on utilise la commande slaptest pour charger le contenu du fichier slapd.conf vers le repertoire slapd.d.

[sudo] password for yoann:
Les paquets partiellement installés suivants seront configurés :
slapd
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d’archives. Après dépaquetage, 0 o seront utilisés.
Paramétrage de slapd (2.4.23-7.2) …
Moving old database directory to /var/backups:

  • directory unknown… done.
    Creating initial configuration… done.
    Creating LDAP directory… done.
    Starting OpenLDAP: slapd.

[/code]
[/quote]
Normal que ça marche: t’avais oublier ceci:

Mais attention, toute ta base a été déplacée vers /var/backup

Tu dois seulement t’habituer à surveiller les logs.
C’est comme faire du vélo ou conduire une voiture :sunglasses: , tu doit le sentir si quelque chose ne va pas :think: :bulb:

Tout va bien maintenant???
A+

Salut à tous !

Très juste. Flûte : j’avais pourtant lu deux fois le message.

Ah, oui, j’ai aussi oublié de faire le copier/coller :

$ sudo tail -f /var/log/slapd.log
Aug 24 21:36:03 hypochrone slapd[14701]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
Aug 24 21:36:03 hypochrone slapd[14701]: /etc/ldap/slapd.d : line 1: missing arg(s) in "limits <pattern> <limits>" line.
Aug 24 21:36:03 hypochrone slapd[14701]: config error processing olcDatabase={1}bdb,cn=config: <olcLimits> handler exited with 1
Aug 24 21:36:03 hypochrone slapd[14701]: slapd stopped.
Aug 24 21:36:03 hypochrone slapd[14701]: connections_destroy: nothing to destroy.
Aug 26 21:26:36 hypochrone slapd[27860]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/p-u/openldap-2.4.23/debian/build/servers/slapd
Aug 26 21:26:36 hypochrone slapd[27861]: slapd starting

On voit les dernières erreurs du 24 août, puis deux lignes concernant le 26 août, qui indiquent simplement que Slapd a été lancé.

Bon, je pense qu’il n’y a rien d’autre de particulier à faire. Je passe donc le sujet en résolu. Merci d’avoir pris autant de temps pour m’aider.

À bientôt.

Le Farfadet Spatial

Ravis d’avoir pu t’aider
A la prochaine