Come posso recuperare il file di configurazione predefinito di Samba (sistema basato su Debian)?


Risposte:


8

A cura di :

Ho notato questo su una domanda serverfault . Se il dpkg-reconfigure fooproblema persiste, utilizzare questo:

  1. Rimuovere o rinominare il file di configurazione non funzionante.

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. Richiedi sostituzioni da dpkg.

    sudo dpkg -i --force-confmiss /path/to/samba-common.deb
    

Questo dice dpkgdi sostituire i file di configurazione mancanti con quelli del .deb. È possibile trovare il pacchetto originale .deb /var/cache/apt/archivesoppure è possibile utilizzare una nuova copia della stessa versione dai repository della distribuzione.

dpkg -i --force-confnew foo.deb

Questo dice dpkgdi sovrascrivere i file di configurazione esistenti con quelli del .deb. È possibile trovare il pacchetto originale .deb /var/cache/apt/archivesoppure è possibile utilizzare una nuova copia della stessa versione dai repository della distribuzione.


Quel flag forza solo dpkga sovrascrivere il file di configurazione se altrimenti avrebbe richiesto l'autorizzazione per farlo . Essa non rendono magicamente ricreare file di configurazione incontaminate dal pacchetto.
Teddy

credo che tu abbia ragione. ok, quindi vuoi --force-confmissinvece. in questo caso particolare, ad esempio samba, penso --force-confnewche eseguirà la sovrascrittura, ma hai ragione che dipende dai dettagli degli script di configurazione del pacchetto.
Quack Quixote,

7

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:

  1. 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.

  2. 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.

  3. Elimina e reinstalla il pacchetto ( apt-get purge packagenameseguito 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.

  4. 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.

  5. 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.


Questo dovrebbe essere più alto. Per me è stato solo un caso di sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confsovrascrivere il mio file conf cestinato con l'originale.
edzillion,

2

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 Nad ogni richiesta. dpkg installerà la versione del pacchetto del file conf con .dpkg-distalla fine del nome del file. È quindi possibile utilizzare vimdiffo qualche altro strumento di unione per confrontare le differenze e modificare il file di configurazione della lettura.


Non ci sono pacchetti in /var/cache/apt/archives/...
Endolith

1

Puoi estrarre il deb e prendere il file originale:

ar p packagename.deb data.tar.gz | tar zx

L'uso dpkg-sourceè più semplice e l'utilizzo apt-get source PACKAGEè molto più semplice.
Teddy

1
@Teddy: solo se il file di configurazione predefinito è incluso nel pacchetto sorgente per cominciare. molti pacchetti installano un file di configurazione fortemente specifico del fornitore; alcuni generano automaticamente i loro file di configurazione nello packagename.postinstscript.
Quack Quixote,

1

Il modo migliore (ottenuto da #ubuntu) è fare questo:

dpkg-reconfigure <package>

In questo caso ciò significa

dpkg-reconfigure samba-common

1

È possibile ripristinare il smb.conffile 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.


1
Grazie per aver fornito il nome del pacchetto che contiene questo file. "sudo aptitude purge samba-common; sudo aptitude install samba" è stata la mia scelta, ma la risposta di Totor sembra la meno spaventosa e la maggior parte delle Debian delle scelte.
Martin Dorey,


-2
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

e

$ sudo dpkg --configure -a

farà il lavoro.


Questo è quasi identico a tutte le altre risposte qui. È anche su un post del '14.
var firstName
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.