Linux学习笔记(六)——应用程序安装

小编 2026-06-25 阅读:197 评论:0
                  安装及管理应用程序  同windows操作系统一样,使用一个...

                  安装及管理应用程序

  同windows操作系统一样,使用一个操作系统,肯定要安装一些软件,这篇随笔主要介绍Linux上软件的安装。首先我们应该了解Linux应用程序的组成、熟悉RPM软件包的管理机制,接着就是会使用RPM包管理工具,并且从源码包编译安装应用程序。

  一、Linux应用程序简介

  1、Linux命令与应用程序的关系

   (1)、文件位置

系统命令:一般在/bin和/sbin目录中,或为Shell内部指令
应用程序:通常在/usr/bin和/usr/sbin目录中
(2)、主要用途
系统命令:完成对系统的基本管理工作,例如IP配置工具
应用程序:完成相对独立的其他辅助任务,例如网页浏览器
(3)、适用环境
系统命令:一般只在字符操作界面中运行
应用程序:根据实际需要,有些程序可在图形界面中运行
(4)、运行格式
系统命令:一般包括命令字、命令选项和命令参数
应用程序:通常没有固定的执行格式

   (个人理解:在Linux中严格区分命令和程序也并无太大意义,对于“安装软件包”与“安装应用程序”这两种说法,也并不做严格的区分 

  2、Linux应用程序的组成

  这部分与Linux的目录层次有紧密关系,下面列出的是典型应用程序的目录结构:

文件类型

保存目录

普通执行程序文件

/usr/bin

服务器执行程序文件和管理程序文件

/usr/sbin

应用程序配置文件

/etc

日志文件

/var/log

应用程序文档文件

/usr/share/doc

应用程序手册页文件

/usr/share/man

    如果应用程序的配置文件较多,通常会以软件名建立专门的子文件夹来保存,如“/etc/httpd”

    例如查看sendmail软件包时,执行rpm -ql sendmail查看。

  3、软件包的封装类型

  封装类型有多种,常见的是RPM软件包,扩展名为“.rpm”,源代码软件包,一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码;这两种较常用。其它的有deb软件包,扩展名为“.deb”,提供安装程序的软件包,一般是install.sh、setup、.bin格式的文件,类似windows中的exe安装文件,还有绿色免安装的软件包,在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用。(备注使用tar命令制作而成的源代码包文件,经常被称为“TarBall,即“Tar包”

  二、使用RPM包管理工具

  1、RPM简介

  PRM:RedHat Package Manager,因为这个RPM格式的关键包格式是由Red Hat公司首先提出并使用的,后得到广泛使用。它建立统一的数据库文件,详细记录软件包安装、卸载等变化信息,能够自动分析软件包依赖关系。

  RPM包的一般格式为:bash-3.1-16.1.i386.rpm(软件名称版本号发布次数硬件平台,扩展名)

    当然这个格式不固定,因为有时候可能还会加上所适用的操作系统信息,如:wget-1.10.2-7.el5.i386.rpm

  2、使用RPM包管理命令

  RPM命令的主要功能是:

(1). 查询RPM软件、包文件的相关信息
查询已安装的RPM软件信息:rpm  -q[子选项]   [软件名]
查询文件/目录属于哪个RPM软件 :rpm  -qf   文件/目录名
(备注:使用“-q”选项时实际上调用了“/usr/bin/rpmquery”程序完成查询工作,对于“-qa”查询选项,命令参数(即软件包名)是非必须的;一般查询时,软件名不需要指定版本号
[root@localhost ~]# rpm -q bash     ==>查询是否已安装有bash软件包bash-3.1-16.1[root@localhost ~]# rpm -qa | grep bashbash-3.1-16.1[root@localhost ~]# rpm -qf /usr/bin/vim    ==>查询vim是由哪个软件包安装的vim-enhanced-7.0.109-3[root@localhost ~]# rpm -ql dhcp   ==>查询dhcp软件包安装的文件列表/etc/dhcpd.conf/etc/rc.d/init.d/dhcpd……
查询未安装的RPM软件包文件:rpm  -qp[子选项]  [RPM包文件] 
用法:结合不同的子选项 完成不同查询
-qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表 
[root@localhost Server]# rpm -qpl lynx-2.8.5-28.1.i386.rpm/etc/lynx-site.cfg/etc/lynx.cfg……==>查询lynx安装包中的文件列表
(2). 安装、升级、卸载RPM软件包
安装或升级RPM软件:rpm  [选项]  [RPM包文件]...  
用法:不同选项适用于不同情况
 -i:安装一个新的rpm软件包
 -U:升级某个rpm软件,若原本未装,则进行安装
 -F:更新某个rpm软件,若原本未装,则放弃安装
卸载指定的RPM软件:rpm  -e  软件名 (备注:卸载软件时只需要指定软件名即可,无需指定版本号
 辅助选项简单介绍: 
--force:强制安装所指定的rpm软件包
--nodeps:安装、升级或卸载软件时,忽略依赖关系
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息 
 (备注:--force 辅助选项主要应用于以下两种情况:

    1)缺失某个软件包的文件时,需要进行覆盖安装以找回丢失文件

    2)安装一个比现有软件版本陈旧的软件包(多为测试用途)

  当安装、卸载软件包时,提示缺少依赖包无法进行时,如果仍要继续执行,应结合 --nodeps 选项而不   是 --force 选项 

[root@localhost ~]# rpm -ivh lynx-2.8.5-28.1.i386.rpm  ==>安装一个新的RPM包warning: lynx-2.8.5-28.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186Preparing...    ########################################### [100%]   1:lynx       ########################################### [100%]                          ==>安装lynx软件包同事显示安装进度[root@localhost ~]# rpm -q lynxlynx-2.8.5-28.1[root@localhost ~]# rpm -e lynx  ==>卸载lynx软件包[root@localhost ~]# rpm -q lynxpackage lynx is not installed

 (备注:“warning:……NOKEY……”的警告信息是由于没有导入RedHat提供的公钥所致,但并不影响安装效果,可以忽略,如果需要导入公钥文件,可以参考如下步骤(以后从RHEL5光盘中安装软件时,就不会再出现警告提示了):[root@localhost ~]# cd /media/cdrom

                  [root@localhost cdrom]# rpm --import RPM-GPG-KEY-redhat-release)

[root@localhost ~]# rpm -i wget-1.10.2-3.2.1.i386.rpm[root@localhost ~]# rpm -q  wgetwget-1.10.2-3.2.1[root@mail ~]# rpm -Uvh /media/cdrom/wget-1.10.2-7.el5.i386.rpm ==>升级wget软件包warning: /media/cdrom/wget-1.10.2-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186Preparing... ########################################### [100%]   1:wget    ########################################### [100%][root@localhost ~]# rpm -q  wgetwget-1.10.2-7.el5

(备注:在系统中不存在被升级的软件包时,升级命令的功能等同于安装命令

  解决软件包依赖关系:

1)、安装有依赖关系的多个软件时
被依赖的软件包需要先安装
同时指定多个.rpm包文件进行安装
(备注:如果需要同时安装相互依赖的数十个.rpm软件包,可以结合Shell通配符“*”同时指定这些文件作为参数 
2)、卸载有依赖关系的多个软件时
依赖其他程序的软件包需要先卸载
同时指定多个软件名进行卸载
3)、忽略依赖关系
结合“--nodeps”选项,但可能导致软件异常
 (3). 维护RPM数据库信息

     当RPM数据库损坏时,需要进行数据库重建:rpm  --rebuilddb  或者rpm  --initdb  

  三、从源码包编译安装程序

  1、源码编译简介

  既然有了RPM安装,那么为什么需要源码安装呢?首先它能获得最新的软件版本,及时修复bug;然后它那能根据用户需要,灵活定制软件功能。它的应用场合也非常广泛,比如安装较新版本的应用程序时、当前安装的程序无法满足需要时或者需要为应用程序添加新的功能时等。

  Tarball封包:多为.tar.gz或者tar.bz2格式。

  确认源代码编译环境:

  需要安装支持C/C++程序语言的编译器。

[root@localhost ~]# gcc --version  ==>或g++ -v  [--version]gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)Copyright (C) 2006 Free Software Foundation, Inc.本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;包括没有适销性和某一专用目的下的适用性担保。[root@localhost ~]# g++ --versiong++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)
……

(备注:在实际编译安装软件的操作中,大多数情况是通过 make 来自动调用gcc或g++进行工作,无需用户手动执行gcc等命令)

  2、从源码编译安装程序的基本过程

解包 —— tar
    解包、释放出源代码文件
配置 —— ./configure    configure 一般是位于软件包目录中的可执行脚本文件
    针对当前系统、软件环境,配置好安装参数
编译 —— make
    将源代码文件变为二进制的可执行程序
安装 —— make install
    将编译好的程序文件复制到系统中
  3、源码编译安装程序示例
  1)、解包
习惯上将软件包释放到 /usr/src/ 目录;解包后的源代码文件位置:/usr/src/软件名-版本号/
[root@localhost ~]# tar zxvf axel-1.0a.tar.gz -C /usr/src/[root@localhost ~]# ls /usr/src/axel-1.0a/API     axelrc.example  configure  CREDITS  gui       nl.po     tcp.caxel.1  CHANGES         conn.c     de.po    http.c    README    tcp.haxel.c  conf.c          conn.h     ftp.c    http.h    search.c  text.caxel.h  conf.h          COPYING    ftp.h    Makefile  search.h

==>configure执行脚本用于下一步的配置,README或INSTALL文件可提供安装方法

  2)、配置

  (需将工作目录切换到软件源码所在目录;使用源码目录中的 configure 脚本;执行“./configure --help” 可以查看帮助;典型的配置选项: --prefix=软件安装目录)

[root@localhost ~]# cd /usr/src/axel-1.0a[root@localhost axel-1.0a]# ./configure --prefix=/usr/local/axel ==>若不指定任何配置选项,将采用默认值

(备注:不同的应用程序其配置参数会存在区别,因此学会使用“./configure --help”非常重要(“./”表示当前目录);用户应用程序习惯上安装到“/usr/local/软件名”文件夹中;编译过程中如果出现错误,通常是由于缺少依赖软件包所致;根据软件大小不同,配置过程可能会需要不同的时间)

  3)、编译  :执行make命令

  4)、安装  :执行make  install命令 

[root@localhost axel-1.0a]# make[root@localhost axel-1.0a]# make install

    验证已编译安装完成的程序:

[root@localhost axel-1.0a]# ls /usr/local/axel/  /usr/local/axel/bin//usr/local/axel/:bin  etc  share/usr/local/axel/bin/:axel[root@localhost axel-1.0a]# /usr/local/axel/bin/axel –helpUsage: axel [options] url1 [url2] [url...]--max-speed=x      -s x    Specify maximum speed (bytes per second)……

   如有错误,欢迎指正,谢谢!

 

作者:zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表