嵌入式day10
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
下载软件包分为四步:在使用时无需考虑软件包的版本、优先级、依赖关系等。
-
扫描本地存放的软件包更新列表
#apt-get update
-
进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包
-
从软件源所指的镜像站点中下载相关软件包
-
解压软件包,并自动完成应用程序的安装和配置
重新安装软件包
#apt-get install 软件包名称 --reinstall
卸载软件包
不完全卸载
apt-get remove 软件包名称
会关注那些与被删除的软件包相关的其他软件包,删除一个软件包时,将会连带删除与该软件包有依赖关系的软件包。
完全卸载
apt-get --purge remove 软件包名称
命令在卸载软件包的同时,还删除该软件包所使用的配置文件。
查询软件包描述信息
使用#apt-cache show 软件包名称
命令获取指定软件包的详细信息,包括软件包安装状态、优先级、适用架构、版本、存在依赖关系的软件包,以及功能描述。该命令可以同时显现多个软件包的详细信息。

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