Linux 应用程序基础
1 应用程序与系统命令的关系
| 角色 | 系统命令 | 应用程序 |
|---|---|---|
| 文件位置 | 一般在/bin和/sbin目录中,或为Shell内部指令 | 通常在/usr/bin、/usr/sbin 和/usr/local/bin、/usr/local/sbin 目录中 |
| 主要用途 | 完成对系统的基本管理工作,例如IP配置工具 | 完成相对独立的其他辅助任务,例如网页浏览器 |
| 适用环境 | 一般只在字符操作界面中运行 | 根据实际需要,有些程序可在图形界面中运行 |
| 运行格式 | 一般包括命令字、 命令选项和命令参数 | 通常没有固定的执行格式,由程序开发者自行定义 |
2 典型应用程序的目录结构
| 文件类型 | 保存目录 | 说明 |
|---|---|---|
| 普通可执行程序文件 | /usr/bin | 所有用户可执行 |
| 服务器程序、管理程序文件 | /usr/sbin | 只有管理员能执行 |
| 应用程序配置文件 | /etc | 通过rpm或yum方式安装的应用程序 |
| 日志文件 | /var/log | 系统日志 |
| 应用程序参考文档文件 | /usr/share/doc | 关于应用程序的参考文档等 |
| 应用程序手册页文件 | /usr/share/man | 执行文件及配置文件的man手册页 |
3 常见的软件包封装类型
| 文件类型 | 保存目录 |
|---|---|
| RPM软件包 | 扩展名为“.rpm” |
| DEB软件包 | 扩展名为“.deb” |
| 源代码软件包 | 一般为“.tar.gz”、“.tar.bz2”等格式的压缩包 包含程序的原始代码 |
| 绿色免安装的软件包 | 软件包的扩展名不一,以TarBall格式的居多 在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件即可直接使用 |
RPM包管理工具
简介
- 由Red Hat公司提出, 被众多Linux发行版所采用
- 建立统一的文件数据库
- 详细记录软件包安装、卸载、升级等变化信息
- 自动分析软件包依赖关系
RPM命令
RPM软件可以实现几乎所有的功能,新增,删除,更新等
1 查询
1.1 查询已安装的RPM软件信息
| 选项 | 功能效果 |
|---|---|
| rpm -qa(all) | 显示当前系统中以 RPM 方式安装的所有软件列表 |
| rpm -q 软件名 | 查询指定软件是否已安装 |
| rpm -qi 软件名 | 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 |
| rpm -ql(list) 软件名 | 显示指定的软件包在当前系统中安装的所有目录、文件列表 |
| rpm -qc (configfiles ) 软件名 | 列出已安装的指定软件的配置文件 |
| rpm -qd(docfiles) 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
| rpm -qR (requires) 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
| rpm -qf(file) 软件名 | 查看指定的文件或目录是由哪个软件包所安装的 |
1.2 查询未安装的RPM软件信息
| 选项 | 功能效果 |
|---|---|
| rpm-qpd | 查询未安装指定软件包的文档位置 |
| rpm -qpi | 查询未安装指定软件包的完整名称详细信息 |
| rpm -qpl | 查询未安装指定软件包的文件列表 |
| rpm -qpc | 查询未安装指定软件包的配置文件位置 |
2 安装卸载升级
基本格式
rpm [选项] rpm软件包
| 选项 | 效果 |
|---|---|
| -i | 安装一个新的RPM软件包 |
| -U | 升级某个软件包,若未安装过则进行安装 |
| -F | 升级某个软件包,若未安装过则直接结束 |
| -h | 在安装或升级过程中已#号显示读条 |
| -v | 显示安装过程的详细信息 |
| --force | 强制安装某个软件包 |
| -e 软件名 | 卸载指定的软件 |
| --nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
3 维护 RPM 数据库
1.重建RPM数据库
当RPM 数据库发生损坏,可通过重建RPM数据库修复
rpm --rebuild 或者 rpm --initdb
2.导入验证公钥
在没有导入用于数字签名验证的公钥之前,安装光盘中的一部分RPM 包时会报错。需要向RPM数据库中导入位于光盘根目录下的公钥文件。
4 挂载
格式:mount设备 文件夹路径 (已存在且是空的文件夹,原来的数据将被隐藏)
规则:
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个挂载设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
选项:
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
源代码编译安装
优缺点
优点:
- 契合系统,兼容性较强
- 如何可以看懂源代码,可以修改新增功能
- 安装使用比较自由 缺点:
- 如果编译出现问题,又不懂源代码,就无法解决问题
- 安装过程比较复杂
- 没有统一管理人员
步骤流程
- 解压源码包
- 运行configure脚本,选择安装目录,检查安装环境
- 将源码编译成二进制语言
- 将二进制数据写入硬盘,安装进系统