回答:
編集:
これをserverfaultの質問で見つけました。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ファイルの元のバージョンです。
どのパッケージでもこの状況に直面したとき、私がすることは次のいずれかです。
エディターから元のバージョンのバックアップファイルを確認します。私は通常foo~
ファイルを残すEmacsを使用し、数値のバージョン管理オプションを設定したので、元のバージョンは常に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
、ゴミ箱にされたconfファイルを元のファイルで上書きするケースでした。
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ファイルを変更できます。
debを抽出して、元のファイルを取得できます。
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での)元のパッケージのインストールプロセスです。
これによりcurrentが上書きされる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