Нещодавно я встановив Samba, і я переплутав /etc/samba/smb.confфайл. Як повернути оригінальну конфігурацію?
Нещодавно я встановив Samba, і я переплутав /etc/samba/smb.confфайл. Як повернути оригінальну конфігурацію?
Відповіді:
Відредаговано :
Виявив це в питанні сервера за замовчуванням . Якщо dpkg-reconfigure fooце не працює, скористайтеся цим:
Видаліть або перейменуйте зламаний файл конфігурації.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
Попросіть заміни від dpkg.
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
Це говорить dpkgпро заміну відсутніх файлів конфігурації на файли з .deb. Ви можете знайти оригінальний пакунок .deb в /var/cache/apt/archives, або ви можете використати свіжу копію тієї самої версії із сховищ вашого дистрибутива.
dpkg -i --force-confnew foo.deb
Це дає dpkgзмогу замінити існуючі файли конфігурації файлами з .deb. Ви можете знайти оригінальний пакунок .deb в /var/cache/apt/archives, або ви можете використати свіжу копію тієї самої версії із сховищ вашого дистрибутива.
dpkgперезаписати конфігураційний файл, лише якщо він інакше попросив би дозволу на це . Це не дозволяє магічно відтворити незаймані конфігураційні файли з пакету.
--force-confmissзамість цього. У цьому конкретному випадку, наприклад, samba, я думаю, що --force-confnewце виконає перезапис, але ви маєте рацію, що це залежить від деталей сценаріїв конфігурації пакета.
Коротка відповідь: /usr/share/samba/smb.confце оригінальна версія файлу smb.conf.
Коли я стикаюся з цією ситуацією для будь-якого пакету, я роблю одне з наступних:
Перевірте наявність резервних файлів оригінальної версії у вашому редакторі. Я використовую Emacs, який зазвичай залишає foo~файли, і я встановив числовий варіант контролю версій, щоб оригінальна версія завжди була foo.~1~. Але, можливо, ви це зробили іншим способом, або використовували якийсь інший редактор. Спробуйте перевірити конфігурацію редактора, щоб увімкнути цю функцію, якщо ви ще цього не зробили; це гарна звичка потрапляти.
Переконфігуруйте пакет за допомогою dpkg-reconfigure PACKAGENAME. Іноді це робить трюк. На мій досвід, це рідко працює; це залежить від того, як пакет створює свої конфігураційні файли.
Очистіть і перевстановіть пакет (з apt-get purge packagenameподальшим apt-get install packagename). Це завжди має працювати.
У крайньому випадку після очищення вам доведеться вручну зайнятись видаленням та видалити конфігураційні файли перед перевстановленням пакету, але це рідко. Однак це усуне будь-які інші дані та / або конфігураційні файли для пакету, і це не завжди прийнятно.
Завантажте вихідний код пакета ( apt-get source foo) і подивіться, чи існує оригінальний файл конфігурації як файл. Однак, можливо, що конфігураційний файл не існує заздалегідь, а створюється при встановленні скриптом після встановлення пакета.
Перевірте сценарій postinst для пакета ( /var/lib/dpkg/info/foo.postinst), щоб дізнатися, де він створює конфігураційний файл і як це робить. Потім спробуйте повторити процес вручну. Це трохи роботи, і не завжди просто.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confщоб перезаписати мій пошкоджений конф-файл оригіналом.
dpkg-reconfigure <package> не змінить змінені файли конф за замовчуванням.
Напевно, найпростіший спосіб зробити це, якщо у вас все-таки є пакет в підходящому кеші - це запустити
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
де ім'я файлу пакету зазвичай щось подібне <package name>_<version>.deb(просто скористайтеся вкладкою). Це відбудеться через той самий процес, що і apt-оновлення, і запитає вас, що ви хочете зробити, коли коли-небудь знайде змінений конф-файл. Просто введіть Nу кожному підказку. dpkg встановить пакетну версію конф-файлу з .dpkg-distв кінці імені файлу. Потім ви можете скористатись vimdiffчи іншим інструментом об’єднання для порівняння відмінностей та змінити файл конфіденційності читання.
/var/cache/apt/archives/хоча ...
Ви можете витягти деб і захопити вихідний файл:
ar p packagename.deb data.tar.gz | tar zx
dpkg-sourceлегше, і використовуючи apt-get source PACKAGEце набагато простіше.
packagename.postinstсценарії.
Найкращий спосіб (отриманий від #ubuntu) - це зробити:
dpkg-reconfigure <package>
У цьому випадку це означає
dpkg-reconfigure samba-common
Ви можете відновити вихідний smb.confфайл конфігурації таким чином:
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
Це в основному те, що робить оригінальний процес встановлення пакета (на Debian Squeeze).
Це перезаписать поточний smb.conf, тому спочатку зробіть резервну копію, якщо ви не хочете її втрачати.
Ви можете повторно завантажити та витягнути вміст пакету дебютів
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
і
$ sudo dpkg --configure -a
зробить роботу.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf