Нещодавно я встановив 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