linux包管理apt-get、dpkg



解决依赖包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具

程序包管理器:
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
Redhat Package Manager

apt-get和dpkg区别?
两者的区别是dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装。
(1) ddpkg 是本地安装,需要把deb 安装包下载下来,但不会解决模块的依赖关系,且不会关心Ubuntu的软件仓库内的软件。
(2) apt-get 是通过网络安装的,会解决和安装模块的依赖问题,并会咨询软件仓库, 但不会安装本地的deb文件, apt是建立在dpkg之上的软件管理工具。。

一、apt-get

1. apt源

(1) sources.list

使用apt-get命令的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。
把它们的地址加入,apt-get就能搜索到我们想要的软件。
/etc/apt/sources.list是存放这些地址列表的配置文件。
我们常用的Ubuntu就是一个基于Debian的发行,我们使用apt-get命令获取这个列表。
在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。
此外您需要定期运行这一命令以确保您的软件包列表是最新的。

第一字段,是deb或deb-src,表示直接通过.deb文件或者源文件的方式来进行安装;
第二字段,即deb和deb-src字段后是一段URL,这是软件源的地址;
第三字段,即URL后的字段,是在URL路径中dists目录下对应的文件夹
在这里插入图片描述在这里插入图片描述在这里插入图片描述

(2) 更改源为阿里源

1)获取ubuntu代号(Ubuntu的开发代号一直遵循既定规律,即使用首字母相同的形容词加动物名词的双单词组合方式。Ubuntu 12.04的开发代号Precise Pangolin均以P开头,因此其下一代版本的名称就以Q开头。)
查看ubuntu详细信息:lsb_release -a
在这里插入图片描述
2)更改为阿里源(备份自带的源,然后在原文件后边追加)
deb http://mirrors.aliyun.com/ubuntu/ zesty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ zesty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ zesty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ zesty-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ zesty-proposed main restricted universe multiverse

3)无论你更新为哪个源,需要运行以下命令使其生效
apt-get update
其他源:
清华大学源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

2. apt-get update

apt-get相关的有两个重要文件:
/etc/sources.list,
/var/lib/apt/lists/目录.
当我们执行apt-get update程序分析sources.list看这个文件里是否有对应的Packages/Sources/Release列表文件,如果有更新则下载之,存入/var/lib/apt/lists/目录(其实就是保持与当前系统版本软件源表最新)。
update 命令应该总是在安装或升级包之前执行

3. apt-get使用方法

参考:
apt-get 命令详解

常用子命令:
update
update 命令用于重新同步包索引文件,/etc/apt/sources.list 文件中的配置指定了包索引文件的来源。更新了包索引文件后就可以得到可用的包的更新信息和新的包信息。这样我们本地就有了这样的信息:有哪些软件的哪些版本可以从什么地方(源)安装。
update 命令应该总是在安装或升级包之前执行。

install
install 命令用来安装或者升级包。每个包都有一个包名,而不是一个完全限定的文件名(例如,在 Debian 系统中,提供的参数是 apt-utils,而不是 apt-utils_1.6.1_amd64.deb)。被安装的包依赖的包也将被安装。配置文件 /etc/apt/sources.list 中包含了用于获取包的源(服务器)。install 命令还可以用来更新指定的包。

upgrade
upgrade 命令用于从 /etc/apt/sources.list 中列出的源安装系统上当前安装的所有包的最新版本。在任何情况下,当前安装的软件包都不会被删除,尚未安装的软件包也不会被检索和安装。如果当前安装的包的新版本不能在不更改另一个包的安装状态的情况下升级,则将保留当前版本。必须提前执行 update 命令以便 apt-get 知道已安装的包是否有新版本可用。
注意 update 与 upgrade 的区别:
update 是更新软件列表,upgrade 是更新软件。

dist-upgrade
除执行升级功能外,dist-upgrade 还智能地处理与新版本包的依赖关系的变化。apt-get 有一个 “智能” 的冲突解决系统,如果有必要,它将尝试升级最重要的包,以牺牲不那么重要的包为代价。因此,distr -upgrade 命令可能会删除一些包。因此在更新系统中的包时,建议按顺序执行下面的命令:
$ apt-get update
$ apt-get upgrade -y
$ apt-get dis-upgrade -y

