Linux基础知识-4 Linux安装包管理

                               Linux基础知识-4 Linux安装包管理

                                                                                                                              作者:田超凡

版权所有,转载请注明原作者,仿冒侵权必究法律责任

1、软件包分类

 1、源码包

脚本安装包 (linux采用C语言开发,那么源码包大部分也是c写的包进行安装,这样源码包进行易报错,不推荐,

        没有经过编译成机器语言(0、1二进制)的包,脚本安装包就是把源码包写一个安装界面,操作方便,

    一般install.sh但是这种包不多).

二进制包(RPM包、系统默认包,把C语言源代码包经过编译成机器语言(01二进制)的包),

   因此二进制包安装快,因为它是开发厂商已经编译好的,安装的时候不需要再编译,所以速度快,

   缺点,看不到源代码,redhat系列的二进制包就是rpm,ubantu则不是,这也是这2个系列最大的区别

2、源码包

源码包的优点:开源,如果有足够的能力,可以修改源代码,可以自由选择所需的功能软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高卸载方便(直接删除源码包安装的文件夹即可)

源码包的缺点

安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误编译过程时间较长,安装比二进制安装时间长因为是编译安装,安装过程中一旦报错新手很难解决

3RPM

二进制包的优点

包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载安装速度比源码包安装快的多

二进制包缺点:经过编译,不再可以看到源代码功能选择不如源码包灵活依赖性

RPM包管理-rpm命令管理

 

  1. RPM包命名原则

RPM:redhead package manager

 httpd-2.2.15-15.el6.centos.1.i686.rpm

  Httpd   软件包名    

  2.2.15  版本号

  15   版本发布的次数

  el6.centos   包所适应的操作系统

  i686.Rpm   扩展名,linux所有文件没有扩展名,为了方便管理员查看的

2、RPM包依赖性

树形依赖: a---->b--->c

环形依赖: a-->b-->c-->a

模块依赖: 模块依赖查询网站:

www.rpmfind.net

例如:mount /dev/sr0 /mnt/cdrom       

      cd /mnt/cdrom/Packages     

      ls

rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm

发现要依赖libodbcinst.so.2  凡是这种扩展名是so.2  表示一个库文件,那么这种库文件要在哪里下载安装呢? 才能装我们的mysql与odbc的驱动包呢?

大家注意:查询www.rpmfind.net 搜索libodbcinst.so.2  发现  只需要下载相应的rpm,然后安装,那么这个包就有了,因为这个包在下载的rpm里面

举例:现在需要安装apache

 

 

 

再装apr-util-ldap 装它的时候  发现又有依赖包,先装依赖包,如果依次有依赖,再逐级装完,再装httpd-tools  所以依赖搞定,再装

 

 

 

 

RPM包管理-rpm命令管理

1、包全名与包名

包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径,一般在安装和升级的时候

包名:操作已经安装的软件包时,使用包名。Linux在查找和删除的时候用包名即可,会去找是搜索/var/lib/rpm/中的数据库

2RPM安装

rpm –ivh 包全名

选项:

-i(install)

-v(verbose  详细信息)

-h(hash 散列表 显示安装进度)

--nodeps  不检查依赖性 一般不要

3、卸载

rpm -e 包名(不需要包全名,也不需要在特定的文件夹,任何一个位置敲该命令即可,因为会自动去var/lib/数据库搜索)

选项:

-e(erase)

--nodeps

注意:在卸载的时候,如 a依赖b b依赖c  卸载的时候先卸a 再卸载b 最后c,以httpd  apache的包为例子,再装的时候发现都是依赖别的包,不是别的包依赖它  那么这个时候卸载的时候  直接   rpm -e httpd 即可

二、RPM包管理-rpm命令管理

1、查询是否安装

[root@localhost ~]# rpm -q 包名

#查询包是否安装

选项:  -q    :query      -a  :all

[root@localhost ~]# rpm –qa   #查询所有已经安装的RPM包

Rpm -qa |grep httpd  查询所有的httpd(apache)包   

| 表示管道符

