ubuntu修复从python2.7升级python3.5/python3.6导致的问题

在ubuntu上安装MQTT时出错

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

提示No module named "apt_pkg", 是由于python版本曾经从python 2.7切换到python 3.5导致的.

修复方法如下:

cd /usr/lib/python3/dist-packages

ls apt_pkg.cpython*    #这里看下有哪个版本apt_pkg,我这里是3.4,如下

sudo cp apt_pkg.cpython-34m-x86_64-linux-gnu.so apt_pkg.so

之后安装mosquitto出错

sudo apt-get -f install mosquitto

下列软件包有未满足的依赖关系:
 mosquitto : 依赖: libwebsockets3 (>= 1.2) 但是它将不会被安装
 python-oneconf : 依赖: oneconf-common 但是它将不会被安装
 software-center : 依赖: oneconf (>= 0.2.6) 但是它将不会被安装
                   推荐: update-notifier 但是它将不会被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt-get -f install”(也可以指定一个解决办法)。

这里直接修复

sudo apt-get -f install

之后出现大量类似错误

dpkg: 依赖关系问题使得 update-notifier-common 的配置工作不能继续:
 update-notifier-common 依赖于 python-apt (>= 0.6.12);然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 update-notifier-common (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 apt-xapian-index 的配置工作不能继续:
 apt-xapian-index 依赖于 python-apt (>= 0.7.93.2);然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 apt-xapian-index (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 bzr-builddeb 的配置工作不能继续:
 bzr-builddeb 依赖于 python-apt;然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 bzr-builddeb (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 dblatex 的配置工作不能继续:
 dblatex 依赖于 python-apt (>= 0.7.91);然而:
  软件包 python-apt 尚未因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。
                                                                                            因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。
                                                                                                                                                                由于已经达到 MaxReports 限制,没有写入 apport 报告。
        由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                            由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                                                                    由于已经达到 MaxReports 限制,没有写入 apport 报告。
            由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                    由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                                                                        由于已经达到 MaxReports 限制,没有写入 apport 报告。
                由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                    由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                        由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                                                                            配置。

dpkg: 处理软件包 dblatex (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 python-commandnotfound 的配置工作不能继续:
 python-commandnotfound 依赖于 python-apt;然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 python-commandnotfound (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 python-aptdaemon 的配置工作不能继续:
 python-aptdaemon 依赖于 python-apt (>= 0.8.5~ubuntu1);然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 python-aptdaemon (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 python-aptdaemon.gtk3widgets 的配置工作不能继续:
 python-aptdaemon.gtk3widgets 依赖于 python-aptdaemon (= 1.1.1-1ubuntu5.2);然而:
  软件包 python-aptdaemon 尚未配置。

dpkg: 处理软件包 python-aptdaemon.gtk3widgets (--configure)时出错:
 依赖关�由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                            由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                                                                                                    由于已经达到 MaxReports 限制,没有写入 apport 报告。
            ��问题 - 仍未被配置
dpkg: 依赖关系问题使得 oneconf-common 的配置工作不能继续:
 oneconf-common 依赖于 python-apt;然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 oneconf-common (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 python3-oneconf 的配置工作不能继续:
 python3-oneconf 依赖于 oneconf-common;然而:
  软件包 oneconf-common 尚未配置。

dpkg: 处理软件包 python3-oneconf (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 oneconf 的配置工作不能继续:
 oneconf 依赖于 oneconf-common;然而:
  软件包 oneconf-common 尚未配置。
 oneconf 依赖于 python3-oneconf;然而:
  软件包 python3-oneconf 尚未配置。

dpkg: 处理软件包 oneconf (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 python-oneconf 的配置工作不能继续:
 python-oneconf 依赖于 oneconf-common;然而:
  软件包 oneconf-common 尚未配置。
 python-oneconf 依赖于 python-apt;然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 python-oneconf (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 software-center 的配置工作不能继续:
 software-center 依赖于 python-apt (>= 0.8.3ubuntu4);然而:
  软件包 python-apt 尚未配置。
 software-center 依赖于 python-aptdaemon (>= 0.40);然而:
  软件包 python-aptdaemon 尚未配置。
 software-center 依赖于 python-aptdaemon.gtk3widgets;然而:
  软件包 python-aptdaemon.gtk3widgets 尚未配置。
 software-center 依赖于 oneconf (>= 0.2.6);然而:
  软件包 oneconf 尚未配置。
 software-center 依赖于 python-oneconf (>= 0.3) | oneconf (<< 0.3);然而:
  软件包 python-oneconf 尚未配置。
系统中 oneconf 的版本为 0.3.7.14.04.1。

dpkg: 处理软件包 software-center (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 ubuntu-dev-tools 的配置工作不能继续:
 ubuntu-dev-tools 依赖于 python-apt (>= 0.7.93~);然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 ubuntu-dev-tools (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 update-notifier 的配置工作不能继续:
 update-notifier 依赖于 update-notifier-common (= 0.154.1ubuntu6);然而:
  软件包 update-notifier-common 尚未配置。
 update-notifier 依赖于 python-apt;然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 update-notifier (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 update-manager 的配置工作不能继续:
 update-manager 依赖于 update-notifier;然而:
  软件包 update-notifier 尚未配置。

dpkg: 处理软件包 update-manager (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 ubuntu-release-upgrader-gtk 的配置工作不能继续:
 ubuntu-release-upgrader-gtk 依赖于 update-manager;然而:
  软件包 update-manager 尚未配置。

dpkg: 处理软件包 ubuntu-release-upgrader-gtk (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 ubuntu-system-service 的配置工作不能继续:
 ubuntu-system-service 依赖于 python-apt (>= 0.7.0);然而:
  软件包 python-apt 尚未配置。

dpkg: 处理软件包 ubuntu-system-service (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg: 依赖关系问题使得 sessioninstaller 的配置工作不能继续:
 sessioninstaller 依赖于 python-aptdaemon.gtk3widgets;然而:
  软件包 python-aptdaemon.gtk3widgets 尚未配置。
 sessioninstaller 依赖于 python-commandnotfound;然而:
  软件包 python-commandnotfound 尚未配置。

 

解决方法如下:

cd /var/lib/dpkg  
sudo mv info info.bak  
sudo mkdir info

再之后出现大量  dpkg:警告:无法找到软件包 xserver-xorg-input-vmmouse 等等, 实际是由于前面更改info文件夹导致的.

dpkg:警告:无法找到软件包 lib32readline-gplv2-dev 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里

所以很简单, 把现在info/里的所有内容拷贝到info.bak/, 并改回使用原来的info.bak即可.

sudo cp -rf info.bak/ _info.bak/  #做个备份,比较大,如果确认info里没有会覆盖的内容可以不做这步

sudo mv info _info

sudo cp _info/* info.bak/

sudo mv info.bak/ info/

再之后一切正常. 这些操作主要是恢复升级python3.5/python3.6导致的问题.

#正常运行
q@pc:/var/lib/dpkg$ sudo service mosquitto status
mosquitto start/running, process 32387

#测试
q@pc:/var/lib/dpkg$ mosquitto_sub -h localhost -t "mqtt" -v
mqtt Hello MQTT
mqtt Hello MQTT
mqtt Hello MQTT

 

你可能感兴趣的:(ubuntu修复从python2.7升级python3.5/python3.6导致的问题)