Linux: centos软件包管理的3种方式

来源:互联网 发布:停车源码 编辑:程序博客网 时间:2024/06/05 04:01

Linux: centos软件包管理的3种方式


centos软件管理的方式大概有3种:

(1).通过rpm管理软件包;

(2).通过yum管理软件包;

(3).手动管理软件包。


前言

         

    软件包管理器的核心功能:

      (1).制作软件包;

      (2).安装,卸载,升级,查询,校验。

       rpm包是由发布人定制并编译好的二进制包,直接就可以安装,不用再编译,但存在以下缺点:(1)发布人定制的内容不能满足要求;(2)rpm可能在比较旧的平台编译,在新的平台上安装,有可能不能发挥最近性能;(3)不能很好管理软件包的依赖关系。yum是基于rpm的,所以使用yum必须要事先安装rpm,yum可以自动检测软件包之间的依赖关系,并依次安装,但由于yum是基于C/S模式的,每次安装软件可能都要到服务器目录中下载安装包。手动安装需要自己编译软件的源码,虽然操作比较复杂,但手动

编译可以根据当前的硬件环境优化编译的结果,提高性能。


在Linux环境中,软件包一般安装在/usr/local目录下。


软件包命名格式:

主包:

    Bind-9.7.1-i586.e15.rpm

 子包:

    Bing-libs-9.7.1.-i586.e15(操作系统型号).rpm

包名格式:

    Name-version-release.arch.rpm

    Bing-major.minor.release-release.arch(rpm制作者定).rpm

主版本号:重大改进

次版本号:某个子功能发生了重大变化

发现号:修正了部分bug,调整了一点功能



一、通过rpm管理软件包

1.安装

rpm –I  /PATH/TO/PACKAGE_FILE

     -h显示安装进度;每个#表示2%

     -v: 显示详细过程

     -vv: 显示更详细的过程

     -ihv: 安装显示安装进度和详细的过程

 

    --nodeps: 忽略依赖关系

    --force: 强行安装,可以实现重装或者降级

    --replacepkg: 重新安装,替换原有的安装

    --replacefiles:  替换文件

 

     rpm –ivh –replacepak  /path/package --重新安装


2.查询

rpm –q  软件包名(精确) :  查询指定包是否已经安装

rpm –qa  z*  : 查询已安装的所有包

rpm –qi PACKAGE_NMAE: 查询指定包的说明信息

Rpm –ql package_name: 查询指定包安装后生产的文件列表

Rpm –qf /path/to/somefile: 查询指定文件是有那个rpm包安装生成的

Rpm –qc package: 查询指定包安装的配置文件

Rpm –qd package_name: 查询指定包安装的帮助文件

Rpm –q –scripts package_name : 查询指定包中包含的脚本

 

如果某个rpm包尚未安装,我们需要查询其说明信息、安装以后生成的文件:

Rpm –qpi  /path/to/package_file

Rpm –qpl  /path/to/package_file: 查看安装后有哪些文件

 

3.升级

rpm –Uvh /path/to/new_package_file :如果装有老版本的,则升级,否则则安装

rpm –Fvh /path/to/new_package_file : 如果装有老版本,则升级,否则,退出

rpm –ivh –oldpackage packagename: 降级


4.卸载

rpm  -e package_name

        --nodeps : 没有依赖


5.检验

rpm –V package_name


6.重建数据库

ls  /var/lib/rpm

rpm  

    --rebuild : 重建数据库

    --initdb : 初始化数据库,没有才建立,有就不用建立

 

 

7.检验来源合法性,及软件完整性

#ls /et/pki/rpm-gpg/

先导入密钥文件:

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

rpm –K package_name

 

rpm –K –nodigest zsh-4.2323.tar

dsa,gpg:  验证来源合法性,也即验证签名,可以使用--nosignatre,略过此项。

 

Sha1,md5: 验证软件包完整性的,也可以用--nodigest,略过此项。

 

RPM方式首先要经过定制编译成二进制格式,所以:

(1).有些特性是编译选定的,有些特性可能没包含,可能无法使用。

(2).rpm落后于源码包,有时落后很多,有些bug没有修复。


二、通过yum管理软件包;

Yum是rpm的前端工具,必须先安装rpm

rpm: 依赖关系处理不好

Yum可以处理好安装包的依赖关系,yum是基于C/S(Client/Server),要依赖yum仓库(yum repository),yum仓库可以是以下形式:

  (1)ftp

  (2)web

  (3)file

 

