Linux下的软件包管理

在linux中软件管理一共有两种管理方法,即dpkg和apt,dpkg不能自己根据软件的所需安装全部的依赖,apt可以连接互联网进行软件包更新。

三个比较重要的文件

  • /etc/apt/sources.list 软件源的存放

  • /var/lib/apt.lists/* 本地的存放位置

  • /var/cache/apt/archives 缓存目录

本部分用到的命令如下

  • file +软件包 查询他的软件包的类型

  • dpkg 软件管理

    • dpkg + i <软件包> 安装软件包

    • dpkg + r <软件包> 删除软件包

    • dpkg + P <软件包> 彻底删除软件包

    • dpkg + L <软件包> 列出安装的软件包清单(用它可以找到这个软件包的安装位置

    • dpkg + s <软件包> 展示软件包当前状态

一:deb软件包管理

1)软件包管理机制

  • Debian(Deb软件包)

    • 将程序的二进制文件,配置文件,man/info文件打包在一个压缩包中,使用dpkg命令完成获取,安装,卸载,查询等操作。

  • Rpm

    • rpm命令,全称为Red Hat Package Manager,是用于管理Linux各项套件的程序。它最初是由Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎,逐渐受到其他发行版的采用。(但是有些Linux版本不支持这个就需要使用到sudo apt installl rpm下载)

  • APT 软件管理器

    • Internet上的软件源下载最新的软件包元数据、二进制包或源代码

    • 利用下载到本地的软件包元数据,完成软件包的搜索和系统的更新

    • 安装和卸载软件包时自动寻找最新版本,并自动解决软件的依赖关系

2)软件包类型

        

(1)二进制软件包(deb)。

(2)源码包(deb-src)编译,处理 核心区别就一个:一个能拿来直接用,一个需要自己编译。

file命令
file +软件包 查询他的软件包的类型

#软件包的命名

  Filename_Version-Reversion_Architecture.deb

    软件包名 软件版本 修订版本 体系架构

软件包管理工具(远程服务器)

类别

常用工具

描述

命令行

dpkg,apt

在命令行模式完成各项操作,

文本窗口

dselect,sptiude,tasksel

在文本窗口中,使用窗口完成

图形界面

synaptic

类似与win的可交互性好

3)dpkg相关命令

dpkg - i <包名> 安装软件(第一个下划线前是软件名称)

dpkg - r <包名> 删除软件包

dpkg - P <包名> 移除软件包的配置文件

dpkg -L 列出安装的软件包清单(用它可以找到这个软件包的安装位置)

dpkg -s 显出软件包的安装状态

*dpkg和apt管理器有啥区别

  • dpkg没有考虑软件包依赖关系(没有网的情况下,需要自己先下载好,自己设立依赖关系)

  • apt +上互联网,可以把软件的全部依赖都可以装上,有网就好了。

二:APT软件包管理

1)APT工作原理

软件源:将各种各样的软件存放在软件仓库里面,再分别建立镜像服务器,我们通过调用镜像服务器就可以下载各种软件,这些就叫做软件源。(集中式软件仓库机制)

工作原理:

  • /etc/apt/sources.list 软件源仓库

  • 列出能够访问的镜像地址,(但是安一个就全部找一遍效率比较低下)所以apt的作用就是管理这些软件资源,建立索引,便于我们的主机查询。(有点类似于哈希表查找)

所以这个时候就听出来了更换软件源(使用linux的第一步就是换源)

  • 合适的软件源能够很快的下载文件,不合适的软件源就会出现下载失败等各种错误。

2)APT软件源的修改

根据对他维护人员的不同可以分为官方维护的开源软件,社区开源软件,官方维护不开源(商业化)软件,以及多元化等。

对于使用ubuntu系统来说,装好系统的第一步就应该是更换合适的软件源,才能够包子我们有一个合适的下载镜像。具体修改软件源如下所示。

修改软件源(每一次换新的)

  • 打开软件源的存放文本文件

sudo vi /etc/apt.sources.list //打开这个文本文件
:wq保存之后
apt-get update //更新我们的索引

为什么要换源呢:
/var/lib/apt.lists/* 本地的存放位置

3)APT的常用指令

(1)apt子命令

  • 语法:sudo apt-get +子命令

子命令

功能描述

update

下载更新软件包

upgrade

将系统的所有软件包升级到最新的版本

install

下载所需的软件包并进行相关配置

remove

卸载软件包

autoremove

卸载不满足依赖的软件包

source

下载源码

build-dep

为源码包构建编译环境

dist-upgrade

发布版本升级

dselect-upgrade

根据dselect选择进行软件包升级

clean

删除缓存区中下载的包文件

autoclean

删除缓存区老版本的已下载文件

check

检查系统依赖关系的完整性

(2)软件依赖关系的破坏或者冲突解决

  • sudo apt-get check 检查软件包之间的依赖关系。

    • 当软件正在下载的时候,突然断网,导致软件包只有部分安装,此时软件不能重装也不能卸载

    • 解决方案:使用sudo apt-get -f install 就会自动下载剩余的依赖文件。(他两是组合命令)

*但是他只会自动下载强依赖(depends),不会主动下载推荐(recommends)和建议(suggests)的软件包。

(3)apt三板斧 修复+下载+全部更新

sudo apt-get -f install
sudo apt-get update //下载更新软件包
sudo apt-get upgrade //所以软件包一次性升级

(4)使用apt来安装卸载

  1. 安装部分:

命令: sudo apt-get install +软件包名

  sudo apt-get reinstall 重新安装(加一个re)

  • 扫描本地的索引(软件源)sudo apt-get update

  • 依赖关系检查,安装需要的依赖软件

  • 从站点下载软件包+依赖

  • 解压软件包,自动完成程序安装和配置

  1. 卸载部分

命令:sudo apt-get remove +软件包名

sudo apt-get purge remove 彻底卸载

  1. 清除缓冲区(ros开发中缓冲区过多会导致卡死)

命令:sudo apt-get clean+软件包名

sudo apt-get auto clean+软件包名 只保留最新版软件缓存

/var/cache/apt/archives 缓存目录

补充:rm指令也可以删除,但是需要明白具体路径。(否则就可能出现自己把电脑干崩溃掉)

(5)查询软件包的信息

  • 获取详细信息show

命令:sudo apt-cache show

作用:获取软件包的详细信息包括,安装状态,版本,依赖关系

  • 查询安装状态

命令:sudo apt-cache policy (警察)

作用:查询软件包的安装状态(dpkg -s)和这个命令差不多

依赖冲突

查询依赖那些软件包就是用

sudo apt-cache depends 查询自己依赖那些

sudo apt-cache rdepends查询自己被那些依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值