お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-07-09 22:07:29

hotohoto
メンバ
登録日: 2009-07-04

postfix の削除でファイルをどこから探して消して

初心者で質問していた hotohoto です。

質問
ーー
「依存関係にあるファイルをどこから探して消していけばよい」でしょうか?
あとは何を消していけばよいでしょうか?
全部消していけばそのうちエラーが無くなるのか
もしかすると致命的なエラーになるかもしれないので
ちょっと恐ろしいです。


経緯
ーー
postfix の設定がわけ分からなくなったので synaptic で設定を再インストールしたところ
依存関係の問題が出始めました。
関連の項目を synaptic で消し始めました。
再読み込みしたり
一旦synapticを止めたり
rebootしたり
またsynaptic で読み込みし
関連をまとめて削除しようとするとエラーが出て消せないようなので
一つ一つ選んで削除をし始めましたが埒が明きません。
そこで、
synaputic を止めて
/var/cache/apt/archives$ 以下の指示されたパッケージファイルを消しました。
まだ下のメッセージが出てきます。
postfix も消したはずですが、なにやら出てきます。
どこから消していけば良いか途方に暮れています。
最後には、autoremove を何度か実行しています。



スキル
ーーー
命令は 「 rm -i なにがし 」は知っています。
探すヒントは下記からしかないでしょうか?



今 吐き出されているメッセージ
ーーーーーーーーーーーーーーー
myname@sv1:/var/cache/apt/archives$ sudo apt-get autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
10 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0B のディスク容量が消費されます。
postfix (2.5.5-1.1) を設定しています ...
setting inet_protocols: all

Postfix is now set up with the changes above.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
* Stopping Postfix Mail Transport Agent postfix                                                                                        [ OK ]
* Starting Postfix Mail Transport Agent postfix                                                                                               postfix: fatal: /etc/postfix/postfix-script: No such file or directory
                                                                                                                                        [fail]
invoke-rc.d: initscript postfix, action "restart" failed.
dpkg: postfix の処理中にエラーが発生しました (--configure):
サブプロセス post-installation script はエラー終了ステータス 1 を返しました
dpkg: 依存関係の問題により bsd-mailx の設定ができません:
bsd-mailx は以下に依存 (depends) します: postfix | mail-transport-agent ...しかし:
  パッケージ postfix はまだ設定されていません。
  パッケージ mail-transport-agent はまだインストールされていません。
  パッケージ postfix は mail-transport-agent を提供していますが、まだ設定されていません。
dpkg: bsd-mailx の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により dovecot-postfix の設定ができません:
dovecot-postfix は以下に依存 (depends) します: postfix ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: dovecot-postfix の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
つづく

オフライン

 

#2 2009-07-09 22:09:04

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

続き
dpkg: 依存関係の問題により mailx の設定ができません:
mailNo apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                               No apport report written because the error message indicates its a followup error from a previous failure.
                                                                          No apport report written because MaxReports is reached already
                                                                                                                                        No apport report written because MaxReports is reached already
                                                       No apport report written because MaxReports is reached already
                                                                                                                     No apport report written because MaxReports is reached already
                                    No apport report written because MaxReports is reached already
                                                                                                  No apport report written because MaxReports is reached already
                 No apport report written because MaxReports is reached already
                                                                               x は以下に依存 (depends) します: bsd-mailx ...しかし:
  パッケージ bsd-mailx はまだ設定されていません。
dpkg: mailx の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により postfix-dev の設定ができません:
postfix-dev は以下に依存 (depends) します: postfix (>= 2.5.5-0) ...しかし:
  パッケージ postfix はまだ設定されていません。
postfix-dev は以下に依存 (depends) します: postfix (<< 2.5.5.0-0) ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: postfix-dev の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により postfix-ldap の設定ができません:
postfix-ldap は以下に依存 (depends) します: postfix (= 2.5.5-1.1) ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: postfix-ldap の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により postfix-mysql の設定ができません:
postfix-mysql は以下に依存 (depends) します: postfix (= 2.5.5-1.1) ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: postfix-mysql の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により postfix-pcre の設定ができません:
postfix-pcre は以下に依存 (depends) します: postfix (= 2.5.5-1.1) ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: postfix-pcre の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により postfix-pgsql の設定ができません:
postfix-pgsql は以下に依存 (depends) します: postfix (= 2.5.5-1.1) ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: postfix-pgsql の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
dpkg: 依存関係の問題により postfix-cdb の設定ができません:
postfix-cdb は以下に依存 (depends) します: postfix (= 2.5.5-1.1) ...しかし:
  パッケージ postfix はまだ設定されていません。
dpkg: postfix-cdb の処理中にエラーが発生しました (--configure):
依存関係の問題 - 設定を見送ります
libc6 のトリガを処理しています ...
ldconfig deferred processing now taking place
以下のパッケージの処理中にエラーが発生しました:
postfix
bsd-mailx
dovecot-postfix
mailx
postfix-dev
postfix-ldap
postfix-mysql
postfix-pcre
postfix-pgsql
postfix-cdb
E: Sub-process /usr/bin/dpkg returned an error code (1)

オフライン

 

#3 2009-07-09 23:27:28

