Gần đây tôi đã cài đặt Samba và tôi đã làm hỏng /etc/samba/smb.conf
tập tin. Làm thế nào để tôi lấy lại cấu hình ban đầu?
Gần đây tôi đã cài đặt Samba và tôi đã làm hỏng /etc/samba/smb.conf
tập tin. Làm thế nào để tôi lấy lại cấu hình ban đầu?
Câu trả lời:
Đã chỉnh sửa :
Phát hiện điều này trên một câu hỏi serverfault . Nếu dpkg-reconfigure foo
không hoạt động, sử dụng này:
Loại bỏ hoặc đổi tên tập tin cấu hình bị hỏng.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
Yêu cầu thay thế từ dpkg
.
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
Điều này nói dpkg
để thay thế các tệp cấu hình bị thiếu bằng các tệp từ .deb. Bạn có thể tìm thấy gói .deb gốc /var/cache/apt/archives
hoặc bạn có thể sử dụng bản sao mới của cùng một phiên bản từ kho lưu trữ phân phối của mình.
dpkg -i --force-confnew foo.deb
Điều này nói dpkg
để ghi đè lên các tệp cấu hình hiện có với các tệp từ .deb. Bạn có thể tìm thấy gói .deb gốc /var/cache/apt/archives
hoặc bạn có thể sử dụng bản sao mới của cùng một phiên bản từ kho lưu trữ phân phối của mình.
dpkg
ghi đè lên tệp cấu hình nếu nó có yêu cầu cho phép làm như vậy . Nó không làm cho nó tái tạo một cách kỳ diệu các tập tin cấu hình nguyên sơ từ gói.
--force-confmiss
thay thế. trong trường hợp cụ thể này, ví dụ như samba, tôi nghĩ --force-confnew
sẽ thực hiện ghi đè, nhưng bạn đúng rằng nó phụ thuộc vào các chi tiết của tập lệnh cấu hình gói.
Câu trả lời ngắn: /usr/share/samba/smb.conf
là phiên bản gốc của tệp smb.conf.
Khi gặp tình huống này đối với bất kỳ gói hàng nào, những gì tôi làm là một trong những điều sau đây:
Kiểm tra các tập tin sao lưu của phiên bản gốc từ trình chỉnh sửa của bạn. Tôi sử dụng Emacs, thường để lại foo~
các tệp và tôi đã đặt tùy chọn kiểm soát phiên bản số để phiên bản gốc luôn luôn foo.~1~
. Nhưng có thể bạn đã làm nó theo một cách khác, hoặc sử dụng một số trình soạn thảo khác. Cân nhắc kiểm tra cấu hình của trình soạn thảo của bạn để bật tính năng này nếu bạn chưa có; đó là một thói quen tốt để có được vào.
Cấu hình lại gói với dpkg-reconfigure PACKAGENAME
. Đôi khi điều này không có mẹo. Theo kinh nghiệm của tôi, nó hiếm khi hoạt động; nó phụ thuộc vào cách gói đang tạo tập tin cấu hình của nó.
Lọc và cài đặt lại gói (với apt-get purge packagename
theo sau apt-get install packagename
). Điều này nên luôn luôn làm việc.
Trong trường hợp cực đoan, bạn phải, sau khi xóa, tự tìm và xóa các tệp cấu hình trước khi cài đặt lại gói, nhưng điều này rất hiếm. Tuy nhiên, điều này sẽ loại bỏ bất kỳ dữ liệu và / hoặc tệp cấu hình nào khác cho gói và điều đó không phải lúc nào cũng được chấp nhận.
Tải xuống mã nguồn cho gói ( apt-get source foo
) và xem liệu tệp cấu hình gốc có tồn tại dưới dạng tệp ở đó không. Tuy nhiên, có thể tệp cấu hình không tồn tại trước đó, nhưng được tạo khi cài đặt bởi tập lệnh sau khi cài đặt của gói.
Kiểm tra tập lệnh postinst cho gói ( /var/lib/dpkg/info/foo.postinst
) để tìm ra nơi nó tạo tệp cấu hình và cách thực hiện. Sau đó cố gắng lặp lại quá trình bằng tay. Đây là một chút công việc, và không phải lúc nào cũng dễ dàng.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
để ghi đè lên tập tin conf đã bị hỏng của tôi với bản gốc.
dpkg-reconfigure <package>
sẽ không sửa đổi các tập tin conf thay đổi theo mặc định.
Có lẽ cách dễ nhất để làm điều này, nếu bạn vẫn có gói trong bộ đệm apt là chạy
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
trong đó tên tệp gói thường giống như <package name>_<version>.deb
(chỉ cần sử dụng hoàn thành tab). Điều này sẽ chạy qua quá trình tương tự như nâng cấp apt và hỏi bạn muốn làm gì khi tìm thấy tệp conf đã thay đổi. Chỉ cần nhập N
tại mỗi dấu nhắc. dpkg sẽ cài đặt phiên bản gói của tệp conf .dpkg-dist
ở cuối tên tệp. Sau đó, bạn có thể sử dụng vimdiff
hoặc một số công cụ hợp nhất khác để so sánh sự khác biệt và sửa đổi tệp conf conf.
Bạn có thể trích xuất deb và lấy tệp gốc:
ar p packagename.deb data.tar.gz | tar zx
dpkg-source
dễ dàng hơn, và sử dụng apt-get source PACKAGE
là nhiều dễ dàng hơn.
packagename.postinst
tập lệnh.
Bạn có thể tải xuống và trích xuất nội dung của gói deb
Cách tốt nhất (nhận được từ #ubfox) là làm điều này:
dpkg-reconfigure <package>
Trong trường hợp này có nghĩa là
dpkg-reconfigure samba-common
Bạn có thể khôi phục smb.conf
tệp cấu hình ban đầu như thế này:
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
Về cơ bản, đây là những gì mà quá trình cài đặt gói ban đầu thực hiện (trên Debian Squeeze).
Điều này sẽ ghi đè lên bạn hiện tại smb.conf
, vì vậy hãy tạo bản sao lưu trước nếu bạn không muốn mất nó.
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
và
$ sudo dpkg --configure -a
sẽ làm việc
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf