バッシュが覆われています。 Dash を使用すると、apt-get --reinstall install bash がエラーを返します。

バッシュが覆われています。 Dash を使用すると、apt-get --reinstall install bash がエラーを返します。

だから私は/bin/bash誤って愚かなbashスクリプトで上書きしました。前の質問は以下で確認できます。発生した問題を処理するために新しいものを作成するようアドバイスを受けました。要約すると、GUIを使用して基本端末をダッシュ​​に変更してコマンドを実行できました。これで、基本端末を再度変更できるようにbashを再インストールしようとしています。前述のようにbashを実行しているため、再インストールする必要がapt-get --reinstall installあります。ただし、エラーが返されます。

    reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  bash-completion
Suggested packages:
  bash-doc
The following packages will be upgraded:
  bash bash-completion
2 upgraded, 0 newly installed, 0 to remove and 2128 not upgraded.
2 not fully installed or removed.
Need to get 0 B/1,605 kB of archives.
After this operation, 673 kB of additional disk space will be used.
Do you want to continue? [Y/n] (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 307792 files and directories currently installed.)
Preparing to unpack .../archives/bash_4.4-5_amd64.deb ...
dpkg (subprocess): unable to execute old pre-removal script (/var/lib/dpkg/info/bash.prerm): No such file or directory
dpkg: warning: subprocess old pre-removal script returned error exit status 2
dpkg: trying script from the new package instead ...
dpkg (subprocess): unable to execute new pre-removal script (/var/lib/dpkg/tmp.ci/prerm): No such file or directory
dpkg: error processing archive /var/cache/apt/archives/bash_4.4-5_amd64.deb (--unpack):
 subprocess new pre-removal script returned error exit status 2
dpkg (subprocess): unable to execute installed post-installation script (/var/lib/dpkg/info/bash.postinst): No such file or directory
dpkg: error while cleaning up:
 subprocess installed post-installation script returned error exit status 2
Errors were encountered while processing:
 /var/cache/apt/archives/bash_4.4-5_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

また、dpkg --configure bashパッケージの処理中にエラーが発生し、bashは「非常に悪い不一致です。設定を試みる前に再インストールする必要があります」と示しています。

私が実行しているディストリビューションはKali 2.2です。私はすでに情熱的に嫌いなディストリビューションです。なぜなら、bashを上書きするのは間違いだからです。

@Philipposが推奨する新しい投稿です。以前の投稿リンクはここ

答え1

問題は、bash prermスクリプトがbashを使用しているため、実行されていないため、再インストール全体が失敗することです。

この問題を解決する方法はいくつかあります。

1)私のシステム(Debianの不安定性とDebianの安定性)のbash prermスクリプトは非常に簡単で、実行するためにbashを必要としません。したがって、/var/lib/dpkg/info/bash.prerm最初の行を編集してからに変更し#! /bin/bashます#! /bin/sh。また、()を/bin/sh指さないように注意してください。その場合は、すでにインストールされている可能性が高いので、prermファイルを編集して試してみてください。bashls -l /bin/sh/bin/dash

2)prermファイルを削除して再インストールします。 prermファイルはDebian 4.4-5バージョンでは重要な役割を果たさないので、prermファイルを削除して再インストールしてください。

3) ダウンロードしたアーカイブ/bin/bashから解凍できます。.deb出力でパスを表示できます/var/cache/apt/archives/bash_4.4-5_amd64.deb。これはar(1)3つのファイルを含むアーカイブです。

  • debian-binary
  • control-tar.gz
  • data.tar.xz

ファイルは圧縮されない可能性がdata.tarありますxz。 gzip、bzipなどの他の形式があります。ファイルだとしますxz。そうでない場合は、サフィックスとzcatプログラムを適切に置き換えることができます。

.deb次のコマンドを実行してファイルの内容を表示できます。

$ ar t /var/cache/apt/archives/bash_4.4-5_amd64.deb
debian-binary
control.tar.gz
data.tar.xz

data.tar.xz次のコマンドを実行してファイルの内容を表示できます。

$ ar p /var/cache/apt/archives/bash_4.4-5_amd64.deb data.tar.xz | xzcat | tar tvf -
...
./bin/bash
...

/bin/bash以下から抽出できます。

$ cd /tmp
$ ar p /var/cache/apt/archives/bash_4.4-5_amd64.deb data.tar.xz | xzcat | tar xvf - ./bin/bash

。で始まったので、/tmpファイルを/tmp/bin/bashもう一度コピーしてbashを上書きすることができますが、/bin今回は良い内容が含まれます。

dpkgツールを使用してファイルを操作できますが、単純なアーカイブなので、.debdpkg固有のオプションよりも使用方法を覚えやすいです。ar(1)tar(1)

関連情報