Linux应用程序基础
Linux源码包
实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的
Linux二进制包
二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。
源码包 VS RPM二进制包
源码包一般包含多个文件,为了方便发布,通常会将源码包做打包压缩处理,Linux 中最常用的打包压缩格式为“tar.gz”,因此源码包又被称为 Tarball。
源码包安装软件具有以下优点:
- 开源。如果你有足够的能力,则可以修改源代码。
- 可以自由选择所需的功能。
- 因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
- 卸载方便。
源码包安装软件的缺点:
- 安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
- 编译时间较长,所以安装时间比二进制安装要长。
- 因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决
1、应用程序与系统命令的关系
| 角色 | 系统命令 | 应用程序 |
|---|---|---|
| 文件位置 | 一般在/bin和/sbin目录中,或为Shell内部指令 | 通常在/usr/bin和/usr/sbin目录中 |
| 主要用途 | 完成对系统的基础管理工作,例如IP配置工具 | 完成相对独立的其他辅助任务,例如网页浏览器 |
| 适用环境 | 一般只在字符操作界面中运行 | 根据实际需要,有些程序可在图形界面中运行 |
| 运行格式 | 一般包括命令字、命令选项和命令参数 | 通常没有固定的执行格式 |
2、典型应用程序的目录结构
| 文件类型 | 保存目录 |
|---|---|
| 普通执行程序文件 | /usr/bin |
| 服务器执行程序文件和管理程序文件 | /usr/sbin |
| 应用程序配置文件 | /etc |
| 日志文件 | /var/log |
| 应用程序参考文档文件 | /usr/share/doc |
| 应用程序手册页文件 | /usr/local/share/man |
3、常见的软件包封装类型
| 文件类型 | 保存目录 |
|---|---|
| RPM软件包 | 扩展名为 ".rpm" |
| DEB软件包 | 扩展名为 ".deb" |
| 源代码软件包 | 一般为 ".tar.gz"、 ".tar.bz2" 等格式的压缩包 包含程序的原始代码 |
| 绿色免安装的软件包 | 软件包的扩展名不一,以TarBall格式的居多,在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用 |
4、RPM包管理工具
Red-Hat Package Manager ———— 由Red Hat公司提出,被众多Linux发行版所采用建立统一的数据库文件(一张对应表将信息写入)详细记录软件包安装、卸载等变化信息,自动分析软件包依赖关系 RPM软件包软件素材参考:www.rpm.org
4.1、RPM软件包,一般命名格式
bash-4.1.2-15.el6_4.x86_64.rpm bash shell环境 版本信息 4.1.2 15发布次数 x86_64硬件
5、RPM命令格式
RPM软件可以实现几乎所有的管理功能,新增,删除,更新等
5.1、查询选项
| 选项 | 功能效果 |
|---|---|
| rpm -qa(all) | 显示当前系统中以 RPM 方式安装的所有软件列表 |
| rpm -q 软件名 | 查询指定软件是否已安装 |
| rpm -qi 软件名 | 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 |
| rpm -ql(list) 软件名 | 显示指定的软件包在当前系统中安装的所有目录、文件列表 |
| rpm -qc (configfiles ) 软件名 | 列出已安装的指定软件的配置文件 |
| rpm -qd(docfiles) 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
| rpm -qR (requires) 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
| rpm -qf(file) 软件名 | 查看指定的文件或目录是由哪个软件包所安装的 |
| rpm-qpd | 查询未安装指定软件包的文档位置 |
| rpm -qpi | 查询未安装指定软件包的完整名称详细信息 |
| rpm -qpl | 查询未安装指定软件包的文件列表 |
| rpm -qpc | 查询未安装指定软件包的配置文件位置 |
示例:
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd ##查看httpd有没有安装
[root@localhost ~]# rpm -qa|wc -l
1375 ##查询通过rpm一共安装了1375个软件
...
5.2、挂载
mount 设备 加文件夹路径 (已存在且是空的文件夹,原来的数据将被隐藏)
挂载规则:
- 一个挂载点同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后一个挂载设备的数据,其它设备上的数据将被隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在空的目录
[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7
RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
5.3、安装卸载升级
基本格式:rpm [选项] rpm软件包
| 选项 | 效果 |
|---|---|
| -i | 安装一个新的RPM软件包 |
| -U | 升级某个软件包,若未安装过则进行安装 |
| -F | 升级某个软件包,若未安装过则直接结束 |
| -h | 在安装或升级过程中已#号显示读条 |
| -v | 显示安装过程的详细信息 |
| --force | 强制安装某个软件包 |
| -e 软件名 | 卸载指定的软件 |
| --nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
6、编译安装
- 软件版本比较新,新功能,修复bug
- 可以自行定义配置文件的路径
- 源码可能有100个功能,红帽认为你可能不需要会自行处理砍掉,自行定制50
程序包编译安装:
源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软 件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特 性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具 可以大大减少编译过程的复杂度
[root@test1 /]# vim httpdinstall.sh
mkdir /bianyi
cd /bianyi/
wget https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.48.tar.bz2
tar xvf httpd-2.4.48.tar.bz2
cd httpd-2.4.48/
yum install apr* gcc* pcre* -y
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-mods-shared=most --with-mpm=worker --disable-cgid --disable-cgi
make
make install
systemctl stop firewalld.service
/usr/local/apache/bin/apachectl start
[root@test1 /]#chmod 755 httpdinstall.sh
[root@test1 /]#./ httpdinstall.sh
7、yum安装
YUM(Yellow dog Updater,Modified)
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间
7.1、配置yum本地仓库(yum本地源)
[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak
[root@localhost yum.repos.d]# vim lyn.repo
[ky18]
name=ky18
baseurl=file:///mnt
gpgcheck=0
yum clean all && yum makecache
[root@localhost yum.repos.d]# yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: ky18
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
已加载插件:fastestmirror, langpacks
ky18 | 3.6 kB 00:00:00
(1/4): ky18/group_gz | 156 kB 00:00:00
(2/4): ky18/filelists_db | 3.1 MB 00:00:00
(3/4): ky18/primary_db | 3.1 MB 00:00:00
(4/4): ky18/other_db | 1.2 MB 00:00:00
Determining fastest mirrors
元数据缓存已建立