デフォルトのSamba構成ファイル(Debianベースのシステム)に戻すにはどうすればよいですか?


回答:


8

編集

これをserverfaultの質問で見つけましdpkg-reconfigure foo動作しない場合は、これを使用します。

  1. 壊れた構成ファイルを削除するか、名前を変更します。

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. に交換をリクエストしてください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上書きを実行すると思いますが、パッケージ構成スクリプトの詳細に依存しているのは当然です。
quack quixote、2009

7

短い答え:/usr/share/samba/smb.confsmb.confファイルの元のバージョンです。

どのパッケージでもこの状況に直面したとき、私がすることは次のいずれかです。

  1. エディターから元のバージョンのバックアップファイルを確認します。私は通常foo~ファイルを残すEmacsを使用し、数値のバージョン管理オプションを設定したので、元のバージョンは常にfoo.~1~です。しかし、多分あなたは何か他の方法でそれをしたか、または他のいくつかのエディタを使用しました。まだ設定していない場合は、エディターの構成を確認してこの機能をオンにすることを検討してください。入るのは良い習慣です。

  2. でパッケージ再構成しますdpkg-reconfigure PACKAGENAME。時々これはトリックをします。私の経験ではめったに機能しません。これは、パッケージが構成ファイルを作成する方法に依存します。

  3. パッケージをパージして再インストールしますapt-get purge packagenameその後にを付けますapt-get install packagename)。これは常に動作するはずです。

    極端なケースでは、パージした後、パッケージを再インストールする前に手動で設定ファイルを探して削除する必要がありますが、これはまれです。ただし、これにより、パッケージの他のデータや設定ファイルが削除されます。これは常に許容できるわけではありません。

  4. パッケージのソースコードをダウンロードしapt-get source foo)、元の構成ファイルがファイルとして存在するかどうかを確認します。ただし、設定ファイルが事前に存在していない可能性がありますが、パッケージのインストール後スクリプトによってインストール時に作成されます。

  5. パッケージのpostinstスクリプト/var/lib/dpkg/info/foo.postinst)をチェックして、構成ファイルを作成する場所とその方法を確認します。その後、手動でプロセスを繰り返してみてください。これは少しの作業であり、必ずしも簡単ではありません。


これはもっと高いはずです。私にとってはsudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf、ゴミ箱にされたconfファイルを元のファイルで上書きするケースでした。
エジリオン

2

dpkg-reconfigure <package> デフォルトでは、変更されたconfファイルは変更されません。

おそらくこれを行う最も簡単な方法は、aptキャッシュにまだパッケージがある場合は実行することです

dpgk -i --force-confask /var/cache/apt/archives/<package file name>

ここで、パッケージファイル名は通常<package name>_<version>.deb(タブ補完を使用する)のようになります。これはapt-upgradeと同じプロセスを実行し、変更されたconfファイルを見つけたときに何をしたいかを尋ねます。Nすべてのプロンプトで入力するだけです。dpkgは.dpkg-dist、ファイル名の最後にconfファイルのパッケージバージョンをインストールします。次に、vimdiffまたはその他のマージツールを使用して違いを比較し、読み取ったconfファイルを変更できます。


1

debを抽出して、元のファイルを取得できます。

ar p packagename.deb data.tar.gz | tar zx

使用dpkg-sourceが簡単で、使用apt-get source PACKAGEはるかに簡単です。
テディ

1
@Teddy:デフォルトの構成ファイルがソースパッケージに最初から含まれている場合のみ。多くのパッケージは、ベンダー固有の設定ファイルを大量にインストールします。packagename.postinstスクリプトで設定ファイルを自動生成するものもあります。
quack quixote、2009


1

最良の方法(#ubuntuから取得)は次のようにすることです:

dpkg-reconfigure <package>

この場合、それは

dpkg-reconfigure samba-common

1

次のsmb.confようにして、元の構成ファイルを復元できます。

# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common

これは基本的に(Debian Squeezeでの)元のパッケージのインストールプロセスです。

これによりcurrentが上書きされるsmb.confので、失いたくない場合はまずバックアップを作成してください。


このファイルを含むパッケージの名前を提供していただきありがとうございます。「sudo aptitude purge samba-common; sudo aptitude install samba」が私の選択でしたが、Totorの答えは最も怖くなく、ほとんどのDebianを選択したようです。
Martin Dorey、2016

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

そして

$ sudo dpkg --configure -a

仕事をします。


これは、ここでの他のすべての回答とほぼ同じです。また、'14の投稿にも掲載されています。
var firstName
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.