epii
メンバ
登録日: 2008-12-11

Re: postfix の削除でファイルをどこから探して消して

postfix の再インストールはできますか?

オフライン

 

#4 2009-07-10 06:49:24

tmin
メンバ
登録日: 2008-12-07

Re: postfix の削除でファイルをどこから探して消して

hotohotoさん、違うパッケージですが同様のエラーを解決できたことがあるのでそのときの手順を
この時の当方のエラー
<blockquote><p>$ sudo dpkg --configure -a
initramfs-tools (0.92bubuntu28) を設定しています ...
update-initramfs: deferring update (trigger activated)

initramfs-tools のトリガを処理しています ...
update-initramfs: Generating /boot/initrd.img-2.6.28.9
Cannot find /lib/modules/2.6.28.9
update-initramfs: failed for /boot/initrd.img-2.6.28.9
dpkg: サブプロセス post-installation script はエラー終了ステータス 1 を返しました</p></blockquote>
なのでnitramfs-toolsと言うパッケージでの同様のエラーです。
「dpkg: サブプロセス post-installation script はエラー終了ステータス 1 を返しました」
でググってみると/var/lib/dpkg/info/にある該当パッケージのpostinstファイルのコードがおかしいらしい。
このときに参考にしたところは↓
http://d.hatena.ne.jp/pyopyopyo/20081108/p1  debian に adobe reader をインストールする方法
https://forums.ubuntulinux.jp/viewtopic.php?id=1179 ペンタブレットを使う  Ubuntu日本語フォーラム

とりあえず/ver/lib/info/initramfs-tools.postinstのコードを表示してみましたが私のスキルでは訳が分かりませんでした。

で、フォーラムの方にあったように
<blockquote><p>/var/cache/apt/archives/wacom-tools*.deb
で、パッケージのキャッシュファイルを削除して、
sudo apt-get --reinstall install wacom-tools
で、現行バージョンを再インストールさせる、という形はどうでしょうか?</p></blockquote>
のように試してみました。
/var/cache/apt/archives/initramfs-tools_0.92bubuntu28_all.debを削除して・・・
再インストールしようとしたもののまた同じエラーが。

仕方ないので /ver/lib/info/initramfs-tools.postinstのコードがおかしいというならばこいつを削除だ。
削除して大丈夫なのかは知りません。最悪クリーンインストールになる前に試すだけ試せばいいさと思っての対応でした。
というわけで、削除して
<blockquote><p>$ sudo apt-get update
E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
$ sudo dpkg --configure -a
initramfs-tools (0.92bubuntu28) を設定しています ...</p></blockquote>
で、エラーは出ず、この後アップデートしてOKでした。

ちなみにこの時のエラーの原因だったパッケージinitramfs-tools_0.92bubuntu28_all.debは削除前にコピーしておいたので、こいつを再インストールしてみようかと思ったら途中でエラー吐いて最初の状態に逆戻りしてしまいました。
DLしたときにパッケージが壊れてしまったのかな?と勝手に推測してますが。

たぶんかなり強引で危険な復帰方法だったと思います。参考になれば幸いですが、識者のご意見が伺えればそちらを優先した方がいいかもです。

オフライン

 

#5 2009-07-10 07:03:35

tmin
メンバ
登録日: 2008-12-07

Re: postfix の削除でファイルをどこから探して消して

あら?編集できなくなってしまったんですね。
引用のコード間違えてしまって<blockquote><p>入れてしまったので見にくくなってて申し訳ないです・・・

オフライン

 

#6 2009-07-10 08:52:45

ry
メンバ
登録日: 2008-07-30

Re: postfix の削除でファイルをどこから探して消して

#4 の tmin さんの方法が確実ですが、若干の間違いがあります

*.postinst ファイルは /var/lib/dpkg/info ディレクトリにあるはずです
それと、*.postinst 以外に *.preinst、*.prerm、*.postrm が (もしあれば) 一緒に削除してしまう方が確実です
また *.deb ファイルを消す必要はありません (このファイルが破損しているなら別ですが)

今回のエラーの原因は postifx のファイル構成がおかしくなったことだと予想できるので、以下のように削除した後に再インストールしてはどうでしょう

コード:

sudo rm /var/lib/dpkg/postfix.{preinst,postinst,prerm,postrm}
sudo apt-get --reinstall install postfix

[蛇足]
postfix-ldap、postfix-mysql、postfix-pcre、postfix-pgsql、postfix-cdb のパッケージは何を目的に入れたのか疑問だったりする
せいぜいどれかひとつ入れる程度だろうに...

オフライン

 

#7 2009-07-10 09:25:11

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

epii による投稿:

postfix の再インストールはできますか?

お返事ありがとうございます。
できなくなっていました。そしていまは作業開始しました。
経過お知らせしていきます。

オフライン

 

#8 2009-07-10 10:06:56

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

ry による投稿:

#4 の tmin さんの方法が確実ですが、若干の間違いがあります

*.postinst ファイルは /var/lib/dpkg/info ディレクトリにあるはずです
それと、*.postinst 以外に *.preinst、*.prerm、*.postrm が (もしあれば) 一緒に削除してしまう方が確実です
また *.deb ファイルを消す必要はありません (このファイルが破損しているなら別ですが)

