六.Linux基础之应用程序安装及管理

应用程序安装及管理

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

  • ▶应用程序的执行文件大都比较小,通常放置在/bin和/sbin目录中。对于内部命令常集成在Bash程序内。

  • ▶应用程序的执行文件通常放在/usr/bin 、/usr/sbin和/usr/local/bin、/usr/local/sbin等目录中。应用程序一般在安装完操作系统时再独立进行安装,提供相应的功能。

  • Linux应用程序的组成

在Linux操作系统中,典型的应用程序通常由以下几部分组成
▶普通的可执行文件:一般保存在/usr/bin目录中,普通用户即可执行
▶服务器程序、管理文件程序:一般保存在/usr/sbin目录中,只有管理员能执行。
▶配置文件:一般保存在/etc 目录中,配置文件较多时会建立相应的子目录。
▶日志文件:一般保存在/var/log 目录中。
▶关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中
▶执行文件及配置文件的man手册页:一般保存在/usr/share/man目录中
执行:rpm -ql 程序名称 可以查看此程序在系统中安装的目录和文件清单。

  • 软件包的封装类型
    不同类型的软件封装安装的方法也各不相同,常见的软件包封装类型如下:
    ▶RPM软件包:这种软件包的扩展名为“.rpm”,只能在使用RPM
    (RPM Package Manager,RPM软件包管理器)机制的Linux操作系统中安装,如RHEL、Fedora、CentOS等。一般为特定版本的操作系统量身定制,因此依赖性强。

    ▶DEB软件包:这种软件包文件的扩展名为“.deb”,只能使用DPKG(Debian Package,Debian包管理器)机制的Linux操作系统中进行安装,如Debian,Ubuntu等。

    ▶源代码软件包:这种软件包是程序员开发完成的原始代码,一般被制作成“.tar.gz”或“.tar.bz2”等格式的压缩包文件,因多数使用tar命令打包而成,所以常被称为“TarBall”,源代码软件包需要相应的编译工具,如Linux中的C语言编辑器gcc,因此在安装Linux操作系统时尽量勾选“开发工具”

    ▶附带安装程序的软件包:这种软件包的扩展名不一,但仍以TarBall的居多。软件包中会提供用于安装的可执行程序或脚本文件。如:install.sh、set up等或.bin格式的单个安装文件形成。安装时只需要运行安装软件即可。

  • 使用RPM软件包管理工具

RPM软件包是各种Linux发行版中应用较广泛的软件包之一。在其官方站点http://www.rpm.org中可以了解到关于RPM包管理机制的详细资料。
RPM软件包文件拥有约定俗称的命名格式,一般使用“软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm”的文件名形式,如“bash-4.2.46-20.el7_2.x86_64.rpm”。其中硬件平台通常为“i386或i686”等,表示Intel公司的处理器,“x86_64”表示适用于64位操作系统,如果是“noarch”表示不区分硬件架构(支持不同硬件体系的处理器)。

CentOS的DVD光盘携带的大部分软件包都在Packages目录中。
/run/media/root/CentOS/7/x86_64/Packages/ 一般在使用时会把他挂在到根目录下使用方便些。

使用RPM软件包管理命令

  • rpm命令的格式
    在第一次使用时可以执行:man rpm 命令获得rpm命令的详细帮助信息。
    rpm选项主要可以实现以下三类功能。
    ▶查询,验证RPM软件包的相关信息。

    ▶安装、升级、卸载RPM软件包。

    ▶维护RPM数据库信息等综合管理操作。

  • 查询RPM软件包信息

使用rpm命令的查询功能可以查看某个软件包是否已经安装、软件包的用途以及软件包复制到系统中的文件等相关信息。
rpm的查询功能主要通过“-p”选项来实现,主要针对系统已经安装的软件包;通过“-qp”选项可以针对尚未安装的RPM软件包进行查询。

(1)查询已安装的RPM软件包信息:
不带子选项的“-q”选项可以查寻已知名称的软件包是否已经安装,需要使用准确的软件包名作为参数(可以有多个)。结合不同的子选项,可以实现具体的查询。常用的几个子查询:
▶-qa:显示当前系统中以RPM方式安装的所有软件列表

▶-qi:查看指定软件包的名称、版本、许可协议、用途等详细信息。

▶-ql:显示指定软件包的在当前系统中安装的所有目录、文件列表。

▶-qf:查看指定文件或目录是有哪个软件包所安装的。
rpm -qa --显示当前系统中以RPM方式安装的所有软件列表
rpm -q 【软件包名】 --查询某个软件包是否已经安装
rpm -qa | grep -i samba --如果不知道软件包的详细名称可以结合管道符进行模糊查询,根据查询结果再进行判断。

rpm  -qi 【软件包名】  --查看指定软件包的名称、版本、许可协议、用途等详细信息
rpm  -ql  【软件包名】  --查询软件包安装的目录和文件清单
当需要知道系统中的某个程序是由哪个软件包生成时,可以使用“-qf”选项。
例:which  vim		--先找出程序的位置,以便进行下一步的操作。
rpm  -qf  /usr/bin/vim

使用RPM命令只能查询通过RPM方式安装的软件包信息

(2)查询RPM软件包文件中的相关信息
使用“-qa”选项时,必须以RPM软件包文件的路径作为参数(可以有多个),而不是软件包名称。常用的两个选项:
▶-qpi:查看指定软件包的名称、版本、许可协议、用途描述等信息。

▶-qpl:查看该软件包准备要安装的所有目标目录、文件列表。
例:已知CentOS光盘目录中有一个RPM软件包文件ethtool-4.5-3.el7.x86_64.rpm,若要在安装前了解该软件的用途,执行以下操作。rpm -qpi 软件包名

[root@localhost Packages]# rpm -qpi ethtool-4.8-10.el7.x86_64.rpm 
Name        : ethtool
Epoch       : 2
Version     : 4.8
Release     : 10.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/System
Size        : 354299
License     : GPLv2
Signature   : RSA/SHA256, 2019年08月23日 星期五 05时22分57秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : ethtool-4.8-10.el7.src.rpm
Build Date  : 2019年08月09日 星期五 07时16分59秒
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : https://www.kernel.org/pub/software/network/ethtool/
Summary     : Settings tool for Ethernet NICs
·····

如果还想了解该软件包中包含哪些文件(安装后将复制到系统中)可以执行以下操作。rpm -qpl 软件包名

[root@localhost Packages]# rpm -qpl ethtool-4.8-10.el7.x86_64.rpm 
/usr/sbin/ethtool
/usr/share/doc/ethtool-4.8
/usr/share/doc/ethtool-4.8/AUTHORS
/usr/share/doc/ethtool-4.8/COPYING
/usr/share/doc/ethtool-4.8/ChangeLog
/usr/share/doc/ethtool-4.8/LICENSE
/usr/share/doc/ethtool-4.8/NEWS
/usr/share/doc/ethtool-4.8/README
/usr/share/man/man8/ethtool.8.gz
  • 安装、升级、卸载RPM软件包

命令选项如下:
▶-i:在当前系统中安装(Install)一个新的RPM软件包
▶-e:卸载指定名称的软件包。(erase)
▶-U:检查并升级系统中的某个软件包,若该软件包原来并未安装,则等同于“-i”选项。
▶-F:检查并更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装。
▶-h:在安装或升级软件包的过程中,以“#”号显示进度。
▶-v:显示安装软件的详细信息
▶–force:强制安装某个软件,当需要替换已安装的软件包及文件,或者按装一个比当前使用的软件版本更旧的软件时,可以使用此选项。
▶–nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件的依赖关系。
安装、升级软件包

(1)安装软件包:
在安装一个新的软件包时,通常用“-ivh”的组合选项。在更新软件包的时候只需把“-ivh”的“i”换成“U”即可。

[root@localhost Packages]# rpm -ivh lynx-2.8.8-0.3.dev15.el7.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:lynx-2.8.8-0.3.dev15.el7         ################################# [100%]

(2)卸载软件包:
卸载软件包时,主要使用“-e”选项。