2、查询软件包详细信息

[root@localhost ~]# rpm –pi 包名

选项:

-i  information 查询软件信息

-p  package 查询安装包信息

如:rpm -qip zip-3-0-1.el6.x86_64.rpm

通过这命令查看包的信息

3、查询包中文件安装位置

[root@localhost ~]# rpm –pl 包名

选项:

-l    list

-p    package  查询软件包默认装在哪里的位置

如: rpm -qlp zip-3-0-1.el6.x86_64.rpm

一般在安装的时候,包的安装位置是固定的,是厂商在生产的时候,就决定这个包应该放在哪个位置是合格的,如果手动改了默认的安装位置,会引发相关的一些问题,如一些服务的启动就无法找到rpm包安装的相关服务,不推荐手动改变它的位置

4、查询系统文件属于哪个RPM

[root@localhost ~]# rpm –qf 系统文件名

选项:

-f 查询系统文件属于哪个软件包(file)

如:已经装了httpd这个包 查到这个包安装后一些的文件, rpm -ql httpd,  然后复制一个文件名

rpm -qf /var/www/icons/up.png  则可以知道属于哪个包,在这里就是属于httpd-2.2.15-29.el6.centos.x86_64这个包

5、查询软件包的依赖性

[root@localhost ~]# rpm –qR 包名

选项:

-R 查询软件包的依赖性(requires)

如: rpm –qRp  包全名(/mnt/cdrom/包全名)

6RPM包校验

[root@localhost ~]# rpm –V 已安装的包名

选项:

-V 校验指定RPM包中的文件(verify)

校验:主要是看安装的包文件,是否被修改过,rpm -V httpd  如果没有任何信息,证明没有被修改过,就是初始的文件

现在修改httpd包的某个配置文件 如etc/httpd/conf/httpd.conf  ,在文件中随便修改点内容

7RPM包校验

[root@localhost ~]# rpm –V 已安装的包名

选项:

-V 校验指定RPM包中的文件(verify)

校验:主要是看安装的包文件,是否被修改过,rpm -V httpd  如果没有任何信息,证明没有被修改过,就是初始的文件

现在修改httpd包的某个配置文件 如etc/httpd/conf/httpd.conf  ,在文件中随便修改点内容

 

8RPM包中文件提取

[root@localhost ~]# rpm2cpio 包全名 | \

cpio -idv .文件绝对路径

\ 表示:一行写不下,换行继续写   | 表示管道符    2 表示to

rpm2cpio    :将rpm包转换为cpio格式的命令

cpio#是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

[root@localhost ~]# cpio 选项 < [文件|设备]

选项:

-i:copy-in模式,还原

-d:还原时自动新建目录

-v:显示还原过程

[root@localhost ~]# rpm -qf /bin/ls    如:把ls文件移走 

#查询ls命令属于哪个软件包

[root@localhost ~]# mv /bin/ls /tmp/   此时写ls  提示没有那个文件或目录

#造成ls命令误删除假象

[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls

含义:/mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm 这个包转成cpio格式 然后用cpio命令 提取/bin/ls 放到 .(代表当前目录)的bin/ls下

#提取RPM包中ls命令到当前目录的/bin/ls下

[root@localhost ~]# cp /root/bin/ls /bin/

#把ls命令复制会/bin/目录,修复文件丢失   

注:  \ 表示换行  接着写   | 表示管道符 将2个命令隔开  如:# rpm -qa|grep licq

这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来

 

6.3.1 IP地址配置和网络yum源

1、IP地址配置

[root@localhost ~]# setup  

#使用setup工具  配置  如何看网关、DNS、子网掩码,通过网络的详细信息就可以看

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

把ONBOOT=“no” 改为

ONBOOT=“yes“

#启动网卡

[root@localhost ~]# service network restart

#重启网络服务

2、网络yum

[root@localhost yum.repos.d]# vi /etc/yum.repos.d/CentOS-Base.repo

[base] 容器名称,一定要放在[]中

name 容器说明,可以自己随便写

mirrorlist 镜像站点,这个可以注释掉

baseurl 我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址

enabled 此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效

gpgcheck 如果是1是指RPM的数字证书生效,如果是0则不生效

gpgkey 数字证书的公钥文件保存位置。不用修改, 默认使用第一个yum源   也就是base

注意:yum.repos.d该文件夹下有4个文件,这个 CentOS-Base.repo 表示网络yum源文件改成本地的yum源  我们说linux所有的yum服务器里面的rpm都是在镜像文件里面的   

先挂载操作系统的dvd,然后改

baseurl=file:///mnt/cdrom      ///  第三个/表示根目录

常用yum命令

1)查询