Yum  Client 要配置文件,指定yum仓库。

    

三、手动管理软件包

如果要编译c,则需要安装c的编译环境gcc。

如果要编译c++,则需要安装c++的编译环境G++。


Make项目管理工具

     在make之间,必须要生成一个Makefile文件,里面 定义了make(调用gcc,g++)按何种次序去编译这些源程序。

     软件包必须有makefile文件,但makefile不是软件的一部分。

    

      首先,通过configure定制软件包的安装的方式,然后生成MakeFile文件,然后通过make方法编译,再通过make install安装。

 Make install 的实质就是把编译后的文件和配置文件拷贝到指定目录。

 

 一般步骤:

tar  -xf  packagename_1.0.tar.gz

cd   packagename_1.0

./configure

    --help

    --prefix=/path/to/somewhere  指定安装目录

    --sysconfdir=/path/to/conffile_path 指定配置文件目录(不指定,放到默认目录)

功能:1.让用户选定功能特性;

             2.检查编译环境。

Make

Makeinstall

 

例子:以下是按照apache的例子。


首先安装软件包:


#tar -xf httpd-2.4.1.tar.gz

#cd httpd-2.4.1

#./configure–prefix=/usr/local/httpd  –conf-dir=/etc/httpd/httpd.conf

#make

#makeinstall


如果安装在非默认目录下,在安装软件后,要配置(1)软件命令的目录;(2)软件依赖库的目录;(3)软件的头文件;(4)软件命令的man目录。

1.配置软件命令的目录

修改PATH环境变量,以能够识别此程序的二进制文件路径。在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere

例如:

export PATH=$PATH:/usr/local/httpd/bin

测试: echo   $PATH

配置完之后,就可以直接识别apachectl命令,不用在前面加命令的路径。


2.配置软件依赖库的目录

在某些情况下,其他软件要依赖目前安装软件的库文件,所有必须要在系统中配置库的目录,这样其它软件才能找得到。默认情况下,系统搜索库文件的路径是/lib,/usr/lib。由于软件安装的目录是自定义的,所以要增添额外搜索路径。在/etc/ld.so.conf.d中创建以.conf为后缀名的文件,而后把要增添的路径直接写到此文件中。

#ldconfig  通知系统重新搜寻库文件

                 -v : 显示重新搜寻库的过程

例子:  ldconfig –v:显示系统中所有的库

vim  /etc/ld.so.conf/http.conf, 文件的内容如下:

/usr/local/apache/lib

 

3.头文件:输出给系统

  软件的库都对应的头文件,其它软件调用该软件的库的时候,必须要知道头文件的具体地方,通过头文件调用库中的方法。系统默认存放的头文件的地方:/usr/include,但由于软件的安装目录是自定义,所以要增添头文件搜索路径,可以使用连接进行:

  /usr/local/tengine/include/    /usr/include/

  具体做法有2种方式:

  第一种:逐个文件连接一次,单独连接,缺点:文件多的话不容易管理

  ln –s /usr/local/tengine/include/*  /usr/include/

  第二种:目录创建一个连接

  ln –sv  /usr/local/tengine/include/usr/include/tengine

#include,供别人调用库的规范文件

例子:ls include/

ln –sv /usr/local/apache  /usr/include/httpd  

这种方式容易管理


4.man文件路径:安装--prefix指定目录下的man目录:/usr/share/man

  有2中配置方式:

  第一种:

  找到系统中man的配置文件man_config,在配置文件中加入安装软件的man目录;

  例如:

   vim  /etc/man_config

  在man_config中加入tengine的man目录

  第二种:

   手动一个个命令加

   man –M /path/to/man_dir COMMAND

   例子:Man–M /usr/local/apache/man htpasswd


安装完,可以通过netstat测试:

netstat  –r : 显示路由表

netstat  –t: 显示已经建立的tcp连接

netstat –u: 显示udp连接

netstat –tl: 显示监听状态的TCP连接

netstat –ul: 显示监听赚头的UDP连接

netstat –n: 以数字方式显示

netstat  –p:  显示监听指定的套接字的进程号和进程名

 

以上步骤不一定都是必须,但都要考虑。


        综述,手动编译安装可以根据硬件环境制定编译计划,提供编译代码的质量,而且随时可以获取到最新的源码,修改之前的bug,所以建议用手动编译方式安装。



0 0
原创粉丝点击