J'ai récemment installé Samba et j'ai foiré le /etc/samba/smb.conf
fichier. Comment récupérer la configuration d'origine?
J'ai récemment installé Samba et j'ai foiré le /etc/samba/smb.conf
fichier. Comment récupérer la configuration d'origine?
Réponses:
Modifié :
Repéré cela sur une question de défaillance du serveur . Si dpkg-reconfigure foo
cela ne fonctionne pas, utilisez ceci:
Supprimez ou renommez le fichier de configuration rompu.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
Demandez des remplacements à dpkg
.
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
Cela indique dpkg
de remplacer les fichiers de configuration manquants par ceux du .deb. Vous pouvez trouver le package d'origine .deb dans /var/cache/apt/archives
, ou vous pouvez utiliser une nouvelle copie de la même version à partir des référentiels de votre distribution.
dpkg -i --force-confnew foo.deb
Cela indique dpkg
de remplacer les fichiers de configuration existants par ceux du fichier .deb. Vous pouvez trouver le package d'origine .deb dans /var/cache/apt/archives
, ou vous pouvez utiliser une nouvelle copie de la même version à partir des référentiels de votre distribution.
dpkg
à écraser le fichier de configuration que s'il aurait autrement demandé la permission de le faire . Cela ne permet pas de recréer comme par magie des fichiers de configuration intacts à partir du package.
--force-confmiss
plutôt. dans ce cas particulier, par exemple samba, je pense que --force-confnew
cela effectuerait l'écrasement, mais vous avez raison, cela dépend des détails des scripts de configuration du package.
Réponse courte: /usr/share/samba/smb.conf
c'est la version originale du fichier smb.conf.
Face à cette situation pour n'importe quel paquet, ce que je fais est l'un des suivants:
Recherchez les fichiers de sauvegarde de la version d'origine dans votre éditeur. J'utilise Emacs, qui laisse normalement des foo~
fichiers, et j'ai défini l'option de contrôle de version numérique pour que la version d'origine soit toujours foo.~1~
. Mais peut-être que vous l'avez fait d'une autre manière ou que vous avez utilisé un autre éditeur. Pensez à vérifier la configuration de votre éditeur pour activer cette fonctionnalité si vous ne l'avez pas déjà fait; c'est une bonne habitude à prendre.
Reconfigurez le package avec dpkg-reconfigure PACKAGENAME
. Parfois, cela fait l'affaire. D'après mon expérience, cela fonctionne rarement; cela dépend de la façon dont le package crée ses fichiers de configuration.
Purgez et réinstallez le package ( apt-get purge packagename
suivi de apt-get install packagename
). Cela devrait toujours fonctionner.
Dans les cas extrêmes, vous devez, après la purge, rechercher et supprimer manuellement les fichiers de configuration avant de réinstaller le package, mais cela est rare. Cependant, cela éliminera tout autre fichier de données et / ou de configuration pour le package, ce qui n'est pas toujours acceptable.
Téléchargez le code source du package ( apt-get source foo
) et voyez si le fichier de configuration d'origine existe en tant que fichier. Cependant, il se peut que le fichier de configuration n'existe pas auparavant, mais qu'il soit créé lors de l'installation par le script de post-installation du package.
Vérifiez le script postinst du package ( /var/lib/dpkg/info/foo.postinst
) pour savoir où il crée le fichier de configuration et comment il le fait. Essayez ensuite de répéter le processus manuellement. C'est un peu de travail et pas toujours facile.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
pour remplacer mon fichier de conf à la corbeille par l'original.
dpkg-reconfigure <package>
ne modifiera pas les fichiers de conf modifiés par défaut.
Probablement la façon la plus simple de le faire, si vous avez encore le paquet dans le cache apt, c'est d'exécuter
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
où le nom du fichier de package est généralement quelque chose comme <package name>_<version>.deb
(utilisez simplement la complétion de tabulation). Cela passera par le même processus qu'une mise à niveau d'apt et vous demandera ce que vous voulez faire chaque fois qu'il trouvera un fichier conf modifié. Entrez simplement N
à chaque invite. dpkg installera la version du package du fichier conf avec .dpkg-dist
à la fin du nom de fichier. Vous pouvez ensuite utiliser vimdiff
ou un autre outil de fusion pour comparer les différences et modifier le fichier conf de lecture.
Vous pouvez extraire le deb et récupérer le fichier d'origine:
ar p packagename.deb data.tar.gz | tar zx
dpkg-source
est plus facile et l'utilisation apt-get source PACKAGE
est beaucoup plus facile.
packagename.postinst
script.
Vous pouvez retélécharger et extraire le contenu du paquet deb
La meilleure façon (obtenue de #ubuntu) est de faire ceci:
dpkg-reconfigure <package>
Dans ce cas, cela signifie
dpkg-reconfigure samba-common
Vous pouvez restaurer le smb.conf
fichier de configuration d' origine comme ceci:
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
C'est essentiellement ce que fait le processus d'installation du paquet d'origine (sur Debian Squeeze).
Cela vous remplacera actuellement smb.conf
, alors faites d'abord une sauvegarde si vous ne voulez pas la perdre.
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
et
$ sudo dpkg --configure -a
fera le travail.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf