软件管理

基本概念

1.程序:可执行的二进制文件,由指令和数据组成

2.链接库:二进制文件,不可执行(无执行入口),可被程序调用。

3.脚本:可执行文本文件,执行时由解释器转义成CPU可以执行的机器码。

4.编译:高级编程语言编写的代码,经过编译过程转译成CPU可识别的机器码(0、1)

5.编译过程:

   1)检查程序语法

   2)把程序代码转换成机器码

   3)程序代码中若有使用其他链接库的机器码,则将其链接。

   4)产生OS的相关信息;

   5)存储为可执行文件

6.链接:将存储在链接库中的机器码存储到程序中

 1)静态链接:执行期间,将机器码复制到执行文件中。

  优点:可独立使用;缺点:执行时需较多的内存空间、文件变大。

 2)动态链接:只存储需要链接库的名称、版本及函数的符号等信息。执行时,根据链接信息,加载所需的链接库及机器码。

      优点:体积小、占用内存小;缺点:无法独立使用,当程序移动到另一主机时,需保证另一主机有相同的链接库。

备注:linux基本使用动态链接库。

7.查询链接库:ldd

#ldd /bin/ls            #当程序采用动态链接时,查询程序执行时,需用到哪些链接库。

linux-gate.so.1 => (0x003b3000)
librt.so.1 => /lib/librt.so.1 (0x00518000)

显示格式:链接库名称 => 链接库的文件名(链接库加载到到内存的地址)

8.软件的依赖性

  即软件执行时需要用到其他的组件(可能是程序、链接库或普通文件)

9.常用软件包类型

   rpm包:.rpm格式,可使用rpm工具直接安装

   源码包:gzip与bzip2压缩包,需使用源码编译安装

RPM软件包管理

    RPM是RedHat Package Manager的缩写,也即使红帽软件包工具。提供一种可升级、具有强大查询功能、

支持安全验证的通用型linux软件包管理工具。

包格式:PACKAGE-VERSION-RELEASE.TYPE.rpm

ftp下载: lftp serverip

      get:下载单个

      mget:下载多个

   bye

1.安装RPM包

rpm -i [-v] [-h] FILES...

    -v:显示信息信息

    -h:显示进度

   --nodeps:忽略依赖关系

  --force:强行安装

  --oldpackage:降级安装

  --replacepkgs:重新安装,替换原有安装

  --replacefiles:替换文件

  --test   检查软件包是否能够安装

    FILES:RPM文件的名称,支持URL形式:

    ftp://HOSTNAME/PATH/FILE   #FILE可使用通配

    http://HOSTNAME/PATH/FILE  #FILE不支持通配

2.升级与更新RPM包

1.升级:升级时,会自动删除旧版本,再安装新版本

 #rpm -U [-v] [-h]  FILES...

2.更新:新版本覆盖旧版本上的文件。 (如果装有老版本,则升级。否则,退出)

#rpm -F [-v] [-h] FILES...

#rpm -Uvh   --oldpackage nono-1.3.12-1.1.i386.rpm   #降级安装

3.卸载软件包

#rpm -e PACKAGES...

3.查询软件包

rpm -q  包名     #查看指定软件包是否已经安装

rpm -qa           #查看系统中已安装的所有软件

rpm -qi 包名    #查询已安装软件包的详细信息

rpm -ql  包名  #查找已安装软件的安装路径与文件列表

rpm -qc 包名   #查询已安装软件的配置文件

rpm -qf 包名   #查询指定文件为哪个软件所安装

rpm -qpi 包名  # 查询尚未安装的软件包的说明信息

rpm -qpl 包名  #查看尚未安装的软件包如果安装后会产生哪些文件

3.安全验证

rpm -V   PACKAGES...      #检查软件包从安装到现在,是否有被异动过。

返回值及含义:

5      MD5hash值已经改变

S     文件大小已经改变

M     文件模板已经改变,包括:权限、类型等

D  设备文件的主/次设备号改变

L  链接文件的源已经改变

U 文件拥有者已改变

G 文件拥有组已改变

T 文件最后修改时间已改变

rpm -V --all 查询所有软件包的状态

YUM

yum是改进版的RPM软件管理器,YUM可以很好的解决RPM所面临的软件包依赖关系,在安装、更新或删除软件时,

YUM会自动帮你解决依赖关系。使用YUM安装软件时至少需要一个YUM源(用于存放RPM软件包的目录),用户可以

通过HTTP、FTP或本地目录的方式访问YUM源。

1.创建YUM源

     如果是合法RHEL用户,且已成功在RHN上登陆了你的RHEL系统,则不用建立自己的YUM下载源,因为RHEL会自动为你安装

一个名为yum-rhn-plugin的软件包,通过这个软件包,yum会自动使用RHN作为默认下载源。

建立YUM下载源步骤:

  1.将所有RPM文件放入同一目录中;

  2.在此目录建立YUM下载源数据:使用createrepo工具(事先安装此工具包)

    createrepo [option]  DIR

         -u  URL:指定基础URL位置

         -o URL   指定输出的YUM下载源文件的路径名称(默认为当前目录)

         -x PACKAGE:不包含package软件包

    -g GROUPFILE:用来定义软件包群组的xml文件

  3.通过HTTP或FTP方式分析这个目录:目的让其他主机可以访问到(略)

2.设置YUM

1.yum工具的配置文件:/etc/yum.conf

参数 :

cachedir:YUM缓存的目录

keepchche:yum成功执行安装动作后,是否要保存旧的软件包头信息与软件包文件,1保存,0不保存(默认为1)

debuglevel:日志级别,级别越高,产生的日志越高,范围0~10,默认为2

logfile:指定YUM的日志文件路径名称

plogins :是否启用所有的插件,默认为0,代表不启用

proxy:指定读取YUM下载源时使用的代理服务器的URL

2.yum下载源配置文件:/etc/yum.repos.d目录下,以.repo为后缀的文件,可以指定多个

 作用:指定使用哪个YUM下载源

文件格式:

[Repo_ID]      唯一标识符

NAME=VALUE... 

NAME是参数名,VALUE是参数值,常见NAME有:

  name :定义YUM下载源的完整名称

  baseurl:指定YUM下载源的URL地址

   baseurl=ftp://路径

   bashurl=http://路径

   baseurl=file://路径

mirrorlist :定义通过哪一个URL来取得所有影像站点的清单

enabled:是否启用这个YUM下载源,1启用,0不启用。

gpgcheck:安装这个YUM下载源的软件前是否要检查RPM软件包的数字签名,0检查,1不检查。

gpgkey:RPM软件包数字签名的密钥

       gpgkey=file:///pki/rpm-gpg/RPM-GPG-KEY-redhat-releasse

常见变量:

$releasever   代表系统发行版本号

$arch  代表CPU架构

$basearch  代表系统架构

$YUM0-9 代表shell对应的0-9个同名变量替换。

3.YUM命令

用法:yum [选项] [指令]  [软件包]

选项: -y  非交互式安装

指令:

      install  package1 package2 [...]       使用YUM源安装软件包

      update package1 package2 [...]       使用YUM源升级软件包

      check-update          检查YUM源中所有可用的升级

   remove | erase package1 [package2] [...]    卸载软件包

   list [...]                                                          列出系统中已经安装的以及yum源中所有可用的软件包

     info [...]                 查看软件包信息

     clean all                清空所有的缓存信息

     groupinstall group1 [group2] [...]      使用yum源安装组包

     grouplist                列出系统中已经安装的以及yum源中所有可用的组包

     groupremove group1 [group2] [...]      卸载组包

     search string1 [string2] [...]        根据关键字查找软件

     localinstall rpmfile [rpmfile2] [...]      通过本地rpm文件安装软件

     history                 查看历史记录

 实例:

       #yum clean all    清空YUM缓存

  #yum install dialog 

       #yum -y expect  #非交互式安装

       #yum update   #检查所有的软件并更新

  #yum remove dialog   

  #yum list    #已安装的软件显示@

  #yum grouplist    

  #yum groupinstall "Chinese Support"   安装中文组包

  #yum search web  #查看Web相关软件

  #yum history  