[root@localhost yum.repos.d]# yum list

#查询所有可用软件包列表  yum所对应的远程服务器的包列表

yum-utils.noarch      1.1.30-40.el6   base    

  包名称                 版本         base容器

就是刚刚查的yum /etc/yum.repos.d/CentOS-Base.repo这个容器,执行yum list,默认去base容器(容器配置远程服务器的url 等信息) 

[root@localhost yum.repos.d]# yum search 关键字

#搜索服务器上所有和关键字相关的包

注意:关键字

就是yum的包名,注意前面讲了包名和包全名的概念,这个概念只对rpm手工管理生效,我们现在讲yum,直接写报名,它会去服务器找相应的包的版本等等信息,所以yum没有包名和包全名的概念  如  yum search http  会直接去远程服务器列出apache的包和相关包的全部信息

2)安装

[root@localhost yum.repos.d]# yum –y install 包名

选项:

如:yum -y install gcc 

Gcc是c语言的一个编译器 ,源码包必须要有这个gcc编译器才能装

3)升级

[root@localhost yum.repos.d]# yum -y update 包名

选项:

注:升级,千万记得包名加上,如果没有接上包名,默认升级所有的软件包,包括linux的内核升级,就挂了,因为linux是本地启动要配置一些信息,不能直接从远程升级

4)卸载

[root@localhost yum.repos.d]# yum -y remove 包名

注:卸载的时候  把依赖的全部卸载掉 ,会有问题,如果别的包也依赖这个包所依赖的包,就挂了,最好不要卸载

YUM软件组管理命令

[root@localhost ~]# yum grouplist

#列出所有可用的软件组列表(在安装linux系统的时候,有一些定制功能的信息,我们当时安装linux时选基本的服务器,有很多功能没装,如输入法)  默认中文显示,

[root@localhost ~]# yum groupinstall 软件组名

#安装指定软件组,组名可以由grouplist查询出来

如果 软件组名有空格   要用引号 括起来 ,要显示中文组名所对应的英文组名

[root@localhost ~]# yum groupremove 软件组名

#卸载指定软件组

注意:不要更改配置文件的格式,如加空格,注释# 不写在开头

如:在配置文件yum.repos.d下:某一行  /mnt/cdrom/..后面加# 

用命令:yum list |more  显示部分报错信息

光盘yum源搭建

光盘yum源搭建步骤

1)挂载光盘

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/

2)让网络yum源文件失效

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

