ubuntu软件包管理机制

ubuntu软件包详解

一、简单介绍
Ubuntu Linux采用了Debian的软件包管理机制。由于软件包具有易用性、灵活性和扩展性的特点,再加上再加上Internet的支持,使用户随时都能拥有最新的 Ubuntu系统,这也是Ubuntu受到推崇的一个重要原因。因而,Deb软件包管理也成为Ubuntu中最有活力的部分。本章将介绍ubuntu软件包管理器。

二、目前流行的两种软件包管理机制

最初,基于Linux系统的开发者在完成应用程序的开发之后,将很多的二进制文件发送给用户。因此,DebianLinux首先提出“软件包”的管理机制——Deb软件包,将应用程序的二进制文件、配置文档、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。

随即,RedhatLinux基于这个理念推出了自己的软件包管理机制——Rpm软件包。当然,RedhatLinux采用了自己的打包格式生成Rpm包文件,由Rpm包管理器负责安装、维护、查询,甚至软件包版本管理。由于RedhatLinux系统的普及,Rpm软件包被广泛使用,甚至出现第三方开发的软件管理工具,专门管理Rpm格式的软件包。

ubuntuLinux系统的软件包管理机制延续了Debian的包管理方法。

三、目前流行的两种软件包管理机制

<1>简介

Debian包文件包含了二进制可执行文件、库文件、配置文件和man/info帮助页面等文档。通常Debian包文件的后缀为.deb,因此称为“Deb软件包”。Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)。

●二进制软件包(BinaryPackages):包含可执行文件、库文件、配置文件、man/info页面、版权声明和其他文档。

●源码包(SourcePackages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。

注:我们可以在/etc/apt/source.list中来查看我们的两种包类型


打开之后的页面,

二进制/源码包访问的地址ubuntu发行版本的一种软件包组件


<2>软件包的命名规则

在UbuntuLinux中,软件包的命名遵循以下约定:


软件包名:g++

软件版本:4.1.2

修正版本:9

体系架构:i386

包类型:deb包

软件包:g++_4.1.2-9ubuntu2_i386.deb

<2>软件包的安装工具简介

(1)dpkg软件包管理(本地安装)

1.1概念了解

我们常常使用的软件包管理工具有两种,一种叫做dpkg软件包管理工具,它是”debianpackage”的简写,是Debian软件包管理器的基础。它是最早的deb软件包管理工具,他在DebianLinux一提出软件包管理模式后就诞生了。使用dpkg可以实现软件包的安装、编译、卸载、查询,以及应用程序打包等功能。但是由于当时Linux系统规模和Internet网络条件的限制,我们使用dpkg安装软件包的时候需要考虑软件包之前的依赖关系。也有人把它叫做本地安装工具。总之,dpkg是一个底层的软件包管理系统,主要用于对已下载到本地和已安装的软件包进行管理.


图1.1软件包依赖关系

基于这个特性,我们的dpkg安装一般来说有可能要安装多个软件包。而我们linux系统中的依赖关系相对复杂,因此就定义了一个依赖关系表。


图1.2依赖关系表

既然有了依赖关系,那么我们肯定会安装多个软件包,那么哪个软件包先安装,那个软件包后安装呢?于是,这里就又有了一个叫做优先级的说法。Ubuntu中为每个软件包指定了一个优先级,作为软件包管理器选择安装和卸载的一个依据。下图中有关于优先级的描述。


1.2 dpkg命令详解

特点:不会检查软件包之前的依赖关系。故可能安装多个软件包。

A.安装软件

sudodpkg-i软件包[安装单个软件包]

或者

sudoapkg-i*.deb[多个软件包一起安装]

例如:sudodpkg-inano_2.2.6-1_i386.deb

B.移除已经安装的软件包

sudodpkg-r软件包名

例如:sudodpkg-rnano

C.移除已安装的软件包及配置文件

sudodpkg-P软件包名移除已安装的软件包及配置文件

D.列出软件包在系统所安装的文件

sudodpkg-L软件包名

E.列出软件包安装状态

sudodpkg-s软件包名


例如:

我们以这个nano软件包来举例。

A.安装软件包



B.卸载软件包(普通卸载)



C.查看系统所在的残留文件


D、完全卸载(把残留文件也卸载)



(2)apt-get软件包管理(联网安装

1)镜像站点服务器

APT系列工具可能是Deb软件包管理工具中功能最强大的。它会自动检测软件包之间的依赖关系。因为它采用了集中式的软件仓库的机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。(可理解为我们上网的时候,有很多的网站,网站中有一些下载的链接,这里下载的链接中就又很多的软件包,这就是软件包仓库,这里的镜像站点服务器可理解为下载的网站)。这些镜像服务器就是它们的软件源(下载网站的集合

我们可以在/etc/apt/source.list中来查看我们的软件源。这个路径就叫做镜像站点服务器


内容如下:



2)索引文件

我们的镜像站点服务器只是告诉了我们。我们的软件包应该在哪里去下载。但是我们这些镜像站点具体拥有哪些资源,对我们来说,不是很清楚。如果,我们每安装一个软件包就到我们的服务器上去寻找一遍,这样的话效率就太低了。因此,我们提出了一个概念,叫做索引文件。它的本质就是我们为服务器上的软件资源在本地列了一个清单,以便于主机进行查询操作。(可理解为网站服务器在本地的缓存)。

我们可以在/var/lib/apt/lists/这个目录来查看



2)下载软件包存放的路径

我们在windos上下载软件的时候,一般是会把.exe的安装包下载到一个指定的路径,然后双击它进行安装。我们的ubuntu也是一样的。只不过这个下载路径是固定的。

我们可以到/var/cache/apt/archives这个目录下来查看我们的软件包



2)安装命令

A.安装软件

sudoapt-getinstall软件包名

B.卸载软件

sudoapt-getremove软件包名

C.更新索引文件

sudoapt-getupdate

D.清空存放下载软件包的目录

sudoapt-getclean


例如:

以sl为例来讲解

A、安装软件



运行看看:




B、卸载软件



C、更新索引文件(相当于跟新一下缓存)



更新缓存相当于从网站上获取最新的资源列表,若是有的使用使用apt-get,不能正常下载软件包的时候,更新下缓存试试!

D、清除已经下载好了的软件包



可以发现,我们执行apt-get clean命令后,我们下载的sl软件包已经包删除了!


总结:三个重要的路径

/etc/apt/sources.list[文件]->镜像站点服务器地址(可以理解成软件包的下载网站)

/var/lib/apt/lists[目录]->每个镜像站点软件包的索引文件(可以理解成我们软件包下载 网站具体内容的缓存,例如:软件版本,软件名等等)

/var/cache/apt/archives[目录]->下载下来软件包存放路径

原理:我们使用apt-get命令下载文件的时候,默认是在镜像站点软件包的索引文件中查找该软件的一些信息,当我们找到索引文件中的软件信息之后,就进入了我们的镜像站点服务器地址来下载我们需要的软件,下载的文件存放在/var/cache/apt/archives目录下。


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值