Linux运维 第二阶段 (三)软件安装

Linux运维第二阶段(三)软件安装

程序组成部分:二进制程序;库(自身库、共享库.so);配置文件;帮助文件。

程序=指令+数据;指令:芯片,CPU(普通指令,特权指令),指令集

/bin,/sbin,/lib,/etc(系统启动需要用到的程序,这些目录不能挂载到额外的分区,必须在根文件系统的分区上);

/usr/bin,/usr/sbin,/usr/lib(操作系统的基本功能,或核心功能,应该单独分区);

/usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man(第三方软件安装位置,建议独立分区);

/opt(早期第三方软件安装位置)

/proc,/sys(不能单独分区,默认为空)

/dev(不能单独分区,2.6kerneludev动态地创建设备文件,2.4kernel在此目录下会事先创建所有设备文件,不能根据文件识别设备)

/home(建议单独分区)

/root(没有也可,不要单独分区)

/var(作为系统的补充,没有也可,有它更规范,应该单独分区)

/boot(内核及initramfs放至处,一般/boot单独分区,除此分区外其它均划分为LVM

 

软件包管理器的核心功能:制作软件包;安装、卸载、升级、查询、校验

rpmredhat packagemanager-->rpm is package managerredhat/suse

dpkgdebianpackager,DEBIAN

yumyellowdog updatemodifier

/var/lib/rpm/*rpm数据库,安装、卸载、升级、校验、数据库的重建、验证数据包等工作

 

命名:

主包:bind-9.7.1-1.el5.i586.rpm

次包:bind-libs-9.7.1-1.el5.i586.rpm

name-version-release.arch.rpm

bind-major.minor.release-release.arch.rpmmajor主版本号,重大改进;minor次版本号,某个子功能发生重大变化;前一个release发行号,修正了部分bug调整了一点功能;后一个releaserpm包作者)

rpm包:二进制格式(rpm作者将源程序编译配置完成后制作成rpm);源码格式

 

#uname -rprint system information.-a,--all;-r,--kernel-release;-s,--kernel-name;-n,--nodename

 

安装:

rpm包,二进制格式(源程序-->编译-->二进制格式),有些特性是编译选定的,如果编译时未选定此特性,则无法使用;rpm包的版本会落后于源码包,甚至落后很多

#rpm -ivh  PACKAGE_NAME

-i--install

-vPrint  verbose information,也可用-vv显示更详细的信息)

--h--hash,#显示进度,每个#表示2%,共50个)

--nodeps(忽略依赖关系)

--replacepkgs(重新安装,替换原有安装)

--force(强制安装,可以实现重装或降级)

查询:

#rpm -q  PKG_NAME--query,查询指定的包是否已安装)

#rpm -qa(查询已安装的所有包)

#rpm -qa  |  grep  “^z”

#rpm -ql  zsh  |  less--list查询指定包安装后生成的文件列表)

#rpm -qi  PKG_NAME--info查询指定包的说明信息)

#rpm -qf  /PATH/TO/FILE--file查询指定文件由哪个包安装的)

#rpm -q  --scripts  PKG_NAME(查询指定包中包含的脚本)

#rpm -qc  PKG_NAME--configfiles查询指定包安装的配置文件)

#rpm -qd  PKG_NAME--docfiles查询指定包安装的帮助文件)

#rpm -qpl  /PATH/TO/PKG_NAME(查看尚未安装的包安装后会生成的文件)

#rpm -qpi  /PATH/TO/PKG_NAME(查看尚未安装的包的说明信息)

升级:

#rpm -Uvh  /PATH/TO/PKG_NAME--upgrade若有老版本则升级,否则安装)

#rpm -Fvh  /PATH/TO/PKG_NAME--freshen若有老版本则升级,否则退出)

#rpm -ivh  --oldpackage  /PATH/TO/PKG_NAME(降级)

卸载:

#rpm -e  PKG_NAME--erase;--nodeps

校验:

#rpm -V  PKG_NAME--verify;状态有S,M,5,D,L,U,G,T,P

重建数据库(/var/lib/rpm/*)

#rpm --rebuild(重建数据库,执行此条一定会重新建立)

#rpm --initdb(重建数据库,没有才建立,有则不建立)

校验来源合法性及软件包的完整性:

#rpm --import /etc/pki/rpm-gpg/RPM-GPG_KEY-redhat-release

#rpm -K  PKG_FILE--checksig

 

yum

yum仓库中的元数据文件:

primary.xml.gz(所有rpm包的列表;依赖关系;每个rpm安装生成的文件列表)

filelists.xml.gz(当前仓库中所有rpm包的所有文件列表)

other.xml.gz(额外信息,rpm包的修改日志)

repomd.xml(上面三个文件的timestampchecksum

comps*.xmlrpm包分组信息)

/etc/yum.conf;

/etc/yum.repos.d/*.repo

定义repo文件:

[REPO_ID]

name=DESCRIPTION

baseurl=ftp://(或http://file://

enabled=11表示启用,0禁用)

gpgcheck=0

gpgkey=

 

#yum options  COMMAND  PKG_NAME

#yum list  all

#yum list  available(仓库中有尚未安装)

#yum list  installed

#yum list  updates(可用的升级)

#yum repolist  [enabled|all|disabled](显示repo列表及简要信息,默认显示enabled

#yum install  PKG_NAME

#yum update|update-to  PKG_NAME

#yum remove|erase  PKG_NAME

#yum info  PKG_NAME

#yum provides|whatprovides /PATH/TO/FILE(查看指定的文件或特性是由哪个包生成的)

#yum grouplist  |  grep  “^z”

#yum groupinfo|groupinstall|groupremove|groupupdate  GROUP_NAME

#yum localinstall  *.rpm  *.rpm(安装rpm包自动解决依赖关系)

 

编译安装(定制):

手动编译安装;编译环境(开发环境);开发库;开发工具(gcc(gnu c compilier);g++(g plus plus));

make项目管理工具(make调用gccg++)makefile定义了gcc何种次序去编译这些源程序文件中的源程序(automake-->makefile.in-->makefile)

autoconf-->configure(给用户提供接口让用户选择哪些特性)

 

编译安装的三步骤:./configure;make;make install

安装前要先准备开发环境(编译环境)”Development Tools”,”Development Libraries”,”Compatibility Libraries”

#tar xf  SAMPLE.tar.gz

#cd SAMPLE_DIR

#./configure  --help

#./configure  --prefix=/path/to/somewhere  --sysconfdir=/path/to/confile_path

#make

#make install

编译完成后需要调试如下信息:

1、  修改PATH环境变量,以能够识别此程序的二进制文件路径,再次登录生效(在/etc/profile文件中添加,或/etc/profile.d/rename.sh)内容为export  PATH=$PATH:/path/to/somewhere

2、  默认情况下,系统搜索库文件的路径是/lib,/usr/lib,要增添额外搜寻路径,在/etc/ld.so.conf.d/中创建以.conf为后缀的文件,而后把增添的路径直接写在此文件中,#ldconfig  -v通知系统重新搜寻库文件,-v显示过程

3、  头文件,每一个输出了库文件的软件都一定会有头文件提供,头文件包含了每一个库文件的函数、函数的调用参数、参数类型等相关属性,这些属性是被其他人做二次开发时指定调用风格的文件(规范式文件),默认位置/usr/include,增添头文件搜寻路径,使用链接进行:#ln  -sv  /usr/local/software_name/include  /usr/include/software_name

4、  man文件路径:安装时--prefix指定的目录下有man目录,将此路径添加至man配置文件/etc/man.config(MANPATH_MAP /PATH)或使用man命令时指定帮助文档路径(#man  -M  /PATH COMMAND)

 

 

 



以上是学习《马哥网络视频》做的笔记。

 












1、分类:源码包、二进制包

源码包:优(开源,有能力可修改源代码;可自由选择所需功能;编译安装,更适合自己的系统,稳定且高效;卸载方便);缺(安装步骤多,尤其较大软件集合,如LAMP环境搭建,容易出现拼写错误;编译安装时间长;安装过程一旦报错,新手很难解决)。

二进制包:优(包管理简单,只通过几个命令就可实现安装、升级、查询、卸载;安装进度比源码包快的多);缺(经过编译,不再可看到源代码;功能选择不如源码包灵活;依赖性很繁琐)。

         依赖性:树形依赖(a->b->c);环形依赖(a->b->c->a);模块依赖(www.rpmfind.net

2、rpm安装

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

2.2.15软件版本;-15软件发布的次数;el16软件发行商,RHEL6.x

》默认安装位置:

/etc;/usr/bin;/usr/lib;/usr/share/doc;/usr/share/man

#rpm  -ivh 包全名  (install\verbose\hash

       --nodeps                          不检测依赖性

--replacefiles                    替换文件安装 

--replacepkgs                     替换软件包安装

--force                           强制安装,相当于以上两项的结合

--test                            测试安装,不会实际安装

--prefix                          指定安装目录

#rpm -Uvh  包全名                      upgrade旧版升到新版,无旧版也安装

         #rpm  -Fvh      包全名          freshen旧版才能升级,无旧版不安装

         #rpm  -e  包名                  卸载

         #rpm  -q  包名                  query查询(例:#rpm �Cqa|grep httpd

         #rpm  -qi  包名                 information查询包的信息

         #rpm  -qip  包全名              package查询未安装包信息

         #rpm  -ql  包名                 list查询包中文件的安装位置

         #rpm  -qf  系统文件名           file查询系统文件属于哪个包

         #rpm  -qR  包名                 recursion依赖性

         #rpm  -qRp 包全名              查询未安装包依赖性

#yum -y  install  包名

         #yum  -y remove  包名

         #yum  -y update  包名

         #yum  list                                     查询服务器中可以安装的包

         #yum  list  包名                               查询服务器是否有此包

         #yum  search 关键字                            搜索服务器上和关键字相关的包

         #yum  info  包名                               查询指定软件包的信息

         #yum  grouplist                                查询可以安装的软件组

         #yum  groupinfo “软件组名”                   查询软件组内包含的软件

         #yum  groupinstall “软件组名”                安装软件组

         #yum  groupremove “软件组名”                 卸载软件组

》搭建光盘 yum

         #mv  CentOS-Base.repo  CentOS-Base.repo.bak

         #vi  /etc/yum.repos.d/CentOS-Media.repo

                   baseurl=file:///mnt/cdrom/                指定yum源位置

                   enabled=1                                 yum源文件生效

                   gpgcheck=0                                rpm验证不生效

#rpm -V  包名                           verify校验指定包中文件

         #rpm  -Vf  系统文件名            校验系统文件是否被修改

         数字证书(对即将要安装的包验证)

         特点:安装原厂的公钥文件;安装rpm包时,提取rpm包中的证书信息与本机安装的原厂证书进行比对;验证通过,安装,否则不允许安装并警告。

         位置:/mnt/cdrom/RPM-GPG-KEY-CentOS-6               光盘中

                   /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6     系统中

         #rpm  --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6      

3、》#cpio -ovcB  >  文件|设备

备份模式o(out),v(verbose),c(portable format存储方式),(输出块为5120byte,而不是模式的512byte)

#cpio -ivcdu  <  文件|设备

还原模式i(in),d(还原时自动新建目录),u(使用较新的文件覆盖较旧的文件)

#cpio -p  目标目录

例:#find .  �Cprint | cpio  -ovcB >  /root/etc.cpio

         #cpio  -ivcdu < /root/etc.cpio

注:CentOS6.x中,如果备份时写绝对路径,则恢复时直接到绝对路径,最好使用相对路径。

例:#find /boot  -print | cpio  -p /tmp/test/

提取rpm包中文件:

         #rpm  -qf /bin/ls

         #rpm2cpio  /mnt/cdrom/Packages/core….. | cpio  -idv ./bin/ls

         #cp  /root/bin/ls /bin/

         注意:./bin/ls 提取ls到当前目录下

4、》源码包安装:解压;cd 解压目录;查看安装文档(installreadme);编译前准备(./configure --prefix=/usr/local/apache2/);编译make;编译安装make install

启动:#/usr/local/apache2/bin/apachect1  start

卸载:直接删除安装目录

》源码包打入补丁:

#patch -pn  要打补丁的文件 < 补丁文件

注:n为数字,按照补丁文件的路径,指定更新位置

5、》脚本安装程序:sebmin的安装

# ./setup.sh  (安装位置、日志位置、perl安装位置、端口、密码、ssl不启用、启动)

6、》函数库的管理,分类:静态函数库、动态函数库

         静态函数库:*.a,程序调用时被直接整合到程序中;优(程序执行时不需要调用外部数据,可直接执行);缺(文件较大,升级困难,需把整个程序重新编译)

         动态函数库:*.so,程序用到时再去调用函数库。

         #ldd  /bin/ls                  (查询ls调用的函数库)

         #ldd  -v  可执行文件名         (详细显示版本信息)

         注:软件正常安装不需调整函数库,若未安装正确手工安装:1把函数库放入指定位置/usr/lib/lib;2把函数库所在位置写入/etc/ld.so.conf

         #cp  *.so /usr/lib

         #vi   /etc/ld.so.conf

         include  ld.so.conf.d/*.conf

         /usr/lib

         #ldconfig                       把函数库读入缓存

         #ldconfig  -p                   列出系统缓存中所有识别的函数库

 

 

 

 注:本文由互联网收集整理(51CTO、360DOC、chinaunix、百度百科、兄弟连免费视频等)。      


你可能感兴趣的:(linux,运维,软件安装)