[root@localhost yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak

[root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak

3)修改光盘yum源文件

[root@localhost yum.repos.d]# vim CentOS-Media.repo

[c6-media]

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom

#地址为你自己的光盘挂载地址

#   file:///media/cdrom/

#   file:///media/cdrecorder/

#注释这两个不存在的地址

gpgcheck=1

enabled=1

#把enabled=0改为enabled=1,让这个yum源配置文件生效

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

注意:#注释符号不要乱打,配置文件的有严格的格式,甚至空格

改完后 yum list

zlib-static.x86_64             1.2.3-29.el6         c6-media

我们可以看到:c6-media 就是本地的光盘,不是之前的base容器了

源码包和RPM包的区别

1、区别

安装之前的区别:概念上的区别

安装之后的区别:安装位置不同

 

2、RPM包安装位置是安装在默认位置中

 

3、源码包安装位置

安装在指定位置当中,是人为指定的,一般是/usr/local/软件名/

4、安装位置不同带来的影响

RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:

/etc/rc.d/init.d/httpd start

service httpd start

/etc/rc.d/init.d/   httpd 就是一个可执行文件

注意:rpm包安装的所有软件,它们的服务可执行文件全都在这个目录下,绿色表示可执行文件,如启动apache的服务/etc/rc.d/init.d/httpd start 或者service httpd start或 restart 

注意:service是Redhat专有的命令,其它版本不一定有,如果没有,就只能写绝对路径启动,

Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

 启动报错,说主机名和回环地址不匹配,后面讲,之所以service这个命令能启动,因为service它会去rpm包安装的默认位置(默认位置一定是厂商固定的位置)去搜索路径,所以源码包的安装,就不能用这个命令,因为它的安装位置是人为指定的

源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:

/usr/local/apache2/bin/apachectl start

 

源码包安装过程

1、安装准备

安装C语言编译器

下载源码包

http://mirror.bit.edu.cn/apache/httpd/

2、安装注意事项

源代码保存位置:/usr/local/src/

软件安装位置:/usr/local/

如何确定安装过程报错:

安装过程停止

并出现error、warning或no的提示

注意:前面用rpm包装了httpd,现在用源码包是否还能安装,可以,因为存放路径不同

3、源码包安装过程

下载源码包,上传服务器

解压缩下载的源码包  tar -zxvf 

默认解压当前文件夹 do -sh httpd-2.2.9(解压后的文件夹) 查看文件夹有多大

进入解压缩目录 cd httpd-2.2.9

注意:一般装软件之前 看INSTALL和README说明

4./configure 软件配置与检查

1)定义需要的功能选项

configure是用来进行用户个性配置的工具,一般--开头的说明的是需要配置的选项,如果不知道选项,用./configure --help 查看,

比如你给的这个 -- prefix就是说软件安装目录设置在哪里,后面的=/usr就是你给出的安装目录,当然你完全可以换一个目录,

但并不是所有的tar包都是源代码的包,可以ls看看有没有configure这个文件,也许你下的是二进制的包,如果是二进制的包,解压后直接就能使用

2)检测系统环境是否符合安装要求。如gcc是否装

3)把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑

注意:这个Makefile文件,是执行 ./configure --prefix=/usr/local/apache2之后才有的 

作用:软件安装到usr/local这个目录下,保存到apache2文件夹里  apache2文件夹有我们自定义

4)make编译

作用:调用gcc 编译源代码包

5)、make clean

 清除之前编译的可执行文件及配置文件  

make distclean 要清除所有生成的文件

6)、make install 

作用:才是真正的安装,这个时候才会向usr/local/apache2这个目录写入东西,启动服务,注意不能用service 命令,只能用绝对路径,看看INSTALL文档说明,如何启动服务,服务名是什么

 

/usr/local/apache2/bin/apachectl start

安装完成后:有2个错误,一个是80端口被之前的apache占用,2还是回环地址的问题,停止之前的rpm包安装的httpd     service httpd stop ,再次启动即可

 

注意:如果不能访问   service iptables stop关闭防火墙

5、源码包的卸载

不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件。

rm -rf /usr/local/apache2/

注意:如果要被外部访问的软件包,建议用源码包安装,只是自己用的建议用rpm安装

脚本安装包

1、脚本安装包并不是独立的软件包类型,常见安装的是源码包。是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。非常类似于Windows下软件的安装方式

2、Webmin的作用

Webmin 是一个基于 Web 的 Linux 系统管理界面。您就可以通过图形化的方式设置用户帐号、Apache、DNS、文件共享等服务。

3、Webmin安装过程

下载软件http://sourceforge.net/projects/webadmin/files/webmin/

解压缩,并进入加压缩目录执行安装脚本

一般执行文件就是setup.sh执行./setup.sh即可直接回车表示下一步类似windows的图形安装下一步下一步,

所谓脚本安装,就是用户不需要自己make make install

注意:默认的用户名是admin

猜你喜欢

转载自blog.csdn.net/qq_30056341/article/details/108468370
今日推荐