web-dev-qa-db-ja.com

apt-get purgeはどのように機能しますか?壊れたパッケージを1回のパスで削除できなかったのはなぜですか?

ここの指示に従って別の質問を解決するためにdroidcamをインストールしようとしました: Installing DroidCam(Wireless Android Webcam)Client In Ubuntu Via PPA

インストールは、ポストスクリプトエラーで失敗し、ログ全体が見つかりました here

今、私はそれをきれいにし、完全に削除したい。そこで、Sudo apt-get purge droidcamを実行します。しかし、インストールを完全にクリーンアップするために3回実行する必要があることに驚きました。

$ Sudo apt-get purge droidcam        
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  droidcam*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 1,529 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 239094 files and directories currently installed.)
Removing droidcam (1.3-0ubuntu0) ...
rmmod: ERROR: Module v4l2loopback_dc is not currently loaded
dpkg: error processing package droidcam (--purge):
 subprocess installed post-removal script returned error exit status 1
Processing triggers for gnome-menus (3.10.1-0ubuntu5) ...
Processing triggers for bamfdaemon (0.5.1+15.04.20150202-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for desktop-file-utils (0.22-1ubuntu3) ...
Processing triggers for mime-support (3.58ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.14-0ubuntu1) ...
Errors were encountered while processing:
 droidcam
E: Sub-process /usr/bin/dpkg returned an error code (1)

$ Sudo apt-get purge droidcam 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  droidcam
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 1,529 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 239088 files and directories currently installed.)
Removing droidcam (1.3-0ubuntu0) ...

$ Sudo apt-get purge droidcam 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  droidcam*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 239087 files and directories currently installed.)
Removing droidcam (1.3-0ubuntu0) ...
Purging configuration files for droidcam (1.3-0ubuntu0) ...
dpkg: warning: while removing droidcam, directory '/opt' not empty so not removed

$ Sudo apt-get purge droidcam 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'droidcam' is not installed, so not removed
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

私が知りたいこと:

  • なぜ、複数回実行する必要があるのですか?
  • apt-get purge workはどうですか?ただし、apt-get purgeはインストールされたすべてのファイルを1回のパスで削除します。

私の最初の期待は、droidcamが十分にパッケージ化されていないことです。

2
user.dz

このパッケージおよび他の多くのパッケージには、インストール中に問題が発生した後に削除する問題があります。私の解決策は、スクリプトが失敗した場合、/var/lib/dpkg/info/フォルダーを調べます。 4種類のスクリプトがあります

  1. package_name.preinst –インストール前スクリプト
  2. package_name.postinst –インストール後スクリプト
  3. package_name.prerm –削除前スクリプト
  4. package_name.postrm –削除後スクリプト

スクリプトを調べる:通常、問題をすぐに見つけるのは非常に簡単です。多くの場合、開始または停止できない単なるサービスです。または、あなたの場合のように、アンロードされたモジュール。パッケージのみを削除する場合は、問題のコードを削除して、削除を再開します。

非常に問題のある場合時々、スクリプト全体をexit 0行まで削除する唯一の方法があります。 nginx:(

そして @ kos が言うように、行set -eを削除します。しかし、私はテストしたことがありません。

そして、より堅牢なスクリプトの請願を開始します=)


いくつかの例

Brother MFC-8840 debドライバーによって破損したdpkgを削除するにはどうすればよいですか?

AVGエラー(ubuntuの再インストール)

doc-baseのインストールの失敗

3
A.B.