Di recente ho installato Samba e ho incasinato il /etc/samba/smb.conf
file. Come posso ripristinare la configurazione originale?
Di recente ho installato Samba e ho incasinato il /etc/samba/smb.conf
file. Come posso ripristinare la configurazione originale?
Risposte:
A cura di :
Ho notato questo su una domanda serverfault . Se il dpkg-reconfigure foo
problema persiste, utilizzare questo:
Rimuovere o rinominare il file di configurazione non funzionante.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
Richiedi sostituzioni da dpkg
.
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
Questo dice dpkg
di sostituire i file di configurazione mancanti con quelli del .deb. È possibile trovare il pacchetto originale .deb /var/cache/apt/archives
oppure è possibile utilizzare una nuova copia della stessa versione dai repository della distribuzione.
dpkg -i --force-confnew foo.deb
Questo dice dpkg
di sovrascrivere i file di configurazione esistenti con quelli del .deb. È possibile trovare il pacchetto originale .deb /var/cache/apt/archives
oppure è possibile utilizzare una nuova copia della stessa versione dai repository della distribuzione.
dpkg
a sovrascrivere il file di configurazione se altrimenti avrebbe richiesto l'autorizzazione per farlo . Essa non rendono magicamente ricreare file di configurazione incontaminate dal pacchetto.
--force-confmiss
invece. in questo caso particolare, ad esempio samba, penso --force-confnew
che eseguirà la sovrascrittura, ma hai ragione che dipende dai dettagli degli script di configurazione del pacchetto.
Risposta breve: /usr/share/samba/smb.conf
è la versione originale del file smb.conf.
Di fronte a questa situazione per qualsiasi pacchetto, quello che faccio è uno dei seguenti:
Controlla i file di backup della versione originale dal tuo editor. Uso Emacs, che normalmente lascia i foo~
file, e ho impostato l'opzione di controllo numerico della versione in modo che la versione originale sia sempre foo.~1~
. Ma forse l'hai fatto in un altro modo o hai usato un altro editor. Prova a controllare la configurazione del tuo editor per attivare questa funzione se non l'hai già fatto; è una buona abitudine entrare.
Riconfigurare il pacchetto con dpkg-reconfigure PACKAGENAME
. A volte questo fa il trucco. Nella mia esperienza raramente funziona; dipende da come il pacchetto sta creando i suoi file di configurazione.
Elimina e reinstalla il pacchetto ( apt-get purge packagename
seguito da apt-get install packagename
). Questo dovrebbe sempre funzionare.
In casi estremi è necessario, dopo l'eliminazione, cercare manualmente ed eliminare i file di configurazione prima di reinstallare il pacchetto, ma questo è raro. Tuttavia, ciò eliminerà qualsiasi altro dato e / o file di configurazione per il pacchetto e ciò non è sempre accettabile.
Scarica il codice sorgente per il pacchetto ( apt-get source foo
) e vedi se il file di configurazione originale esiste come file lì. Tuttavia, è possibile che il file di configurazione non esista prima, ma venga creato al momento dell'installazione dallo script post-installazione del pacchetto.
Controlla lo script postinst per il pacchetto ( /var/lib/dpkg/info/foo.postinst
) per scoprire dove crea il file di configurazione e come lo fa. Quindi prova a ripetere il processo manualmente. Questo è un po 'di lavoro, e non sempre facile.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
sovrascrivere il mio file conf cestinato con l'originale.
dpkg-reconfigure <package>
non modificherà i file di configurazione modificati per impostazione predefinita.
Probabilmente il modo più semplice per farlo, se hai ancora il pacchetto nella cache apt, è quello di eseguirlo
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
dove il nome del file del pacchetto è in genere qualcosa di simile <package name>_<version>.deb
(basta usare il completamento della scheda). Questo eseguirà lo stesso processo di apt-upgrade e ti chiederà cosa vuoi fare ogni volta che trova un file conf modificato. Basta inserire N
ad ogni richiesta. dpkg installerà la versione del pacchetto del file conf con .dpkg-dist
alla fine del nome del file. È quindi possibile utilizzare vimdiff
o qualche altro strumento di unione per confrontare le differenze e modificare il file di configurazione della lettura.
/var/cache/apt/archives/
...
Puoi estrarre il deb e prendere il file originale:
ar p packagename.deb data.tar.gz | tar zx
dpkg-source
è più semplice e l'utilizzo apt-get source PACKAGE
è molto più semplice.
packagename.postinst
script.
Il modo migliore (ottenuto da #ubuntu) è fare questo:
dpkg-reconfigure <package>
In questo caso ciò significa
dpkg-reconfigure samba-common
È possibile ripristinare il smb.conf
file di configurazione originale in questo modo:
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
Questo è fondamentalmente ciò che fa il processo di installazione del pacchetto originale (su Debian Squeeze).
Questo ti sovrascriverà smb.conf
, quindi esegui prima un backup se non vuoi perderlo.
È possibile scaricare nuovamente ed estrarre il contenuto del pacchetto deb
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
e
$ sudo dpkg --configure -a
farà il lavoro.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf