问题:
最近执行
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
