软件包分类
o 源码包----Windows几乎没有,源码包安装有好处就是,1.可以自己选择的功能多,不想Windows中安装软件可以选择的功能比较少,2.并且由于是在本机上编译的源码包,这个程序更适合自己的系统,更快速。速度快百分之5左右。3.而且还有卸载方便的特性,直接删除安装位置就可以了。坏处就是1.安装时间过长,因为需要编译,比如安装一个50兆左右的软件,源码包需要两个小时,而二进制包,只需要几分钟就搞定
o 二进制包(RPM包,系统默认包)--其实就是源码包经过编译之后的二进制(0101...)包,只不过两者编译的格式不一样,Windows是.exe格式,Linux是.rpm格式。这种二进制包的好处就是1.可以节约安装时间和选择,2.只通过几个命令就可以了实现包的安装 、升级、查询和卸载。坏处就是 1.不能再看到源代码了,2.功能 选择不如源码包灵活。3. 还有软件的依赖性(就是安装一个软件必须先安装另一个软件等,和Windows中的大型游戏比较像,比如安装一个大型游戏之前,必须安装一些渲染软件,但是Linux中的依赖性非常多),软件依赖性,可以通过www.rpmfind.net来查询,就不用自己一个一个查了。
RPM包的命名规则
jdk-7u80-linux-x64.rpm
jdk 软件包名
7u80 软件版本
linux 适用操作系统
x64 适用硬件平台是64位的
rpm 文件扩展名
- 为什么要说这个命名规则呢?是因为在操作没有安装的软件包的时候,需要使用包全名,也就是 jdk-7u80-linux-x64.rpm,操作已经安装好的软件包的时候,只需要使用薄酒就可以了,因为安装好的是去搜索/var/lib/rpm中的数据库。和locate命令很像
RPM安装
1. 安装
rpm -ivh 包全名
选项:
-i (install)安装
-v (verbose)显示详细信息
-h (hash)显示进度
--nodeps 不检测依赖性=========但是不建议检测依赖性,因为软件安装没有依赖性,也就是用不了了。
2.升级
rpm -Uvh 包全名
选项:
-U (upgrade)升级
3.卸载
rpm-e 包名
选项:
-e (erase)卸载
--nodeps 不检测依赖性
4.查询
rpm -q 包名
#查询包是否安装
-q 查询(query)
rpm -qa
#查询所有已经安装的rpm包
-a 所有(all)
rpm -qi 包名
选项:
-i 查询软件安装信息(information)
-p 查询没有安装的信息(package)=====用这个命令的时候必须用包全名,因为操作的是没有安装的包。
-l 列表(list)(查询包中文件的安装位置)
rpm -qf 系统文件名=====这个文件名必须是包安装出来的
选项
-f 查询系统文件属于那个包(file)
5.检查是否被修改
rpm-V 包名(检验,就是自己的文件是否被修改)(verify)
做法:是将原来软件包安装的时候的状态记录下来,然后和这个命令出来的进行对比,如果一致,就证明没人更改过,如果不一致就证明有人更改过,除非是自己更改的。
如果做了修改会出现下面内容,比如
S.5….T c /etc/httpd/conf/httpd.conf
如果做了修改,那么验证内容之中,第一部分会有八个信息,具体内容如下:
① S(size) 文件大小是否改变
② M(modify) 文件类型或者文件的权限是否改变
③ 5 文件MD5(一种加密方式,校验值)校验和是否改变,也就是说文件内容是改变
④ D 设备的中,从代码是否改变
⑤ L(locate) 文件的路径是否改变
⑥ U(user) 文件的所有者是否改变
⑦ G(group) 文件所属的组是否改变
⑧ T(Time) 文件的修改时间是否改变
以上如果有修改使用字母代表,如果没有修改,用“.”代表
第二部分内容是文件类型
① c(configfile) 配置文件
② d(document) 普通文档
③ g(GOST file) 鬼文件,很少见,就是说这个文件不应该被rpm包包含
④ l (license file) 授权文件
⑤ r(read me) 描述文件
第三部分内容,就是路径了
6.rpm包的默认安装位置
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序锁使用的函数库的保存位置
/usr/share/doc/ 基本软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置
7.rpm包的提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
#将文件提取到当前目录下的,文件绝对路径下
#比如:rpm2cpio 包全名 | cpio -idv .bin/ls
#将bin/ls提取到当前目录的bin/ls
rpm2cpio 包全名
# rpm2cpio是一个工具,将rpm包转换为cpio格式的命令
cpio
#是一个标准工具,他用于创建软件档案和档案文件中提取文件
选项:
-i:copy-in模式,还原---从文件之中提取数据
-d:还原的时候自动新建目录
-v:显示还原过程
后面那个点“.”,是代表将文件提取到当前目录下
◆应用场景是什么?
有时候做了误操作,比如将系统的命令一不小心删除了,那么这个时候不用重装系统,只需要知道这个命令位于哪一个包,然后用这个命令将另一个系统的rpm安装包中提取出这个命令文件,然后对自己的操作系统进行覆盖就可以了。
yum自动安装RPM包
注意事项:在centOs中yum是免费试用的,但是在红帽子等一些Linux发行版本中,yum被认为是一个售后服务,所以是收费的。yum也不一定非得是联网,而也可以用本地光盘作为本地yum源
1.yum源所在位置
在/etc/yum.repos.d路径下,有四个个yum源
分别是:CentOS-Base.repo(默认使用的是这个,基本yum源)
CentOS-Debuginfo.repo(修复bug的,类似于打补丁)
CentOS-Media.repo(本地光盘yum源)
CentOS-Vault.repo(虚拟yum源)
2. 网络yum源
说明:需要联网
/etc/yum.repos.d下的CentOS-Base.repo
文件中的一些说明:
◆ [base] 容器名称,一定要放置在[]中,
◆ name 容器说明,可以自己随便写
◆ mirrorlist 镜像站点,这个可以注释掉,和baseurl留一个就行
◆ baseurl yum源服务器地址,默认是CentOS官方的yum源服务器地址,如果觉得慢,可以修改为自己国内的yum源地址
◆ enabled 此容器是否生效,如果不写或者写成enabled=1都是生效的,如果写成enabled=0就是不生效
◆ gpgcheck 如果是1,则是指RPM的数字证书生效,如果是0,则不生效。
◆ gpgkey 数字证书的公钥文件保存位置。不用修改
2.1常用yum命令
yum中不再有包全名,只是使用包名即可
◆ 查询
yumlist
#查询yum源中所有可用的软件包列表
yumsearch 关键字
#搜索服务器上所有和关键字相关的包,关键字主要指的是包名
◆ 安装
yum-y install 包名
选项:
install 安装
-y 自动回答yes,就不用每一步骤都回答yes了
◆ 升级
yum-y update 包名
选项:
update 升级
-y 自动回答yes,就不用每一步骤都回答yes了
说明:如果后面不加包名,会升级所有的软件包,包括Linux内核,但是Linux内核,只有在做了一定配置的时候,才能用,所以远程连接是无法连接,不能开机的。一定不要这样做。
◆ 卸载
yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes,就不用每一步骤都回答yes了
注意:如果卸载一个包,他可能依赖于其他包,Linux的yum卸载的时候,会先卸载依赖性最小的那个,最后卸载依赖性最大的那个,这样在卸载的过程中,某一个包不仅要被卸载的包依赖,还有可能被Linux本身依赖,如果这个包被卸载了,会导致很多问题,所以安装软件的时候,选择最小化安装,需要的时候在安装软件,尽量不要卸载,升级的时候选对包
2.2. yum软件组的管理命令
◆ 查询
yum grouplist
#查询出所有可用的软件组列表
◆ 安装软件组名
yum groupinstall软件组名 (如果软件包组有空格,双引号加上软件组名)
#安装指定的软件组,软件组名可以由上面那个命令查找出来,注意:软件组名必须是英文
◆ 卸载软件组
yum groupremove 软件组名(如果软件包组有空格,双引号加上软件组名,而且必须是英文)
#卸载指定的软件组名
3. 光盘yum源
搭建光盘yum源:
1) 挂载光盘,mount /dev/cdrom /mnt/cdrom/
2) 让其他yum源失效,有两种方式,第一种方式是将yum源文件中的enabled修改成0,另一种是将yum源文件,改名,只要后缀不是repo,就可以了
3) 修改本地光盘yum源文件,将enabled改成1,然后baseurl指定,本地光盘的挂载点,file:///mnt/cdrom,说明,这里面有三个斜杠,最后一个斜杠指的是根路径,最后,注释不存在的路径,比如file:///media/cdrom
其他的就和网络yum源的操作是一样的了。
源码包安装
首先,在用源码包安装之前,要用yum安装一个gcc编译器,因为源码包都是 用c语言写的,所以需要一个可以编译c语言的,编译器。
说明:源码包的一般安装位置就是,/usr/local/软件名/
RPM包安装的服务,可以使用系统服务管理命令(service)来管理,例如RPM包安装Apache的启动方法是:
正常模式:/etc/rc.d/init.d/httpd start-----à所有通过rpm包安装的服务都会在这个目录下。
service模式:service httpd start-------à这个service在其他Linux中不一定有,是CentOS有的。
源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认的安装位置中,所以只可以通过绝对路径来进行服务管理
◆源码包的保存位置在/usr/local/src/
源码包的安装位置 /usr/local/软件名/
1.源码包安装过程
在解压缩的目录下,有INSTALL,打开,就会有安装过程的指导,每一个Linux源码包都会有,README这个文件是记录的软件操作指导。
1.将压缩包放入/usr/local/src/
2.解压缩。
3.进入压缩包的路径下。必须执行,因为后续的命令默认就是这个路径下
4:./configure --prefix=/usr/local/软件包名(这条命令指定安装位置)
#当安装过程停止之后,就查看最后几行,有没有出现error,warning,no等字样,没有就证明安装成功,当执行到这一步之后,就会将安装信息生成并且写入到makefile文件,后续步骤就依赖于这个文件
5:make --------à执行到这一步就是编译的意思,
#如果报错,就是编译出错,这个时候是没有安装的。不用删除任何安装目录文件。
make clean (万一报错就执行这个,是清楚缓存,变成没有缓存,实际上就是清除了,makefile的相关信息)
6:make install (编译安装)
#没有报错,就证明安装成功了。
2. 源码包卸载
直接删除安装目录即可。
脚本安装包
◆ 脚本安装包并不是独立的软件包,常见的安装的是源码包
◆ 是人为的把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。类似于Windows中的安装过程。
第一步:下载源码包
第二步:解压源码包
第三步:执行解压缩的源码包中的setup.sh脚本,是这样的 ./setup.sh
第四步:选择功能
第五步:完成