源码编译安装软件

1.软件源码不能直接在计算机中运行,需要经过编译转换成计算机可识别的机器语言后,才能执行安装。

使用安装者可根据自己的需要定制自己的软件。

2.rpm包或其他二进制包是已经编译好的软件包,所以可直接安装

源码安装软件的具体步骤:

1)准备开发环境(编译环境)

RHEL5 :安装“Development Tools" 和 “Development Libraries”

RHEL6:安装“Development Tools”和“Compatibility Libraries”

2)编译前设置 ./configure

作用:1.让用户选定编译设置;2、检查编译环境

./configure 

   --help

   --prefix=/path/to/somewhere    #软件安装路径,不指定默认安装在/usr/local

   --sysconfigdir=DIR 指定配置文件存放路径,不指定默认存放在./conf/etc目录

   --datadir=DIR    指定数据目录,用来存放只读的数据文件

   --libdir=DIR   指定链路库目录

   --includedir=DIR  指定提供C/C++语言的引入文件所在目录

 --infodir=DIR  info文件目录

 --mandir=DIR   man文件的目录

    --bindir=DIR  指定执行文件目录

    --sbindir=DIR  指定系统执行文件目录

 --libexecdir=DIR 指定可执行文件的目录

3)编译:make  将源代码编译成计算机可识别的机器语言

4)安装 make install

make命令:

格式:make [-f MAKEFILE]  [OPTIONS] [TRAGET]

  默认使用当前路径的Makefile文件,也可用手工指定, -f MAKEFILE选项。  

  Mekefile文件:

    作用:定义一个或多个TARGET,每个TARGET定义要执行的工作内容。

    Makefile文件格式:

      TARGET:DEPENENCE_TARGETS...  

      ACTIONS..            #ACTION表示要执行的工作

       若未指定TRAGET,则默认使用MAKEFILE文件的第一个target

  执行configure后,会产生makefile文件,由configure命令产生的makefile会提供以下几个常见Target:

   all:编译所有程序与链接库、产生所有info与man文件

   clean:清除上次编译的记录

   distclean:清除所有,包括Makefile,执行此命令后,必须重新设置编译参数

   install:安装所有程序、链接库、引入文件等

  uninstall:卸载安装所有程序、链接库、引入文件等。

注意事项:

 1.PATH变量添加软件的执行路径,这样执行程序时,无需要写完整路径名。

解决方法:/etc/profile.d/目录下新建一个.sh的文件,里面定义export PATH=$PATH:/程序执行路径

2.安装软件时,自定义安装路径后,软件依赖的库文件会被安装到“指定路径下”的modules/lib目录,这样其他软件无法共享此库文件

解决方法:在/etc/ld.so.conf.d/中创建扩展名为.conf文件,把库文件路径增加到里面,然后执行ldconfig命令通知系统重新搜索库文件

3.头文件

任何一个支持二次开发的源程序,都会向外提供调用库,其包含了头文件。头文件默认存放路径:/usr/include,所需要创建软件的头文件

链接到/usr/include目录下。

 eg: ls -s /usr/local/tengine/include/  /usr/include/tengine  #把软件tengine头文件目录,链接至/usr/include/的tengine(给目录创建链接)

4.man文件路径,默认安装在安装目录下的man目录,man不在标准路径下,解决方法:

方法1:#man -M  程序main目录 COMMAND

方法2:在/etc/man.config中新增一条man文件的路径。(程序的man文件路径)

111
原文地址:https://www.cnblogs.com/zmdsg/p/7197514.html