[root@localhost Packages]# rpm -e lynx 

当需要卸载一个与其他文件有依赖关系的软件包时,系统会提示有依赖关系而不让执行,这时可以结合“–nodeps”选项忽略依赖关系,强制删除。

(3)升级软件包
升级软件包在软件没有安装的情况下等同于安装

[root@localhost Packages]# rpm -U lynx-2.8.8-0.3.dev15.el7.x86_64.rpm

(4)维护RPM数据库:
a:重建RPM数据库
RPM数据库记录在Linux操作系统中安装、卸载、升级应用程序的相关信息,由RPM软件包管理系统自动完成维护,一般不需要用户干预。
当RPM数据库发生损坏,且Linux无法完成自动修复时,将导致无法使用RPM命令正常地安装、卸载及查询软件包。这时可以使用RPM命令的“–reduilddb”或“–initdb”对RPM数据库进行重建。
rpm --rebuilddb 或 rpm --initdb

b:导入验证公钥
在Linux 和 UNIX 应用领域,相当一部分软件厂商会对发布的软件包进行签名,以确保软件的完整性、合法性。
CentOS的DVD光盘默认已经提供了用于数字签名验证的公钥文件,即位于光盘根目录下的RPM-GPG-KEY-redhat-release文件。
以下这种现象就是没有导入公钥导致的(一般不影响正常使用):
在这里插入图片描述
向RPM数据库导入公钥文件,需用到“–import”选项。
以下操作可以把光盘的RPM-GPG-KEY-CentOS-7 公钥导入RPM数据库
在这里插入图片描述
然后再安装lynx就没有警告了
在这里插入图片描述

源代码编译概述

Linux操作系统之所以能够在十余年的时间里发展壮大,其开放源代码和操作简单的特性是很重要的原因之一,即Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。
现代的Linux发行版本通常使用软件包管理机制对软件进行打包安装,这样省去了软件的编译安装过程,简化了Linux操作系统的安装和使用难度。

但以下几种情况,任然需要使用源代码编译的方式为操作系统安装新的应用程序。
▶安装新版本的应用程序时:大多数的Linux发行版都提供了相当丰富的应用程序,而这些程序的版本往往滞后于该软件的最新源代码版本,因为大多数的开源软件总是以源代码形式最先发布,下载应用程序的最新源代码包并编译安装,可以在程序功能、安全补丁等方面得到及时更新。

▶当前安装的程序无法满足应用需求时:对于RPM格式封装的应用程序,一般只包含该软件所能实现的一小部分功能,而难以由用户自行修改、定制。

▶为应用程序添加新功能时:当需要利用现有的程序源代码进行适当的修改以便增加新的功能时,必须释放出该软件的源代码,然后再重新编译安装。

编译源代码安装需要有相应的开发的环境,对于自由软件来说,gcc和make是最佳的编译工具。gcc和make是由GNU项目所贡献的功能强大的C/C++语言编译器。
编译安装的基本过程:
获得所需安装的软件源代码以后,安装的基本过程包括解包、配置、编译及安装这几个步骤。
先安装三个依赖包
libxml2 (依赖 xz 和 zlib)
expat
pcre

解压httpd、apr、apr-util
1 先编译安装apr和aprutil,再编译httpd
2 把apr和apr-util源代码移动到httpd中的srclib目录,一同编译(成功率较高)
3 进入httpd目录
执行 ./configure --prefix=/usr/local/apache2 --with-included-apr 进行预配置(–with-included-apr 一同编译被包含在srclib目录中的apr依赖包)
成功后执行 make && make install
4 cd /usr/local/apache2
htdocs 目录,修改默认文档
conf目录,修改 httpd.conf ,搜索 ServerName,去掉注释(#),修改服务器域名或ip,定义端口号
bin目录,执行 ./apachectl start 开启服务
5 用图形浏览器firefox测试网页
或安装命令行浏览器 lynx,然后执行 lynx 127.0.0.1 测试

★★红帽企业版7,rpm包的位置: /run/media/root/CentOS xxxx/Packages

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值