Linux系统配置(应用程序)

简介: 应用程序概述、命令与程序的关系、程序的组成、软件包封装类型、RPM、RPM概述、RPM用法、编译安装、解包、配置、编译、安装、启用httpd服务

前言

     在Linux中的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能,因此对于“安装软件包”与“安装应用程序”这两种说法,并不做严格的区分

一、应用程序概述

1、命令与程序的关系

     在Linux操作系统中,一直以来命令和应用程序并没有特别明确的区别,从长期使用习惯来看可以通过以下描述来对两者进行区别

  • 应用程序命令的执行文件大多比较小,通常放置在/bin和/sbin目录中,对于内部命令常集成在Bash程序内,而不是独立地执行文件,命令文件一般在安装操作系统时一起安装,用于辅助操作系统本身的管理,命令行大多适用于“命令字 选项 参数”形式的一般格式,命令只在字符操作界面中运行
  • 应用程序的执行文件通常放在/usr/bin、/usr/sbin和/usr/local/bin、/usr/local/sbin中,应用程序一般需要在操作系统之外另行安装,提供相对独立于操作系统的功能,有时候等同于“软件”的概念,应用程序一般没有固定的执行格式,运行方式由程序开发者自行定义,应用程序可能会用到图形界面,形式多样,有些应用程序提供的执行文件,能够使用像Linux命令一样的运行格式,所以也经常被称为程序命令

2、程序的组成

     安装完一个软件包以后,可能会向系统中复制大量的数据文件,并进行相关设置,在Linux操作系统中,典型的应用程序通常由以下几部分组成

  • 普通的可执行程序文件:一般保存在/usr/bin目录中,普通用户即可执行
  • 服务器程序、管理程序文件:一般保存在/usr/sbin目录中,只有管理员能执行
  • 配置文件:一般保存在/etc目录中,配置文件较多时会建立相应的子目录
  • 日志文件:一般保存在/var/log目录中
  • 关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中
  • 执行文件及配置文件的man手册页:一般保存在/usr/share/man/目录中

3、软件包封装类型

     对于各种应用程序的软件包,在封装时可以采用各种不同的类型,不同类型的软件包其安装方法也各不相同,常见的软件包封装类型如下

  • RPM软件包:这种软件包文件的扩展名为“.rpm”,只能在使用RPM(RPM Package Manager, RPM软件包管理器)机制的Linux操作系统中安装,如RHEL、Fedora、CentOS等,RPM软件包一般针对特定版本的操作系统量身定制,因此依赖性较强,安装RPM软件包可使用操作系统中的rpm命令
  • DEB软件包:这种软件包文件的扩展名为“.deb”,只能在使用DPKG(Debian Package,Debian包管理器)机制的Linux操作系统中进行安装,如Debian、Ubuntu等,安装DEB软件包可使用操作系统中的dpkg命令
  • 源代码软件包:这种软件包是程序员开发完成的原始代码,一般被制作成“.tar.gz”或“.tar.bz2”等格式的压缩包文件,因多数使用tar命令打包而成,所以经常被称为“TarBall”,安装源代码软件包需要使用相应的编译工具,如Linux中的C语言编译器gcc,因此,在安装操作系统的时候尽量勾选“开发工具”一项来安装基本的编译环境
  • 附带安装程序的软件包:这种软件包的扩展名不一,但仍以TarBall格式的居多,软件包中会提供用于安装的可执行程序或脚本文件,如install、 sh、 setup等,有时候会以“.bin”格式的单个安装文件形式出现,安装时只需运行安装文件就可以根据向导程序的提示完成安装操作

     开放源代码的自由软件绝大多数选择以TarBall的形式发布,而RPM软件包、DEB软件包等则使了二进制的文件格式,代码相对比较封闭

二、RPM

1、RPM概述

     RPM软件包管理机制最早由Red Hat公司提出,后来随着版本的升级逐渐融入更多的优秀特性,成为众多Linux发行版中公认的软件包管理标准,使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用 “软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm” 的文件名形式

2、RPM用法

