Ubuntu的包管理器
作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/ 或 http://andyyoung01.16mb.com/
包管理器将软件安装到我们的服务器上。在RedHat/CentOS上,其使用的包管理器为yum和rpm;在Debian/Ubuntu上,我们将讨论apt和dpkg软件包管理器。dpkg是Debian的软件包管理器,类似于RedHat/CentOS系列的rpm。
作为软件包的管理器,它们必须有三个重要功能:
- 安装适用于不同操作系统发行版和操作系统版本的软件。
- 管理软件所需的依赖关系,包括查找和尝试修复依赖关系等问题。
- 添加配置使软件随着服务器的重新启动而正常启动和停止。这包括对软件的进程进行监控,在错误发生时保持软件继续运行。
在Ubuntu 16.04之前,我们使用apt-get和apt-cache命令。在我们曾经使用apt-get install的地方,现在我们使用apt安装。我们曾经使用apt-cache show的地方,现在我们使用apt show。如果你掌握了传统的apt-get、apt-cache命令,很容易切换到更新的apt命令。这里暂且还以传统的apt-get、apt-cache进行讨论。
存储库
APT包管理器在服务器上保存软件安装源列表。每个源都包含存储库列表。存储库作为可用软件包的索引。当您搜索软件包时,Apt将检查此列表来进行安装。
安装源及其存储库清单保存在两个位置:
- /etc/apt/sources.list文件
- /etc/apt/sources.list.d目录下的文件
可以通过更新上述文件或文件夹来更新可用的存储库。
另外,我们可以手动添加第三方存储库,也可以使用add-apt-repository
命令。add-apt-repository
命令将添加一个源到/etc/apt/sources.list文件或/etc/apt/sources.list.d目录。添加的存储库将适用于我们的服务器版本。该命令还可以添加一个密钥,用于验证其中的存储库和包的真实性。
我们可以通过运行sudo apt-get update
来更新Apt对可用包和版本的了解。这将读取存储库列表,并更新可用于安装的软件包和版本。在安装任何软件之前或添加新的存储库后都要运行此操作。这将确保它安装最新的可用版本的软件包。源列表更新后,我们可以根据软件包的名称来安装任何我们想要的软件。
安装软件
1、APT方式
(1)普通安装:apt-get install softname1 softname2 …;
(2)修复安装:apt-get -f install softname1 softname2… ;(-f Atemp to correct broken dependencies)
(3)重新安装:apt-get –reinstall install softname1 softname2…;
2、Dpkg方式
(1)普通安装:dpkg -i package_name.deb
卸载软件
1、APT方式
(1)移除式卸载:apt-get remove softname1 softname2 …;(移除软件包,当包尾部有+时,意为安装)
(2)清除式卸载:apt-get remove –purge remove softname1 softname2…;(同时清除配置)
清除式卸载:apt-get purge sofname1 softname2…;(同上,也清除配置文件)
2、Dpkg方式
(1)移除式卸载:dpkg -r pkg1 pkg2 …;
(2)清除式卸载:dpkg -P pkg1 pkg2…;
查询软件包相关信息
1、APT方式
apt-cache search # ------(package 搜索包)
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解该包被哪些包依赖)
apt-file search filename -----查找filename属于哪个软件包
apt-file list packagename -----列出软件包的内容
apt-file update --更新apt-file的数据库
2、Dpkg方式
dpkg --info "软件包名" --列出软件包解包后的包名称.
dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa)
dpkg -l |grep -i "软件包名" --查看系统中与"软件包名"相关联的包.
dpkg -s 查询已安装的包的详细信息.
dpkg -L 查询系统中已安装的软件包所安装的位置. (类似于rpm -ql)
dpkg -S 查询系统中某个文件属于哪个软件包. (类似于rpm -qf)
dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).
dpkg --listfiles 查询系统中属于该软件包的文件