remove
remove 与 install 类似,不同之处是删除包而不是安装包。注意,使用 remove 命令删除一个包会将其配置文件留在系统上。

purge
purge 命令与 remove 命令类似,purge 命令在删除包的同时也删除了包的配置文件。

autoremove
autoremove 命令用于删除自动安装的软件包,这些软件包当初是为了满足其他软件包对它的依赖关系而安装的,而现在已经不再需要了。

download | -d
download 命令把指定包的二进制文件下载到当前目录中。注意,是类似 *.deb 这样的包文件。

clean
clean 命令清除在本地库中检索到的包。它从 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 目录删除除锁文件之外的所有内容。

autoclean
与 clean 命令类似,autoclean 命令清除检索到的包文件的本地存储库。不同之处在于,它只删除不能再下载的软件包文件,而且这些文件在很大程度上是无用的。这允许长时间维护缓存,而不至于大小失控。

source
source 命令下载包的源代码。默认会下载最新可用版本的源代码到当前目录中。

(1) 安装软件包
 	apt-get install <软件包名>                
 	安装或升级软件包
   	apt-get --reinstall install <软件包名>              
   	重新安装一个软件包
   	很多时候我们需要重新安装一个软件包,比如你的系统被破坏,或者一些错误的配置导致软件无法正常工作。
    -y 选项              
    在需要确认的场景中回应 yes
	多数包在安装前都需要与用户交互,在用户确认后才继续安装。而在自动化的任务中是没办法与用户交互的。
	-y 选项可以在这样的场景中发挥作用,其效果就像是用户确认了一样
(2) 软件升级

update 从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表
upgrade 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次update
dist-upgrade 解决依赖关系并升级(存在一定危险性)

# 更新软件源
$ sudo apt-get update

# 升级没有依赖问题的软件包
$ sudo apt-get upgrade

# 升级并解决依赖关系
$ sudo apt-get dist-upgrade
(3) 卸载软件

apt-get remove <软件包名>
移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件

autoremove 移除之前被其他软件包依赖,但现在不再被使用的软件包
purge 与remove相同,但会完全移除软件包,包含其配置文件

(4) 清除软件包

clean 移除下载到本地的已经安装的软件包,默认保存在/var/cache/apt/archives/
autoclean 移除已安装的软件的旧版本软件包

(5) 软件搜索

当自己刚知道了一个软件,想下载使用,需要确认软件仓库里面有没有,就需要用到搜索功能了,命令如下:

sudo apt-cache search <软件包名>

(6) apt-get常用的参数

-f 修复损坏的依赖关系
-h, --help // 查看帮助文档
-v, --version // 查看 apt-get 的版本
-y // 在需要确认的场景中回应 yes
-s, --dry-run // 模拟执行并输出结果
-d, --download-only // 把包下载到缓存中而不安装
–only-upgrade // 更新当前版本的包而不是安装新的版本
–no-upgrade // 在执行 install 命令时,不安装已安装包的更新
-q 静默安装方式,指定多个q或者-q=#,#表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用
–purge // 配合 remove 命令删除包的配置文件
–reinstall // 重新安装已安装的包或其新版本
–install-suggests 同时安装APT给出的建议安装的软件包

4. source-list文件解读

参考以下:
参考地址

三、dpkg

参考:
dpkg与apt-*详解

1. 查询用法

man dpkg 查看dpkg所有的参数。
dpkg --help

2. 列出所有包

dpkg -l

3. 查询某个文件属于哪个包

dpkg -S package
在这里插入图片描述

3. 显示包的详细信息

dpkg -s package 显示包的详细信息
dpkg -l package 显示包的安装状态、版本、架构、简述
dkpg -L package 安装完包后,可以用此命令查看软件安装到什么地方
在这里插入图片描述

4. 安装包

dpkg -i <.deb file name>

5. 包卸载

dpkg -r package 移除软件 (保留配置)
dpkg -P package 彻底的卸载 包括软件的配置文件

6. 不安装直接查看deb包的内容

dpkg -c package

7. 下载deb包

https://pkgs.org/
https://mirrors.aliyun.com/ubuntu/
在这里插入图片描述source.list目录
在这里插入图片描述deb包目录
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值