嵌入式day10

从1969年Unix的诞生到1991年Linux的出现,回顾操作系统的发展历史。探讨了GNU与GPL对开源社区的影响,以及Linux内核、Shell、文件系统和实用程序的构成。介绍了Linux发行版如Ubuntu、Redhat和Deepin的特点,以及Debian和Redhat的软件包管理机制。深入解析APT工作原理,展示了如何通过apt-get命令管理和修复软件包依赖关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unix的起源

1969年,由KenThompson在AT&T贝尔实验室发现的。使用的是汇编语言。

1970年,KenThompson和DennisRitchie使用C语言对整个系统进行加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。

GNU&GPL

GNU由Richard Stallman在1984年创建

GPL:General Public License

Linux

LInux是一种操作系统

1991年,芬兰赫尔幸基大学的学生Linus Torvals 为了能在家里的PC机上使用与学校一样的操作系统,开始编写了类UNIX。

Linux发行版本

Solaris,debian,redhat,ubuntu,SUSE,deepin等多个版本。deepin是国产深度操作系统。在国内用做服务器的大部分是redhat,centos,桌面版多半是ubuntu,零基础推荐深度系统(deepin)。

Linux体系结构

Linux操作系统的组件

  • Linux内核

  • Shell

  • 文件系统

  • 实用程序


在这里插入图片描述

选择命令终端窗口

目前,在桌面环境下的命令终端仿真器程序有很多,它们各有特色,都拥有各自的用户群。目前流行的终端窗口有:Xterm、Gnome-terminal、Konsole、Rxvt等。

Ubuntu默认安装的命令终端有Gnome-terminal、Xterm。

流行的两种软件包管理机制

Debian Linux首先提出的“软件包”的管理机制———Deb软件包

将用用程序的二进制文件、配置文档、main/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。

Redhat Linux基于这个理念推出了自己的软件包管理机制———Rpm软件包

随着Linux操作系统规模的不断扩大,系统中软件包间复杂的依赖关系,导致Linux用户麻烦不断。

Debian Linux开发出了APT软件管理器

  • 检查和修复软件包依赖关系

  • 利用Internet网络帮助用户主动获取软件包

APT工具再次促进了Deb软件包更为广泛地使用,成为Debian Linux的亮点。

软件包类型

ubuntu有两种类型的软件包:

  • 二进制软件包(deb)

  • 源码包(deb-src)

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

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

在linux上无法根据后缀名来判断文件类型,使用file命令查看文件类型。

软件包的命名

Filename_Version-Reversion_Architecture.deb

软件包名称_软件版本-修改版本_体系架构

dpkg命令

dpkg -i 软件包名称.deb

参数说明
-i安装一个在本地文件系统上存在的Debian软件包
-r移除一个已经安装的软件包
-P移除已安装软件包及配置文件
-L列出安装的软件包清单
-s显示软件包的安装状态

APT工作原理

Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许多的镜像服务器中,并保持基本一致。镜像服务器就是用户软件园(reposity)。

在ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。

软件源配置文件只是告知ubuntu系统可以访问的镜像站点地址。但那些镜像站点拥有什么软件源并不清楚。为这些软件资源列一个清单(建立索引文件),以便本地主机查询。这就是APT软件包管理器的工作原理。

软件源

根据软件包的开发组织对该软件的支持程度,以及遵从的开源程度,划分为四类:

  • 核心:官方维护的开源软件

  • 公共:社区维护的开源文件

  • 受限:官方维护的非开源文件

  • 多元化:非官方维护的非开源软件

刷新软件源

修改了配置文件——/etc/apt/sources.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,需要将这些资源列个清单,以便本地主机知晓可以申请哪些资源。

使用"apt-get update"命令会扫面每个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。

子命令描述
update下载更新软件包列表信息
upgrade将系统中所有软件包升级到最新的版本
install下载所需软件包并进行安装配置
remove卸载软件包
autoremove将不满足依赖关系的软件包自动卸载
source下载源码包
build-dep为源码包构建所需的编译环境
dist-upgrade发布版升级
clean删除缓存区中所有已下载的包文件

修复软件包依赖关系

由于故障而中断软件安装过程,可能会造成关联的软件只有部分安装之后,用户就会发现该软件既不能重装又不能删除。

apt-get check检查软件包依赖关系

apt-get -f install修复依赖关系

在处理依赖关系上,apt-get会自动下载并安装具有依赖关系的软件包,但不会处理与安装软件包存在推荐和建议关系的软件包。

安装软件包

使用#apt-get install下载软件包分为四步:在使用时无需考虑软件包的版本、优先级、依赖关系等。

  1. 扫描本地存放的软件包更新列表  #apt-get update

  2. 进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包

  3. 从软件源所指的镜像站点中下载相关软件包

  4. 解压软件包,并自动完成应用程序的安装和配置

重新安装软件包

#apt-get install 软件包名称 --reinstall

卸载软件包

不完全卸载

apt-get remove 软件包名称会关注那些与被删除的软件包相关的其他软件包,删除一个软件包时,将会连带删除与该软件包有依赖关系的软件包。

完全卸载

apt-get --purge remove 软件包名称命令在卸载软件包的同时,还删除该软件包所使用的配置文件。

查询软件包描述信息

使用#apt-cache show 软件包名称命令获取指定软件包的详细信息,包括软件包安装状态、优先级、适用架构、版本、存在依赖关系的软件包,以及功能描述。该命令可以同时显现多个软件包的详细信息。

获取软件包安装状态

使用“apt-cache policy 软件包名称”可以获取软件包当前的安装状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值