今回のエラーの原因は postifx のファイル構成がおかしくなったことだと予想できるので、以下のように削除した後に再インストールしてはどうでしょう

コード:

sudo rm /var/lib/dpkg/postfix.{preinst,postinst,prerm,postrm}
sudo apt-get --reinstall install postfix

ありがとうございます。やってみました。

その作業経過です
ーーーーーーー
myname@sv1:/var/lib/dpkg/info$ sudo apt-get --reinstall install postfix
★ 自分が入力作業したところはこれだけ すると以下


パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
提案パッケージ:
  procmail postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin resolvconf postfix-cdb
以下のパッケージは「削除」されます:
  dovecot-postfix
以下のパッケージが新たにインストールされます:
  postfix
アップグレード: 0 個、新規インストール: 1 個、削除: 1 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
1219kB のアーカイブを取得する必要があります。
この操作後に追加で 2888kB のディスク容量が消費されます。
続行しますか [Y/n]? y
ーーーーーーーーーー
★ と尋ねられたので「y」と入力。自分が作業したところはこれだけ すると以下


取得:1 http://jp.archive.ubuntu.com jaunty/main postfix 2.5.5-1.1 [1219kB]
1219kB を 1s で取得しました (739kB/s)                             
パッケージを事前設定しています ...
(データベースを読み込んでいます ... 現在 168741 個のファイルとディレクトリがインストールされています。)
dovecot-postfix を削除しています ...
未選択パッケージ postfix を選択しています。
(データベースを読み込んでいます ... 現在 168742 個のファイルとディレクトリがインストールされています。)
(.../postfix_2.5.5-1.1_i386.deb から) postfix を展開しています...
ufw のトリガを処理しています ...
man-db のトリガを処理しています ...
postfix (2.5.5-1.1) を設定しています ...
Creating /etc/postfix/dynamicmaps.cf
Adding tcp map entry to /etc/postfix/dynamicmaps.cf
setting myhostname: sv1
setting alias maps
setting alias database
setting myorigin
setting destinations: $myhostname, localhost.$mydomain, localhost, $mydomain
setting relayhost:
setting mynetworks: 127.0.0.0/8 192.168.1.0/24 [::1]/128 [2001:c90:262d:2b3f::]/64 [fe80::%eth0]/64
setting mailbox_size_limit: 0
setting recipient_delimiter: +
setting inet_interfaces: all
setting inet_protocols: all
WARNING: /etc/aliases exists, but does not have a root alias.

Postfix is now set up with a default configuration.  If you need to make
changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
* Stopping Postfix Mail Transport Agent postfix                                   [ OK ]
* Starting Postfix Mail Transport Agent postfix
postfix: fatal: /etc/postfix/postfix-script: No such file or directory       [fail]
invoke-rc.d: initscript postfix, action "restart" failed.
dpkg: postfix の処理中にエラーが発生しました (--configure):
サブプロセス post-installation script はエラー終了ステータス 1 を返しました
libc6 のトリガを処理しています ...
以下のパッケージの処理中にエラーが発生しました:
postfix
E: Sub-process /usr/bin/dpkg returned an error code (1)
ーーーーーーーーーーーーーーー
★ ここで止まった。まだエラーがある。



ーーーーーーーーーーーーーーー
myname@sv1:/var/lib/dpkg/info$ sudo rm  *.prerm
myname@sv1:/var/lib/dpkg/info$ ls -al post*
★ 入力作業は「 sudo rm  *.prerm 」して「post*」を調べてみよう。
以下

-rw-r--r-- 1 root root    251 2009-07-05 16:27 poster.list
-rw-r--r-- 1 root root    316 2008-05-03 18:29 poster.md5sums
-rw-r--r-- 1 root root    311 2008-11-05 22:03 postfix.conffiles
-rwxr-xr-x 1 root root  13223 2008-11-05 22:03 postfix.config
-rw-r--r-- 1 root root   5267 2009-07-10 09:23 postfix.list
-rw-r--r-- 1 root root   8017 2008-11-05 22:04 postfix.md5sums
-rwxr-xr-x 1 root root  16862 2008-11-05 22:03 postfix.postinst
-rwxr-xr-x 1 root root   1029 2008-11-05 22:03 postfix.postrm
-rwxr-xr-x 1 root root   4332 2008-11-05 22:03 postfix.preinst
-rw-r--r-- 1 root root    135 2008-11-05 22:01 postfix.shlibs
-rw-r--r-- 1 root root 154656 2008-11-05 22:03 postfix.templates
ーーーーーーーーーーーーーーー
ここで止まる
おや?
postfix 以外に poster とかほかのもあるな。これは消してはいけないだろう


そこで
ーーーーーーーーーーーーーーー
myname@sv1:/var/lib/dpkg/info$ sudo rm  postfix.*
myname@sv1:/var/lib/dpkg/info$ sudo apt-get --reinstall install postfix
★ 自分が作業したところはこの2行
「sudo rm  postfix.*」
「sudo apt-get --reinstall install postfix」
すると以下


パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、再インストール: 1 個、削除: 0 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0B のディスク容量が消費されます。
続行しますか [Y/n]? y
ーーーーーーーーーーーーーーー
★ 自分が作業したのは「y」 の入力作業のみ


postfix (2.5.5-1.1) を設定しています ...
myname@sv1:/var/lib/dpkg/info$ sudo apt-get --reinstall install postfix
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、再インストール: 1 個、削除: 0 個、保留: 0 個。
1219kB 中 0B のアーカイブを取得する必要があります。
この操作後に追加で 0B のディスク容量が消費されます。
続行しますか [Y/n]? y
ーーーーーーーーーーーーーーー
★ 「y」と入力



パッケージを事前設定しています ...
(データベースを読み込んでいます ...
dpkg: 重大な警告: パッケージ `postfix' のファイル一覧ファイルがありません。このパッケージには、現在インストールされているファイルがないものとします。
現在 168727 個のファイルとディレクトリがインストールされています。)
postfix 2.5.5-1.1 を (.../postfix_2.5.5-1.1_i386.deb で) 置換するための準備をしています ...
* Stopping Postfix Mail Transport Agent postfix                                     [ OK ]
postfix を展開し、置換しています...
ufw のトリガを処理しています ...
man-db のトリガを処理しています ...
postfix (2.5.5-1.1) を設定しています ...
setting inet_protocols: all

Postfix is now set up with the changes above.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Running newaliases
* Stopping Postfix Mail Transport Agent postfix                                     [ OK ]
* Starting Postfix Mail Transport Agent postfix                                     [ OK ]

libc6 のトリガを処理しています ...
ーーーーーーーーーーーーーーー
OKが3つ出て終わったようだ。


(なお私よりさらに初心者のために★印などいれました、誤解されないようにと思って。
ちょっと前までは「自分でこんな文字の羅列をキーボード入力しなければならないのか」と誤解していましたので・・・)


次の段階のつづきは後ほど

myname@sv1:/var/lib/dpkg/info$

オフライン

 

#9 2009-07-10 11:23:04

ry
メンバ
登録日: 2008-07-30

Re: postfix の削除でファイルをどこから探して消して

hotohotoさん による投稿:

myname@sv1:/var/lib/dpkg/info$ sudo rm  *.prerm

これ↑、実行しちゃったんですか!?
既にインストールされている (postfix以外の) パッケージの削除とかアップグレードのときに、不具合が発生する可能性が極大です

何を消すのかを理解していない状態で、無闇に * を使って削除するのは止めましょう.... って やっちゃったんだよなぁ、きっと

オフライン

 

#10 2009-07-10 12:18:19

weyk
メンバ
登録日: 2009-04-03

Re: postfix の削除でファイルをどこから探して消して

こつというか意識というか。私自身が失敗しない為にとっている方法ですが・・・

 ファイルの削除や更新などの操作の際で、ワイルドカード(?と*)を使用する場合、常に、実際に実行するつもりと同じ指定の仕方で、先にls -ladなどで確認すると良いです。これは、常に更新や削除の操作とセットで不可分と意識しておいても良いかもしれません。
ファイル自体の確認が済んでいて、確認するまでも無い と考えているときでも、常に実行するよう癖をつけておくと、いざというときに役に立つ可能性があります。
# もし、実施する場合は、これは自身の判断が間違えていたときに気が付く為の予防線なので、「効率を考えて適時判断しよう」と考えていると、意味がなくなります。注意。

例えば、
$ ls -al post*
にて、ファイルの確認後、削除する際の指定を考えた時点で、さらに、
$ ls -lad postfix.*
として、表示されるファイルに過不足が無いことを確認したうえで、
$ sudo rm  postfix.*
とします。そうすることで、不意のまきぞえを防げます(削除後、ls -lad postfix.*か、ls -lad post*で確認しておくと、その後の作業で何かあったときにも状況を把握しやすくなります。消すのが数個であれば、ワイルドカードを使わないのも選択の1つ。)

以上、蛇足でした。

オフライン

 

#11 2009-07-10 16:26:42

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

ry による投稿:

#4 の tmin さんの方法が確実ですが、若干の間違いがあります

今回のエラーの原因は postifx のファイル構成がおかしくなったことだと予想できるので、以下のように削除した後に再インストールしてはどうでしょう

コード:

sudo rm /var/lib/dpkg/postfix.{preinst,postinst,prerm,postrm}

有難うございました。
おかげを持ちまして
Postfix が動き出しました。
感謝します。


やり方としては:
徹底的に関係残存ファイルを消す
その後、インストールし直し
ですね。

感想:
synaptic のような高級なインストーラーですと
やっぱり出来ないことがあると「どうにもならない」
ことになりがちなのかな?
やはりcommand CUI を使えば確実に操作できますね。

オフライン

 

#12 2009-07-10 16:28:41

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

ry による投稿:

hotohotoさん による投稿:

myname@sv1:/var/lib/dpkg/info$ sudo rm  *.prerm

これ↑、実行しちゃったんですか!?
既にインストールされている (postfix以外の) パッケージの削除とかアップグレードのときに、不具合が発生する可能性が極大です

何を消すのかを理解していない状態で、無闇に * を使って削除するのは止めましょう.... って やっちゃったんだよなぁ、きっと

はい やっちゃいました(笑)
今のところ 問題なく 動いているようです。
ご心配掛けてすみませんでした。
感謝感謝です。

オフライン

 

#13 2009-07-10 16:31:48

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

weyk による投稿:

こつというか意識というか。私自身が失敗しない為にとっている方法ですが・・・

 ファイルの削除や更新などの操作の際で、ワイルドカード(?と*)を使用する場合、常に、実際に実行するつもりと同じ指定の仕方で、先にls -ladなどで確認すると良いです。これは、常に更新や削除の操作とセットで不可分と意識しておいても良いかもしれません。

なるほど、今度からそうします!

オフライン

 

#14 2009-07-10 17:37:21

hotohoto
メンバ
登録日: 2009-07-04

Re: postfix の削除でファイルをどこから探して消して

ry による投稿:

#4 の tmin さんの[蛇足]とおっしゃる件で
postfix-ldap、postfix-mysql、postfix-pcre、postfix-pgsql、postfix-cdb のパッケージは何を目的に入れたのか疑問だったりする
せいぜいどれかひとつ入れる程度だろうに...

synaptic を使ったときに postfix を検索語に入れたとき
綺麗に並んでいたので全部まとめて必要なのかと思い
入れてしまったものです。

いまはそこいらを全部消してみて、PCの動作が少し軽くなったような感じがします。

オフライン

 

#15 2009-07-10 18:19:59

tmin
メンバ
登録日: 2008-12-07

Re: postfix の削除でファイルをどこから探して消して

ryさん による投稿:

*.postinst ファイルは /var/lib/dpkg/info ディレクトリにあるはずです
それと、*.postinst 以外に *.preinst、*.prerm、*.postrm が (もしあれば) 一緒に削除してしまう方が確実です
また *.deb ファイルを消す必要はありません (このファイルが破損しているなら別ですが)

ご指摘ありがとうございます。私も新たに勉強になりました。

hotohotoさん、手順に誤りがあり申し訳ないです。
解決おめでとうございます。

オフライン

 

#16 2009-07-10 21:51:03

n_saito
メンバ
登録日: 2009-06-23

Re: postfix の削除でファイルをどこから探して消して

hotohoto による投稿:

ry による投稿:

hotohotoさん による投稿:

myname@sv1:/var/lib/dpkg/info$ sudo rm  *.prerm

これ↑、実行しちゃったんですか!?
既にインストールされている (postfix以外の) パッケージの削除とかアップグレードのときに、不具合が発生する可能性が極大です

何を消すのかを理解していない状態で、無闇に * を使って削除するのは止めましょう.... って やっちゃったんだよなぁ、きっと

はい やっちゃいました(笑)
今のところ 問題なく 動いているようです。

いや、動いてるでしょうけど、パッケージで一部(というか多数)の削除時に多大なる影響がでますよ。
*.prermはパッケージ削除を実行した時に、実際のパッケージでインストールされたファイル群を削除する前に、何かしらシステムに関わる設定を変更したりするスクリプトなので、削除を実行した段階でその後のシステムの動きはまるっきり保証されません。

つまり、この先サーバを立ててどうこうってことをやりたいのであれば、再インストール推奨どころか必須かと。

# パッケージのreinstallすれば...とか考えてみたけど、そもそも全部reinstallとかになるだろうから、再インストールしたほうがマシという結論なわけですが。

> アドバイスした方々
そもそも

hotohoto による投稿:

postfix: fatal: /etc/postfix/postfix-script: No such file or directory

ってエラーメッセージが最初に出てきているので、こういう場合は
dpkg -S /etc/postfix/postfix-script
とかでパッケージに含まれていたはずのファイルを調べることを先にしたほうが良いでしょう。

この場合はちゃんと postfix にあることを調べられますので、epiiさんのおっしゃるとおり、postfixの再インストールで解決した可能性が高いです。
コマンドライン等は記述されていませんでしたが、
sudo apt-get --reinstall install postfix
ないしは
sudo aptitude reinstall postfix
でOKだったと思われます。

/var/lib/dpkg/info/ 以下のパッケージシステム向けファイルをいじるのは、「パッケージングがタコすぎる」場合以外はやらない方向でアドバイスをされることをおすすめします。
でないと、せっかくのアドバイスがリアルにアダになってしまいますので...。

オフライン

 

#17 2009-07-11 08:57:56

ry
メンバ
登録日: 2008-07-30

Re: postfix の削除でファイルをどこから探して消して

n_saitoさん による投稿:

> アドバイスした方々
そもそも

hotohoto による投稿:

postfix: fatal: /etc/postfix/postfix-script: No such file or directory

ってエラーメッセージが最初に出てきているので、こういう場合は
dpkg -S /etc/postfix/postfix-script
とかでパッケージに含まれていたはずのファイルを調べることを先にしたほうが良いでしょう。

この場合はちゃんと postfix にあることを調べられますので、epiiさんのおっしゃるとおり、postfixの再インストールで解決した可能性が高いです。

残念ながら #8 で sudo apt-get --reinstall install postfix を実行されており、解決しなかったようです
次善の策としては、パッケージ (deb ファイル) から直接 postfix-script ファイルを抜き出して、復元してやることですが、さすがに難度が高すぎでしょう

今回の質問の状況は、「パッケージングがタコすぎる」のではなく、ユーザーの無知故にパッケージのスクリプトが必須とするファイルなどを削除して、パッケージ管理システム (apt) の手に負えなくなっている状況だと思います
このような場合は、やはり /var/lib/dpkg/info/ にある <パッケージ名>.{preinst,postinst,prerm,postrm} を一旦削除して、以下の手順を踏むのが一番確実だと思っています

コード:

apt-get --reinstall install <パッケージ名> #強制的に必要なファイルを展開
apt-get --purge remove  <パッケージ名> #おかしくなった設定ファイルを含めた全てのファイルを削除
#上記2つのコマンドで、パッケージが綺麗に削除された状態になる
apt-get install  <パッケージ名>  # パッケージの入れ直し

もっとも私のアドバイス自体も sudo apt-get --reinstall install postfix  の結果を知るより前に行っているので、偉そうなことは言えませんが....

オフライン

 

#18 2009-07-11 10:16:21

n_saito
メンバ
登録日: 2009-06-23

Re: postfix の削除でファイルをどこから探して消して

ry による投稿:

残念ながら #8 で sudo apt-get --reinstall install postfix を実行されており、解決しなかったようです

これ見落としていました。m(__)m
後述されていたようにこの時点でpostfix周辺の関係ないパッケージも入っていたことも判りますので、dpkg なりで削除したあとに再度 reinstall という手も取れます。
ただ、そもそも最初にreinstallした時点で上書きされていないのであれば、他の要因が考えられますけど...真実はたぶん追求できなくなってますねw

ry による投稿:

次善の策としては、パッケージ (deb ファイル) から直接 postfix-script ファイルを抜き出して、復元してやることですが、さすがに難度が高すぎでしょう

適切な手順を踏んでいけば、システム全体への影響度上、逆に抜きだしは最善かもしれません。

コード:

aptitude download postfix
dpkg -x postfix*.deb .
sudo cp -p ./etc/postfix/postfix-script /etc/postfix
sudo apt-get -f install もしくは sudo dpkg --configure -a

このようにローレベルでの実行も、適切な手順があれば難度が高いというわけでもないです。

# ar -x posfix*.deb をして出てきた tar 玉の中身を眺めるという究極のローテクもありますがw

このように抜き出して復元するという場合は「無いものを入れる」だけで「正しい状態にあるものを削除した上で改めて入れる」ということではないので、システムへの影響ははるかに少なくなります。
ただ今回は満足に、また適切に情報が出てきていないor出せないので、これで解決できるとも思えませんが...。

ry による投稿:

ユーザーの無知故にパッケージのスクリプトが必須とするファイルなどを削除して、パッケージ管理システム (apt) の手に負えなくなっている状況だと思います

この部分は否定しませんが、

ry による投稿:

今回の質問の状況は、「パッケージングがタコすぎる」のではなく、

私が書いているのは「パッケージグがタコすぎる場合以外は pre*とかpost*を触るな」ですので、

ry による投稿:

このような場合は、やはり /var/lib/dpkg/info/ にある <パッケージ名>.{preinst,postinst,prerm,postrm} を一旦削除して、以下の手順を踏むのが一番確実だと思っています

これはしてはいけないと言っています。

今回のような操作ミス(と言っておきますw)が発生した場合には、取り返しがつきません。
こういう掲示板とかMLなどでのアドバイスで失敗した場合、代わって復旧させるってことができませんから、そういうリスクを考慮・説明しておかないとせっかくのアドバイスがもったいないのです。
成功経験だけの披露も同様で、「なぜかわからないけど、こうしたらうまく動いた。」では他の人の扱うシステムでは逆効果になる場合だってあるわけで...。

# 今回はほぼ同じ状況のサーバからコピーして済むとかの対処方法はあるにしても、そもそも他がないとか、コピーすらできないとかまで誘発したら、やっぱり再インストールでしょうし。

上記のようなパッケージングシステムに影響を与えるようなことをさせるぐらいならば、
dpkg --force-help
で出てくる削除系のオプションを与えるのがベストに近いでしょう。
apt よりもローレベルでピンポイントでどうにかする方法を示してくれます。

ただ、最初の「抜きだし」の方法よりもパッケージシステムの状況を把握・想定できないと、こちらも復旧につながらない可能性は高いですね。

オフライン

 

#19 2009-07-11 13:01:47

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: postfix の削除でファイルをどこから探して消して

n_saitoさん による投稿:

こういう掲示板とかMLなどでのアドバイスで失敗した場合、代わって復旧させるってことができませんから、そういうリスクを考慮・説明しておかないとせっかくのアドバイスがもったいないのです。
成功経験だけの披露も同様で、「なぜかわからないけど、こうしたらうまく動いた。」では他の人の扱うシステムでは逆効果になる場合だってあるわけで...。

賛成です.私は「情報収集の手段」を伝えるだけになるべく止め,
システムに影響を残すコマンドはフォーラムには _できるだけ書かない_ ようにしています.
やたらまわりくどくなって他の皆さんがしびれをきらすことが屡屡です.

今更ですが,ファイルの削除を提案するより,
一時的に別ディレクトリに退避するとか,一時的に名前を変更するとか,
教えてあげれば良かったですね.もちろん,これらも推奨されるものとは言えません.

ところで,今回の件で,私が興味をもったのは以下のくだりです.

コード:

myname@sv1:/var/lib/dpkg/info$ sudo apt-get --reinstall install postfix
... 略 ...
(.../postfix_2.5.5-1.1_i386.deb から) postfix を展開しています...
... 略 ...
postfix: fatal: /etc/postfix/postfix-script: No such file or directory       [fail]
... 略 ...

つまりは /etc/postfix/postfix-script は設定ファイル扱いということなのか?
第3者として,postfix をインストールせずに,それをどうやって調べたらよいのか?

まずは deb ファイルをダウンロードし,postfix-script の存在を確認します.

コード:

$ sudo apt-get --download-only postfix
$ cd /var/cache/apt/archives
$ ls postfix_*
postfix_2.5.5-1.1_i386.deb
$ dpkg-deb -c postfix_2.5.5-1.1_i386.deb | grep script
-rwxr-xr-x root/root      7421 2008-11-05 22:03 ./etc/postfix/postfix-script

次に情報を調べて,

コード:

$ dpkg -I postfix_2.5.5-1.1_i386.deb 
 新形式 debian パッケージ、バージョン 2.0。
 サイズ 1219472 バイト: コントロールアーカイブ = 68194 バイト。
     311 バイト、   11 行      conffiles            
   13223 バイト、  426 行   *  config               #!/usr/bin/perl
    1052 バイト、   18 行      control              
    8017 バイト、  125 行      md5sums              
   16862 バイト、  577 行   *  postinst             #!/bin/sh
    1029 バイト、   46 行   *  postrm               #!/bin/sh
    4332 バイト、  185 行   *  preinst              #!/bin/sh
    1132 バイト、   49 行   *  prerm                #!/bin/sh
     135 バイト、    5 行      shlibs               
  154656 バイト、 1668 行      templates            
... 略 ...

当たり前ながら conffiles はあります.そのリストの確認

コード:

$ dpkg-deb -I postfix_2.5.5-1.1_i386.deb conffiles
/etc/init.d/postfix
/etc/ppp/ip-up.d/postfix
/etc/ppp/ip-down.d/postfix
/etc/network/if-up.d/postfix
/etc/network/if-down.d/postfix
/etc/postfix/postfix-script
/etc/postfix/post-install
/etc/postfix/postfix-files
/etc/rsyslog.d/postfix.conf
/etc/ufw/applications.d/postfix
/etc/resolvconf/update-libc.d/postfix

予想通り /etc/postfix/postfix-script は設定ファイル扱いでした.
「apt-get install --reinstall では設定ファイルが削除されていてもそれを新たに展開はしない.」
と言うことなのでしょうか?
次のヘルプが参考になりそうです.

コード:

$ dpkg --force-help
... 略 ...
confmiss [!]         存在しない設定ファイルを常にインストールする
... 略 ...
警告: [!] のあるオプションを使用すると、インストール時に深刻なダメージを
受ける場合がある。[*] の付いたオプションはデフォルトで有効。

つまり postfix の deb をダウンロードして
--force-confmiss で再インストールが良かった?

n_saito さん による投稿:

# ar -x posfix*.deb をして出てきた tar 玉の中身を眺めるという究極のローテクもありますがw

deb から直接ファイルを展開し確認するには dpkg-deb -x とか dpkg-deb -e が使えるそうです.
ご存知でしたらごめんなさい.

オフライン

 

#20 2009-07-11 13:09:32

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: postfix の削除でファイルをどこから探して消して

deb ファイルをダウンロードするのは
$ sudo apt-get --download-only install postfix
でした.install を抜かしました.

オフライン

 

#21 2009-07-11 13:30:41

ry
メンバ
登録日: 2008-07-30

Re: postfix の削除でファイルをどこから探して消して

n_saitoさん による投稿:

今回のような操作ミス(と言っておきますw)が発生した場合には、取り返しがつきません。

これを主張するのは、「削除系のコマンドを含むアドバイスは避けるべき」との意見に繋がりませんか?
当然、上書きの可能性がある複写系のコマンドも同様ですね

操作ミスを極力避けるために、誤解の余地のないコマンドをそのまま記述しています
それを敢えて、独自に解釈してワイルドカードに置き換えた結果の責は、その本人に帰する以外はないでしょう


一般論として、システムの内部構造に言及するような部分に直接触れないという方針には賛同です >n_saitoさん
本件の解決移行の論は、この方針の例外に足る基準の差違だと思います

オフライン

 

#22 2009-07-11 16:29:15

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: postfix の削除でファイルをどこから探して消して

私もトラブルを起こした prerm か postrm を手動で消したことがあります.
-- スクリプトは吟味して削除しても影響無しと自ら判断しました.

ryさん による投稿:

今回の質問の状況は、「パッケージングがタコすぎる」のではなく、ユーザーの無知故にパッケージのスクリプトが必須とするファイルなどを削除して、パッケージ管理システム (apt) の手に負えなくなっている状況だと思います
このような場合は、やはり /var/lib/dpkg/info/ にある <パッケージ名>.{preinst,postinst,prerm,postrm} を一旦削除して、以下の手順を踏むのが一番確実だと思っています

当初 {post,pre}{inst,rm} 等などの削除の提案を斜め読みしたときも,
「これで解決だな」と実は私も短絡的に思っていたのです.
確かに今回 hotohoto さんがその通りに行動なさっていればおそらく問題はなかったでしょう.
「退避やリネームの方が良かったですね」とは,事が起こってから漸く思い至ったことです.

さらに,あらためて記憶を掘り返して,かつて関わった apt 関連のトラブルを思い出しました.
-- 状況もエラーの様子も異なりますし,
   essential なパッケージの post/pre スクリプトを削除する提案などされないでしょうけれど --

https://forums.ubuntulinux.jp/viewtopic.php?id=4147

このときにエラーを起こしていた
app-install-data.postinst gnome-app-install.postinst
等などの削除が行われていたら,おそらく再インストールしかなくなっていたのではと思いまして,
やはり私はスクリプトを読むなどして「遠回りでもエラーの原因を調査するのを優先しよう」と思い返し,
n_saito さんの発言に賛意を示した次第です.

今更ながらに #1 をもう一度読んでみて,

コード:

Running newaliases
* Stopping Postfix Mail Transport Agent postfix                                                                                        [ OK ]
* Starting Postfix Mail Transport Agent postfix                                                                                               
postfix: fatal: /etc/postfix/postfix-script: No such file or directory
                                                                                                                                        [fail]
invoke-rc.d: initscript postfix, action "restart" failed.

postfix の initscript をちょっとイジって冒頭で exit 0 してしまうようにする.
その状態で --reinstall や purge で正しい(と思える)状態に戻す
のが安全だったのではと思いました.初心の方には難しいでしょうかね?

年のせいか事後に思いつくことが多くなりました.役立たずですね.

オフライン

 

#23 2009-07-11 17:52:57

n_saito
メンバ
登録日: 2009-06-23

Re: postfix の削除でファイルをどこから探して消して

ry による投稿:

n_saitoさん による投稿:

今回のような操作ミス(と言っておきますw)が発生した場合には、取り返しがつきません。

これを主張するのは、「削除系のコマンドを含むアドバイスは避けるべき」との意見に繋がりませんか?
当然、上書きの可能性がある複写系のコマンドも同様ですね

「つながりません」と言い切ることも不可能ではないと思いますが、私が見ている部分は復旧できなくなるリスクと復旧の際の手間です。

# 実際こういう場合は rm コマンドよりは mv コマンドで一つの場所に集めるのがベストなんでしょうけど。(前回書くのを忘れてた...orz

単純なrmコマンドを発行することと、パッケージングシステム上の状況情報が正しい形で削除されるのとではリスクとしては大きく違いますし、今回の上書きも正しい形でのインストールの直後の状態にする形です。
コピーの場合は状況情報はそのままですし、別ファイルで上書きしたとしても、また別ファイルに上書きしたとしても、「原本」となるパッケージを展開したものが残っていますから、復旧させることは削除した場合よりは安全で手間もそんなにかかりませんし。

もちろん、コピーであろうが削除であろうが

ry による投稿:

操作ミスを極力避けるために、誤解の余地のないコマンドをそのまま記述しています
それを敢えて、独自に解釈してワイルドカードに置き換えた結果の責は、その本人に帰する以外はないでしょう

このようなネタが出てきた場合、本人へ責任が帰することは、全く否定しないどころか、肯定しまくります。


それはサテオキ、

einundzwanzighundertsechs による投稿:

deb から直接ファイルを展開し確認するには dpkg-deb -x とか dpkg-deb -e が使えるそうです.

フォローありがとうございます。m(__)m
どうせdpkgが呼び出すからって細かく覚えていなかったじじぃの戯言状態でしたね...orz

オフライン

 

#24 2009-07-11 19:19:00

tmin
メンバ
登録日: 2008-12-07

Re: postfix の削除でファイルをどこから探して消して

私自身、#4の書き込みをさせていただいたのは、この時自分でも手探り状態でしたが何とか復帰できたので、もし参考になればと言う思いからだったのですが、軽率でしたね。混乱を招いてしまって申し訳ないです。
当方環境でこのエラーが起きた際は、apt dpkg関連のコマンドはともにエラーのため全く使えない状態になってしまったので、最悪再インストールになる前にやれるだけやってみようと思い、手探りでの作業の末、何とか復帰できた、と言う経験から、同様のエラーであれば参考になるかもしれない、また、識者の方からより正しい、安全な方法をご指摘、ご指導いただけるかもしれないと考えての投稿だったのですが、この様な場ではふさわしくない判断だったようで大変申し訳ないです。

私も自分のスキルが未熟であることは重々自覚しておりますので、今後もまたこのフォーラムにお世話になることも多々あるかと思いますが、今後はより考えて、軽率な書き込みでご迷惑をかけることのないよう気をつけて参りたいと思います。
ご迷惑お掛けして申し訳ございませんでした。

オフライン

 

Board footer

Powered by FluxBB