Làm cách nào để lấy lại tệp cấu hình Samba mặc định (hệ thống dựa trên Debian)?


Câu trả lời:


8

Đã 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 fookhông hoạt động, sử dụng này:

  1. 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
    
  2. 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/archiveshoặ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/archiveshoặ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.


Cờ đó chỉ buộc dpkgghi đè 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.
Teddy

tôi tin bạn đúng ok, vì vậy bạn muốn --force-confmissthay thế. trong trường hợp cụ thể này, ví dụ như samba, tôi nghĩ --force-confnewsẽ 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.
quack quixote

7

Câu trả lời ngắn: /usr/share/samba/smb.conflà 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:

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

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

  3. Lọc và cài đặt lại gói (với apt-get purge packagenametheo 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.

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

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


Điều này nên cao hơn. Đối với tôi, đó chỉ là một trường hợp làm 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.
edzillion

2

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 Ntạ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 vimdiffhoặ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.


1

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

Sử dụng dpkg-sourcedễ dàng hơn, và sử dụng apt-get source PACKAGEnhiều dễ dàng hơn.
Teddy

1
@Teddy: chỉ khi tệp cấu hình mặc định được bao gồm trong gói nguồn để bắt đầu. nhiều gói cài đặt một tập tin cấu hình cụ thể của nhà cung cấp; một số tự động tạo tập tin cấu hình của họ trong packagename.postinsttập lệnh.
quixote quixote

1

Bạn có thể tải xuống và trích xuất nội dung của gói deb


1
Đây là cách quá thấp để làm điều đó
Frew Schmidt

4
không có nghĩa là nó sẽ không hoạt động
John T

1

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

1

Bạn có thể khôi phục smb.conftệ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ó.


Cảm ơn đã cung cấp tên của gói chứa tệp này. "sudo aptitude purge samba-common; sudo aptitude install samba" là lựa chọn của tôi, nhưng câu trả lời của Totor có vẻ ít đáng sợ nhất và hầu hết các lựa chọn Debian.
Martin Dorey

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

$ sudo dpkg --configure -a

sẽ làm việc


Điều này gần giống với tất cả các câu trả lời khác ở đây. Nó cũng trên một bài đăng từ 14.
var FirstName
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.