rpm 选项
rpm -qa 显示系统中以rpm方式安装的所有软件列表
rpm -q 软件包名称 查看某个安装包是否安装
rpm -qi 软件包名称 查看指定软件包详细信息
rpm -ql 软件包名称 显示软件包安装后所在的目录及文件列表
rpm -qf 文件或目录名 查看文件或目录是由哪个软件包安装的
rpm -ivh 软件包名称 以rpm方式安装软件(不推荐,还要装依赖包,推荐使用yum)
rpm -qp 查询未安装软件
rpm -e 软件包名称 卸载安装包
rpm -U 软件包名称 升级安装或新安装
rpm -F 软件包名称 升级安装,未安装则不安装
rpm -h 软件包名 显示安装进度
rpm -v 软件包名 显示安装过程详细信息
rpm --force 软件包名 强制安装,旧版本安装
rpm --nosignature 安装时不检查密钥

三、编译安装

     以安装httpd为例

1、解包

解压依赖包sj.tar.gz
yum install 依赖包内软件包名称
yum install gcc gcc-c++ make pcre-devel expat-devel perl pcre-devel.x86_64 apr-util-devel.x86_64
解压httpd包
tar zxf httpd.tar.gz -C /usr


2、配置

httpd包解压到usr目录下后会有解压后的httpd目录,进入解压后的该目录进行后续配置
cd /usr/httpd
./configure --prefix=/指定安装参数文件位置

3、编译

make

4、安装

make install

5、启用httpd服务

cd /参数安装位置/bin
./apachectl

结语

     大多数的Linux发行版都提供了相当丰富的应用程序,而这些程序的版本往往滞后于该软件的最新源代码版本,因为大多数的开源软件总是以源代码的形式最先发布,之后才会逐渐出现.rpm、.deb等二进制封装的版本,下载应用程序的最新源代码包并编译安装,可以在程序功能、安全补丁等方面得到及时更新

相关文章
|
6天前
|
存储 移动开发 Linux
Linux系统之部署h5ai目录列表程序
【5月更文挑战第3天】Linux系统之部署h5ai目录列表程序
23 1
|
6天前
|
机器学习/深度学习 自然语言处理 Linux
【专栏】Linux 中的机器学习:Whisper适用于语音助手、翻译等领域,随着技术发展,其应用前景广阔
【4月更文挑战第28天】本文探讨了在Linux环境下,先进自动语音识别系统Whisper的运用与实现高效ASR。Whisper基于PyTorch,支持多语言识别,具有高准确性和实时性。文中介绍了安装配置Whisper的步骤,包括安装依赖、下载代码、配置环境变量及编译安装。通过数据准备、模型训练和识别,可实现语音识别功能。Whisper适用于语音助手、翻译等领域,随着技术发展,其应用前景广阔。
|
6天前
|
关系型数据库 MySQL Linux
服务器Linux系统配置mysql数据库主从自动备份
这是一个基本的配置主从复制和设置自动备份的指南。具体的配置细节和命令可能因您的环境和需求而有所不同,因此建议在操作前详细阅读MySQL文档和相关资源,并谨慎操作以避免数据丢失或不一致。
21 3
|
6天前
|
Linux 测试技术 Windows
LabVIEW对NI Linux RT应用程序性能进行基准测试
LabVIEW对NI Linux RT应用程序性能进行基准测试
|
6天前
|
存储 Linux 编译器
【Linux】详解动态库链接和加载&&对可执行程序底层的理解
【Linux】详解动态库链接和加载&&对可执行程序底层的理解
|
6天前
|
Linux C++
【Linux】详解进程程序替换
【Linux】详解进程程序替换
|
6天前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
39 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
6天前
|
消息中间件 存储 Linux
linux实时应用如何printf输出不影响实时性?
本文探讨了Linux实时任务中为何不能直接使用`printf(3)`,并介绍了实现不影响实时性的解决方案。实时任务的执行时间必须确定且短,但`printf(3)`的延迟取决于多个因素,包括用户态glibc缓冲、内核态TTY驱动和硬件。为确保实时性,通常将非实时IO操作交给低优先级任务处理,通过实时进程间通信传递信息。然而,即使这样,`printf(3)`在glibc中的实现仍可能导致高优先级任务阻塞。Xenomai 3提供了一个实时的`printf()`实现,通过libcobalt库在应用编译链接时自动处理,预分配内存,使用共享内存和线程特有数据来提高效率和实时性。
27 0
linux实时应用如何printf输出不影响实时性?
|
6天前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
14 0