Niedawno zainstalowałem Sambę i pomieszałem ten /etc/samba/smb.conf
plik. Jak odzyskać oryginalną konfigurację?
Niedawno zainstalowałem Sambę i pomieszałem ten /etc/samba/smb.conf
plik. Jak odzyskać oryginalną konfigurację?
Odpowiedzi:
Edytowane :
Zauważyłem to w pytaniu o awarię serwera . Jeśli dpkg-reconfigure foo
to nie działa, użyj tego:
Usuń uszkodzony plik konfiguracyjny lub zmień jego nazwę.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
Poproś o wymianę od dpkg
.
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
Oznacza dpkg
to zamianę brakujących plików konfiguracyjnych na pliki z .deb. Możesz znaleźć oryginalny pakiet .deb /var/cache/apt/archives
lub możesz użyć nowej kopii tej samej wersji z repozytoriów twojej dystrybucji.
dpkg -i --force-confnew foo.deb
Mówi dpkg
to o zastąpieniu istniejących plików konfiguracyjnych plikami z .deb. Możesz znaleźć oryginalny pakiet .deb /var/cache/apt/archives
lub możesz użyć nowej kopii tej samej wersji z repozytoriów twojej dystrybucji.
dpkg
zastąpienie pliku konfiguracyjnego, jeśli w przeciwnym razie poprosiłby o pozwolenie . To nie nie sprawiają, że w magiczny sposób odtworzyć dziewiczych pliki konfiguracyjne z opakowania.
--force-confmiss
zamiast tego. w tym konkretnym przypadku, np. samba, myślę, --force-confnew
że wykonałby nadpisanie, ale masz rację, że zależy to od szczegółów skryptu konfiguracji pakietu.
Krótka odpowiedź: /usr/share/samba/smb.conf
to oryginalna wersja pliku smb.conf.
W obliczu tej sytuacji w przypadku dowolnego pakietu robię jedną z następujących czynności:
Sprawdź, czy w edytorze znajdują się kopie zapasowe oryginalnej wersji . Używam Emacsa, który zwykle pozostawia foo~
pliki, i ustawiłem opcję numerycznej kontroli wersji, więc oryginalna wersja jest zawsze foo.~1~
. Ale może zrobiłeś to w inny sposób lub użyłeś innego edytora. Rozważ sprawdzenie konfiguracji edytora, aby włączyć tę funkcję, jeśli jeszcze tego nie zrobiłeś; warto się w to przyzwyczaić.
Ponownie skonfiguruj pakiet za pomocą dpkg-reconfigure PACKAGENAME
. Czasami to załatwia sprawę. Z mojego doświadczenia wynika, że rzadko działa; zależy to od sposobu, w jaki pakiet tworzy pliki konfiguracyjne.
Wyczyść i ponownie zainstaluj pakiet (z apt-get purge packagename
dodanym apt-get install packagename
). To zawsze powinno działać.
W skrajnych przypadkach musisz po wyczyszczeniu ręcznie wyszukać i usunąć pliki konfiguracyjne przed ponowną instalacją pakietu, ale jest to rzadkie. Spowoduje to jednak wyeliminowanie wszelkich innych danych i / lub plików konfiguracyjnych pakietu, co nie zawsze jest dopuszczalne.
Pobierz kod źródłowy dla package ( apt-get source foo
) i sprawdź, czy oryginalny plik konfiguracyjny istnieje tam jako plik. Może się jednak zdarzyć, że plik konfiguracyjny nie istnieje wcześniej, ale jest tworzony podczas instalacji przez skrypt poinstalacyjny pakietu.
Sprawdź skrypt postinst dla pakietu ( /var/lib/dpkg/info/foo.postinst
), aby dowiedzieć się, gdzie tworzy plik konfiguracyjny i jak to robi. Następnie spróbuj ręcznie powtórzyć proces. To trochę pracy i nie zawsze jest łatwe.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
zastąpienie mojego pliku skonfiskowanego pliku oryginałem.
dpkg-reconfigure <package>
domyślnie nie zmodyfikuje zmienionych plików conf.
Prawdopodobnie najłatwiejszym sposobem na zrobienie tego, jeśli nadal masz pakiet w apt cache, jest uruchomienie
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
gdzie nazwa pliku pakietu jest zwykle podobna <package name>_<version>.deb
(wystarczy użyć uzupełniania tabulatorami). Zostanie uruchomiony ten sam proces, co apt-upgrade i zapyta cię, co chcesz zrobić, gdy tylko znajdzie zmieniony plik conf. Po prostu wpisz N
za każdym razem. dpkg zainstaluje wersję pakietu pliku conf z .dpkg-dist
na końcu nazwy pliku. Następnie możesz użyć vimdiff
innego narzędzia do scalania, aby porównać różnice i zmodyfikować plik conf.
/var/cache/apt/archives/
...
Możesz wyodrębnić deb i pobrać oryginalny plik:
ar p packagename.deb data.tar.gz | tar zx
dpkg-source
jest łatwiejsze, a korzystanie apt-get source PACKAGE
jest znacznie łatwiejsze.
packagename.postinst
skrypcie.
Najlepszym sposobem (otrzymanym z #ubuntu) jest zrobienie tego:
dpkg-reconfigure <package>
W tym przypadku to oznacza
dpkg-reconfigure samba-common
Możesz przywrócić oryginalny smb.conf
plik konfiguracyjny w następujący sposób:
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
Jest to w zasadzie to, co robi proces instalacji oryginalnego pakietu (w Debian Squeeze).
Spowoduje to zastąpienie bieżącej smb.conf
, więc najpierw wykonaj kopię zapasową, jeśli nie chcesz jej utracić.
Możesz ponownie pobrać i wyodrębnić zawartość pakietu deb
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
i
$ sudo dpkg --configure -a
wykona robotę.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf