参考

http://www.khattam.info/2009/08/04/solved-subprocess-pre-removal-script-returned-error-exit-status-2-error/

我在ubuntu上安装ldap-account-manager的时候出错,

当sudo aptitude install ldap-account-manager

出现如下错误:

  1. Reading package lists... Done
  2. Building dependency tree
  3. Reading state information... Done
  4. Reading extended state information
  5. Initializing package states... Done
  6. Building tag database... Done
  7. The following NEW packages will be automatically installed:
  8. php-fpdf php5 php5-ldap
  9. The following NEW packages will be installed:
  10. php-fpdf php5 php5-ldap
  11. 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
  12. Need to get 108kB of archives. After unpacking 868kB will be used.
  13. Do you want to continue? [Y/n/?] y
  14. Writing extended state information... Error!
  15. E: I wasn't able to locate file for the ldap-account-manager package. This might mean you need to manually fix this package.

当我sudo dpkgdpkg -i ldap-account-manager2.4.all.deb

出现如下错误:

  1. Selecting previously deselected package ldap-account-manager.
  2. (Reading database ... 44030 files and directories currently installed.)
  3. Preparing to replace ldap-account-manager 2.4.0-1 (using ldap-account-manager2.4.all.deb) ...
  4. Unpacking replacement ldap-account-manager ...
  5. dpkg (subprocess): unable to execute old post-removal script: Exec format error
  6. dpkg: warning - old post-removal script returned error exit status 2
  7. dpkg - trying script from the new package instead ...
  8. dpkg: error processing ldap-account-manager2.4.all.deb (--install):
  9. subprocess new post-removal script returned error exit status 10
  10. dpkg: error while cleaning up:
  11. subprocess post-removal script returned error exit status 10
  12. Errors were encountered while processing:
  13. ldap-account-manager2.4.all.deb

这时候,

apt-get remove --purge,apt-get -f install

都不管用了

后来看了一人的解决方案,甚是感激啊。

其实就是将dpkg的status删除,我怎么就没有想到呢?

首先,确定以下命令不能用

  1. sudo aptitude update
  2. sudo aptitude -f install

然后,确定以下命令不能用

  1. sudo dpkg --force all --remove

如果都不行,恭喜你,你的dpkg真的有问题了。

现在开始

1、备份你的dpkg的status

sudo cp /var/lib/dpkg/status ~/backup/dpkg/

2、编辑status文件

sudo vim /var/lib/dpkg/status

3、查找你出问题的软件包,在本文中就是万恶的ldap-account-manager

在vim中

/ldap-account-manager

  1. 6474 Package: ldap-account-manager
  2. 6475 Status: deinstall reinstreq half-installed
  3. 6476 Priority: extra
  4. 6477 Section: web
  5. 6478 Installed-Size: 12268
  6. 6479 Maintainer: Roland Gruber <post@rolandgruber.de>
  7. 6480 Architecture: all
  8. 6481 Version: 2.4.0-1
  9. 6482 Depends: php5 (>= 5.1), php5-ldap, apache | apache-ssl | apache-perl | apache2 | httpd, php-fpdf, debconf (>= 0.2.26) | debconf-2.0
  10. 6483 Suggests: ldap-server, php5-mcrypt, ldap-account-manager-lamdaemon, perl
  11. 6484 Conffiles:
  12. 6485  /etc/ldap-account-manager/shells newconffile
  13. 6486  /etc/ldap-account-manager/config.cfg newconffile
  14. 6487  /etc/ldap-account-manager/passwordMailTemplate.txt newconffile
  15. 6488  /etc/ldap-account-manager/apache.conf newconffile
  16. 6489 Description: webfrontend for managing accounts in an LDAP directory
  17. 6490  LDAP Account Manager (LAM) runs on an existing webserver.It manages user, group
  18. 6491  and host accounts. Currently LAM supports these account types:
  19. 6492  Samba 2 and 3, Unix, Kolab 2, address book entries, NIS mail
  20. 6493  aliases and MAC addresses. There is a tree viewer included to
  21. 6494  allow access to the raw LDAP attributes. You can use templates
  22. 6495  for account creation and use multiple configuration profiles.
  23. 6496  Account information can be exported as PDF file. There is also
  24. 6497  a script included which manages quotas and homedirectories.
  25. 6498 Homepage: http://lam.sourceforge.net/

4、全删除整个关于ldap-account-manager的package,保存退出

5、保证格式

保证下一个package和上一个package中间有一行空行。

6、现在已经找不到ldap-account-manager包了,重新安装。当然aptitude已经可以正常使用了。

Ubuntu下,dpkg安装出错的修复的更多相关文章

  1. Ubuntu下dpkg安装软件遇到包依赖问题的处理方法

    造冰箱的大熊猫@cnblogs 2019/9/10 向灵魂工程师致敬! 在Ubuntu环境下通过dpkg命令安装deb包时,如果遇到包依赖问题,如 $sudo dpkg -i xxx.deb (Rea ...

  2. Ubuntu使用dpkg安装软件依赖问题解决 ubuntu-tweak ubuntu 16.04 LTS 系统清理

    Ubuntu使用dpkg安装软件依赖问题解决 这里以在ubuntu 16.04安装Ubuntu Tweak为例进行说明,通常安装包依赖问题都可以用这种方法解决: sudo apt-get instal ...

  3. Ubuntu下软件安装方式、PATH配置、查找安装位置

    Ubuntu 18.04, 安装方式 目前孤知道的Ubuntu下安装软件方式有3种(命令): 1.make 2.apt/apt-get 3.dpkg 方式1基于软件源码安装,需要经历配置(可选).编译 ...

  4. Ubuntu下nagios安装(来源官网)

    Ubuntu下nagios安装(来源官网) https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/toc.html h ...

  5. Ubuntu下Zabbix安装及使用问题

    1.configure: error: MySQL library not found MySQL library not found root@kallen:~# apt-get install l ...

  6. Ubuntu下手动安装vscode

    Ubuntu下手动安装vscode1.下载vscodewget https://vscode.cdn.azure.cn/stable/553cfb2c2205db5f15f3ee8395bbd5cf0 ...

  7. [转]:Ubuntu 下Apache安装和配置

    [转]:Ubuntu 下Apache安装和配置_服务器应用_Linux公社-Linux系统门户网站  https://www.linuxidc.com/Linux/2013-06/85827.htm ...

  8. Ubuntu下编译安装postgreSQL 10.5

    Ubuntu下编译安装postgreSQL 10.5 ubuntu 16.04 LTS系统postgreSQL 10.5 安装包准备 1.从PostgreSQL官网下载PostgreSQL的安装包 安 ...

  9. 在Ubuntu下编译安装GreatSQL

    在Ubuntu下编译安装GreatSQL 本次介绍如何利用Docker构建Ubuntu环境,并将GreatSQL源码编译成二进制文件. 1.准备工作 先创建本次Docker的workdir为 /dat ...

随机推荐

  1. Python实现天数倒计时计算

    tips:在datetime模块里有一个计算时间差的 timedelta.让两个datetime对象相减就得到timedelta ###--Python实现天数倒计时计算 #tips:在datetim ...

  2. 堆 C语言实现

    1.基本概念 堆分为小根堆和大根堆,对于一个小根堆,它是具有如下特性的一棵完全二叉树: (1)若树根结点存在左孩子或右孩子,则根结点的值(或某个域的值)小于等于左右孩子结点的值(或某个域的值) (2) ...

  3. windows添加开机启动项

    http://www.cnblogs.com/jokey/archive/2010/06/17/1759370.html添加开机启动项(通过注册表) 例子:增加QQ开机启动项 第一步:找到注册表的启动 ...

  4. Android 判断SD卡是否存在及容量查询

    Android 判断SD卡是否存在及容量查询的简单方法如下: 首先要在AndroidManifest.xml中增加SD卡访问权限 <!-- 在SDCard中创建与删除文件权限 --> &l ...

  5. shutdown 与 close 函数 的区别

    假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据 ...

  6. GO1.6语言学习笔记2-安装配置及代码组织

    一.关于GO开发环境的安装和配置        在linux环境中安装编译好的go安装包,参考官方指南的步骤一步步走下来就可以了.需要注意的是以下几个环境变量的配置:        GOROOT - ...

  7. 软件测试自动化之- API Test

    API测试 从本质上来说,API测试是用来验证组成软件的那些单个方法的正确性,而不是测试整个系统本身. API测试也被称为单元测试(Unit Testing), 模块测试(Module Testing ...

  8. mysql InnoDB 的行锁

    表的引擎类型必须为InnoDB才可以进行此操作. 相关链接:http://www.cnblogs.com/CyLee/p/5579672.html 共享锁:单独运行前两句,然后新建一个会话使用第三句. ...

  9. jenkins 发送邮件模板

    jenkins 发送邮件模板 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  10. Jeecg 如何执行批量insert或者update操作,高效率

    方法:org.jeecgframework.core.common.dao.jdbc.SimpleJdbcTemplate.batchUpdate     原理: 基于springjdbc封装,批量提 ...