Linux软件安装及管理程序

221 阅读7分钟

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、编译安装

  1. 软件版本比较新,新功能,修复bug
  2. 可以自行定义配置文件的路径
  3. 源码可能有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
元数据缓存已建立