良许Linux教程网 干货合集 干货 | 浅析apt、deb背后的一些知识

干货 | 浅析apt、deb背后的一些知识

什么是.deb?

.deb是Debian系列Linux发行版所使用的软件包格式的文件扩展名。在Linux操作系统中,.deb包类似于Windows中的软件包(.exe),通过简单的鼠标点击即可进行安装和使用,无需进行复杂的编译过程。

常见的Linux发行版派系有:

image-20231004220929659
image-20231004220929659

其中,Fedora派系的的软件包是扩展名为rpm的软件包,这里我们不做展开。本篇笔记我们以Ubuntu为例介绍deb软件包。

在Ubuntu桌面版下我们下载一些应用程序deb软件之后可以有两种安装方式,一种是可以直接双击安装deb软件包。另一种是通过命令的方式安装,如:

sudo dpkg -i xxx.deb

dpkg(Debian Packager) 是deb包管理工具,可以用来安装、更新、卸载deb软件包。

卸载命令如:

sudo dpkg -r xxx

什么是apt?

apt(Advanced Package Tool) 也是deb包管理工具。上面提到的dpkg(Debian Packager) 包管理工具主要用于安装我们下载到本地的deb软件包。

而apt包管理工具则可以直接从Ubuntu官方服务器软件仓库中搜索、安装软件到我们的Ubuntu系统,也可以通过apt工具更新、卸载我们的deb软件。

Ubuntu官方软件仓库里的软件都是经过严格审核、质量得到保证的软件包,第三方开发者开发的软件需要通过官方的认证,才能放到官方软件仓库中。

为了能更清楚地了解apt、dpkg包管理工具,我们把手机上安装软件拿来做个对比:

image-20231004220953714
image-20231004220953714
image-20231004220956887
image-20231004220956887

在Ubuntu中使用apt进行安装软件就比如我们手机直接从应用商店里下载软件进行安装,后续应用商店里的软件有更新,也会通知我们进行更新。

Ubuntu中使用dpkg安装软件就比如我们在手机浏览器中下载的软件,需要手动进行安装。

apt与dpkg的区别及联系是:

  • dpkg是用来安装.deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件。
  • apt会解决和安装模块的依赖问题,并会咨询软件仓库,但不会安装本地的deb文件,apt是建立在dpkg之上的软件管理工具。

使用apt安装软件

我们可以使用如下apt命令安装软件:

sudo apt-get install xxx

其中,xxx表示的是需要安装的软件。

比如我们可以输入sudo apt-get install sl命令安装sl软件。sl软件是一个有趣的软件,运行sl命令之后,我们的终端里会出现一辆小火车:

image-20231004221000127
image-20231004221000127
image-20231004221003449
image-20231004221003449

我们输入以上安装sl软件的命令之后,会从官方软件源中下载sl软件并进行安装。Ubuntu官方软件源(repository)地址:

http://cn.archive.ubuntu.com/ubuntu

这个地址被保存到/etc/apt/source.list中。执行sudo apt-get install命令则会从这个文件的服务器地址去下载相应的软件包。

全球各地每个地方的网络环境都不一样,所以就出现了各地的镜像服务器,比如国内的有清华软件源、阿里云软件源、中科大软件源等。

我们可以往/etc/apt/source.list中加入我们国内的一个软件源,这样一来,之后我们使用sudo apt-get install安装软件时就会到我们国内的镜像服务器上下载软件,速度会快很多。

对于带图形界面的Ubuntu,我们也可以在软件更新那里选择镜像服务器,如选择清华软件源:

image-20231004221006556
image-20231004221006556

这里进行选择就会自动地在/etc/apt/source.list增加相关的服务器地址,如:

image-20231004221010105
image-20231004221010105

修改好/etc/apt/source.list文件之后我们需要使用sudo apt-get update命令更新服务器中可以下载的软件列表:

image-20231004221013357
image-20231004221013357

软件列表的一个作用是可以帮助我们更新软件,因为服务器上的软件是不断更新的,就如我们手机应用商店里的软件也在不断更新,若软件有更新则会提醒我们进行更新。

如果我们想要更新软件,可以执行sudo apt-get upgrade来更新已经安装的软件:

image-20231004221017072
image-20231004221017072

最后,卸载软件的命令为:

sudo apt-get remove

制作自己的deb包

必要的时候,我们也可以制作自己的软件包。

deb包就是我们的应用程序软件包,其除了包含有可执行文件,还会包含一些包名、版本号等说明文档。一个deb在制作前需要新建一个文件夹管理一些所需要的文件,如:

image-20231004221020246
image-20231004221020246

其中,usr/local/bin表明deb的默认安装路径为/usr/local/bin(这是系统的“官方路径”)。

默认安装路径我们可以通过修改文件夹名称进行修改,比如把上面的usr/local/bin改为home/ZhengN/则该软件包的默认安装路径就变为/home/ZhengN。

下面我们按照如上结构制作一个hellodeb的deb软件包。为了方便,我们在DEBIAN下添加必要的control文件,其它文件暂时不添加,结构如:

image-20231004221022994
image-20231004221022994

**
**

1、准备一个hellodeb.c文件:

#include 

int main(void)
{
 printf("hellodeb\n");
 
 return 0;
}

使用gcc编译得到一个hellodeb的可执行文件。复制到hellodeb/usr/local/bin文件夹下。

2、准备一个control文件:

Package:hellodeb
Version:1.0
Architecture:amd64
Maintainer:ZhengN
Description:deb test

把control文件存放于hellodeb/DEBIAN目录下。

这时候我们的hellodeb目录下有:

image-20231004221037997
image-20231004221037997

这时候我们可以在hellodeb路径下运行如下命令生成deb软件包:

sudo dpkg-deb -b ../hellodeb ../hellodeb_1.0_amd64.deb
image-20231004221041344
image-20231004221041344

这时候在hellodeb的上级目录生成hellodeb_1.0_x64.deb软件包:

image-20231004221045444
image-20231004221045444

在hellodeb_1.0_x64.deb所在路径执行如下命令安装软件包:

sudo dpkg -i hellodeb_1.0_amd64.deb
image-20231004221048040
image-20231004221048040

这时候hellodeb软件应用已经被安装在了系统的/usr/local/bin路径下:

image-20231004221050408
image-20231004221050408

我们可以在终端任何路径下运行hellodeb程序:

image-20231004221053013
image-20231004221053013

我们可以通过如下命令卸载hellodeb程序:

sudo dpkg -r hellodeb

卸载之后再运行就会报错:

bash: /usr/local/bin/hellodeb: No such file or directory

以上就是本次的分享,感谢阅读。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部