【ubuntu】E: The method driver /usr/lib/apt/methods/http could not be found

问题:

最近执行

apt-get install
apt-get update
apt-get upgrade

都会报下面的错
在这里插入图片描述
令人头大

E: The method driver /usr/lib/apt/methods/http could not be found.
N: Is the package apt-transport-http installed?

去/usr/lib/apt/methods/一看,好家伙,果真是什么都没有,怎么办呢
在这里插入图片描述

前言

网上的教程都是安装apt-transport-https,无非就是从ubuntu软件安装包官网下载合适版本的apt-transport-https,然后再安装进去。
可他叫我安的是http啊,算了,先安个https试试吧。
在这里插入图片描述
试过了,可惜没用
还是一直提示/usr/lib/apt/methods/http 没有,要安装apt-transport-http。
去/usr/lib/apt/methods/一看,好家伙,果真还是什么都没有,怎么办呢?

尝试1:卸载apt再重装

找了半天不知道怎么卸载apt,网上卸载了apt的基本都是在装apptitude的时候不小心卸载的
尝试过用dpkg卸载,但会因为包之间的依赖产生错误

dpkg -r apt

卸载失败,那就索性不卸载了,直接重装

尝试2:直接重装apt

1、下载三个包

  • apt lib
  • apt-pkg
  • ubuntu-cloud-keyring

下载地址:ubuntu软件安装包官网
ubuntu-cloud-keyring可能在上面的网站中找不到下载,没关系,去这里下载
http://archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-keyring/

特别注意:3个软件包是有版本依赖关系的,不推荐使用最新的版本,否则会出现版本依赖问题。版本也和gcc的版本有很大关系,因此需要自行选择合适版本进行安装,好在各版本都在以上给出。

2、安装

统一使用命令进行安装

dpkg -i [安装包名称]

需要按照以下顺序安装:
1、ubuntu-cloud-keyring
2、libapt-pkg
3、apt

尝试3:最终解决方案,超简单

找到另一台ubuntu版本一致的服务器,去其/usr/lib/apt/methods目录下,把http,https啥的复制到有问题的服务器就行。好家伙,原来这个目录下有这么多东西。
在这里插入图片描述

因为我的有问题的服务器/usr/lib/apt/methods/下什么都没有,那我直接把整个methods文件拷贝过去得了

scp -r /usr/lib/apt/methods/ guest@19.13.74.119:$(pwd) 

直接这样可能不行,因为要在这个目录(/usr/lib/apt/methods)写东西要sudo权限

改进,先把这些文件传到其他目录中转一下

scp -r /usr/lib/apt/methods/ guest@19.13.74.119:/home/guest

然后去有问题的服务器

sudo cp /home/guest/methods /usr/lib/apt/

这时再执行就不会报错了。

检验

apt-get update

在这里插入图片描述

apt-get upgrade

在这里插入图片描述


版权声明:本文为weixin_43693967原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。