1)常见后缀:.tar.gz
1)开源,如果有足够的能力,可以修改源代码 2)可以自由选择所需的功能 3)软件是编译安装,所以更加适合自己的系统,更加稳定也性能更高 # 官方给出估算,相比二进制包大约可以提升5%的性能 4)卸载方便
3)缺点:
1)安装过程步骤较多,尤其安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误 2)编译时间较长,安装比二进制安装时间长 3)因为是编译安装,安装过程中一旦报错新手很难解决
1)常见后缀:.rpm
2)二进制包分类:
1)DPKG包:在线安装工具(yum) 是由 Debian Linux 所开发出来的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理。主要应用在 Debian 和 Unbuntu 中。 2)RPM包:在线安装工具(apt-get) 是由 Red Hat 公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多 Linux 都在使用这种包管理方式,包括 Fedora、CentOS、SUSE 等。我们学习的是CentOS 6.3。
3)优点:
1)包管理系统简单,只通过几个命令就可能实现包的安装、升级、查询和卸载 2)安装速度比源码包安装快得多
4)缺点:
1)经过编译,不再可以看到源代码 2)功能选择不如源码包灵活 3)依赖性。 # 依赖分类: 树形依赖 环形依赖 模块依赖(模块可以理解为各种函数库 .so) ----------------------------------------------------------------------------------------- # 模块依赖 如果安装时报出依赖 .so 文件,查询该文件属于哪个包,把包安装上就可以了。怎么查询这个文件是属于哪个包呢?下面的网站就可以帮助查询。 --------------------------------------------------------------------------------------- 常用RPM包搜索网站: a. http://rpmfind.net——这个网站一般较旧的包是找不到的。 b. http://rpm.pbone.net/——这个几乎所有的都能招到。 c. http://download.fedora.redhat.com/pub/fedora-secondary/releases/——可以找到所有fedora版本的rpm包和src-rpm。 d. http://rpmfusion.org/——可以添加第三方yum源,包括开源的和非开源的包。 --------------------------------------------------------------------------------------- 公司内部人士提供 http://rpm.pbone.net/ http://pkgs.org/ 这俩网站联合使用,基本能找到linux需要的大部分的rpm的安装包
5)RPM 包命令规则
# 以 httpd-2.2.15-15.el6.centos.1.i686.rpm 为例 a. httpd:软件包名。 b. 2.2.15:软件版本。 c. 15:软件发布的次数。 d. el6:软件发行商。el6 是由 Red Hat 公司发布的,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。 e. i686:适合的硬件平台。 # RPM 包可以在不同的硬件平台上安装,选择适合不同 CPU 的软件版本,可以最大限度地发挥 CPU 性能,所以出现了所谓的 i386(386 以上的计算机都可以安装)、i586 (586 以上的计算机都可以安装)、i686(奔腾II以上的计算机都可以安装,目前所有的 CPU 是奔腾II以上的,所以这
个软件版本居多)、x86_64 (64 位 CPU 可以安装)和 noarch(没有硬件限制)等文件名。 f. rpm:RPM 包的扩展名。 # 我们说过,Linux 下的文件不是靠扩展名区分文件类型的,也就是说 Linux 中的扩展名没有任何含义。可是这里怎么又出现了扩展名呢?原因很简单,如果不把 RPM 包的扩展名叫作".rpm",那么管理员很难知道这是一个 RPM 包,当然也就无法正确安装了。换句话说,如果 RPM 包
不用".rpm"作为扩展名,那么系统可以正确识别,但是管理员很难识别这是一个什么样的软件。 PS:我们把 httpd-2.2.15-15.el6.centos.1.i686.rpm 叫作包全名,而把 httpd 叫作包名。 为什么要做出特殊说明呢?因为有些命令后面一定跟的是包全名,如安装和升级;而有些命令后面一定跟的是包名,如查询和卸载。如果弄错,命令就会报错。
6)包名的使用
a. 包全包:如果操作的是未安装软件包,则使用包全包,而且需要绝对路径; b. 包 名:如果操作的是已安装软件包,则使用包名,系统会生成RPM包的数据库(/var/lib/rpm/),而且可以在任意路径下操作。
PS:(脚本安装包)
1)源码包: 如果服务是给大量客户端提供访问的,建议使用源码包,源码包效率性能更高(例如LAMP); 2)RPM包: 如果程序是给少量用户访问,或者本地使用,建议RPM包,因为RPM管理方便。 ----------------------------------------------------------------------------------------- 3)包名的使用: 包全包:如果操作的是未安装软件包,则使用包全包,而且需要绝对路径; 包 名:如果操作的是已安装软件包,则使用包名,系统会生成RPM包的数据库(/var/lib/rpm/),而且可以在任意路径下操作。
必须在安装路径下执行安装命令。
# 1)解压 [root@centos6 ~]# cd /usr/src [root@centos6 src]# tar -xvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz # 2) [root@centos6 ~]# cd mysql-5.6.38-linux-glibc2.12-x86_64 [root@centos6 mysql-5.6.38-linux-glibc2.12-x86_64]# ./configure # 3) [root@centos6 mysql-5.6.38-linux-glibc2.12-x86_64]# make # 4) [root@centos6 mysql-5.6.38-linux-glibc2.12-x86_64]# make install
绝对路径
没有删除命令,删除掉安装目录即卸载;所以安装的时候必须指定安装路径。
一般安装软件包的时候都需要先安装依赖包。
# 查看 ISO [root@centos6 ~]# mount ...省略 /dev/sr0 on /media/CentOS_6.9_Final type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500) [root@centos6 ~]# mkdir /mnt/cdrom [root@centos6 ~]# mount /dev/sr0 /mnt/cdrom [root@centos6 ~]# cd /mnt/cdrom/Packages [root@centos6 Packages]# ll # 系统会显示出光盘镜像文件中所以的软件包 [root@centos6 Packages]# ll | wc -l # 系统会显示出软件包的总共数量
可以在任意路径下执行安装命令,但是需要注意:
# 如果执行命令的当前路径是在包路径中,只需要写包全名即可,如: [root@centos6 Packages]# rpm -ivh 软件包全名 # 如果命令当前路径不在包路径中,则需要写包所在的绝对路径。如: [root@centos6 ~]# rpm -ivh /mnt/cdrom/Packages/软件包全名
----------------------------------------------------------------------------------------- [root@centos6 Packages]# rpm -ivh 软件包全名 # 注意一定是包全包。如果跟包全名的命令要注意路径,因为软件包在光盘中。 # 选项意义: -i # 安装(install) -v # 显示更详细的信息(verbose) -h # 打印显示安装进度(hash) ----------------------------------------------------------------------------------------- --nodeps # 不检测依赖性安装。安装软件时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错;如果不管依赖性,想强行安装,可以使用这个选项,但是需注意:这样不检测依赖性安装的软件一般是不能使用的,所以不建议这样做。 ----------------------------------------------------------------------------------------- --replacefiles # 替换文件安装。如果安装软件包,可是包中部分文件已经存在,那么正常安装的时候,会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可以忽视这个报错,而覆盖安装。 --replacepkgs # 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安装一遍。 ------------------- --force # 强制安装。不管是否已经安装,都重新安装。即 --replacefiles 和 --replacepkgs的综合。 ---------------------------------------------------------------------- # 有时把配置文件误删了,服务启动报错,但是重新安装还安装不了,这时候就是这个选项的作用,强制重新安装,这样被误删的配置文件就又生成了,服务也可以正常启动了。 ----------------------------------------------------------------------------------------- --test # 测试安装。不会实际安装,只是检测一下依赖性。 ----------------------------------------------------------------------------------------- --prefix # 指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:如果指定了安装路径,软件没有安装到系统默认路径中的话,系统会找不到这些安装的软件,需要手工配置才能被系统识别。 ---------------------------------------------------------------------- # 所以 rpm 包我们一般都采用默认路径安装。 如果使用该选项,一般指定路径为 --prefix=/usr/local/http -----------------------------------------------------------------------------------------
说明 | |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ |
以 Apache 为例:
----------------------------------------------------------------------------------------- centos6: 1)redhat系列专用方式: service httpd start|restart|stop|status # service 命令调用的就是 /etc/rc.d/init.d/httpd 这个文件。 2)所有linux系统通用标准方式: /etc/rc.d/init.d/httpd start|restart|stop|status /etc/init.d/httpd start|restart|stop|status # lrwxrwxrwx. 1 root root 11 Nov 11 11:06 init.d -> rc.d/init.d ----------------------------------------------------------------------------------------- centos7: 1) 2) -----------------------------------------------------------------------------------------
/var/www/html
/etc/httpd/conf/httpd.conf
对文件修改之后,要不要重启服务?
判断方法:修改的是不是配置文件,只有修改了配置文件才需要重启服务。
1)默认安装位置是系统的习惯位置; 2)RPM包管理系统是有卸载命令的(数据库记录安装位置),默认位置安装方便卸载;
----------------------------------------------------------------------------------------- [root@centos6 ~]# rpm -e 包名 # 选项: --nodeps # 不检查依赖性 -e # 卸载 ----------------------------------------------------------------------------------------- # 卸载的时候也有依赖性,按安装时候依赖包的相反顺序依次卸载。 # 新手尽量少用yum卸载,因为yum卸载容易把别的软件依赖的包也卸载掉,导致别的服务异常。 -----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------- # 升级加安装 [root@centos6 ~]# rpm -Uvh 包全包 # 选项: -U # 升级安装,如果没有安装过,系统直接安装;如果安装过的版本较旧,则升级到新版本(upgrade)。 ----------------------------------------------------------------------------------------- # 升级 [root@centos6 ~]# rpm -Fvh 包全包 # 选项: -F # 升级安装,如果没有安装过,则不会安装;必须安装有较旧版本,才能升级(freshen)。 -----------------------------------------------------------------------------------------
rpm 和 yum 查询区别
rpm 命令查询的是本地的软件包; yum 查询的是 yum 源服务器上的软件包。
----------------------------------------------------------------------------------------- 选项: 下面是查询时可以使用的特定参数: -a 查询目前系统安装的所有软件包(all) -f 查询系统文件属性哪个软件包(file) -F 同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF) -q 查询该软件包(query) -p 查询没有安装的软件包(package) -R 查询软件包的依赖性(requires) -Q 同-p参数,只是输入是标准输入(例如 find /mnt/cdrom/RedHat/RPMS | rpm -qQ) 下面是输出时的格式选择: -i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息(information) -l 列出软件包中所有的文件列表和软件所安装的目录(list) -s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing -d 显示软件包中的文档(如man,info,README等) -c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf 、 passwd 、 inittab 等 -v 如果用-v参数就可以得到类似于ls -l的输出 ----------------------------------------------------------------------------------------- 1)查询软件包是否安装 [root@centos6 ~]# rpm -q 包名 ----------------------------------------------------------------------------------------- 2)查询系统中的所有安装软件包 [root@centos6 ~]# rpm -qa 包名 ----------------------------------------------------------------------------------------- 3)也可以用管道符来查看所需的内容,比如: [root@centos6 ~]# rpm -qa | grep httpd # 1)只能查看包是否安装,但是 3)会把包含包名的所有包都列出来 ----------------------------------------------------------------------------------------- 4)查询已经安装的软件包的详细信息 [root@centos6 ~]# rpm -qi [ 包名 | 包全名 ] # 查询还未安装的软件包的详细信息 [root@centos6 ~]# rpm -qip 包全名 # 还未安装,所以要写 "包全名" ----------------------------------------------------------------------------------------- 5)查询已经安装的软件包中的文件列表和安装的完整目录 [root@centos6 ~]# rpm -ql 包名 # 查询还未安装的软件包中的文件列表和打算安装的位置 [root@centos6 ~]# rpm -qlp 包全名 ----------------------------------------------------------------------------------------- 6)查询系统文件属于哪个 RPM 包 [root@centos6 ~]# rpm -qf 系统文件名 # 只有通过 rpm 或者 yum 方式安装的包的文件才可以这样查;如果是手工建立的文件是不能这样查的。 # 5)和 6)是两个反向的操作 # 举个栗子 [root@db01 ~]# rpm -qf `which ssh` openssh-clients-7.4p1-16.el7.x86_64 [root@db01 ~]# rpm -qf `which sshd` openssh-server-7.4p1-16.el7.x86_64 ----------------------------------------------------------------------------------------- 7)查询软件包所依赖的软件包 # 查询系统中和已经安装的软件包有依赖关系的软件包(会列出所有包,分不出哪个已安装,哪个未安装,不常用) [root@centos6 ~]# rpm -qR 包名 # 查询还未安装的软件包的依赖包 [root@centos6 ~]# rpm -qRp 包名 ----------------------------------------------------------------------------------------- 8)查询软件包安装完成后的配置文件 [root@centos6 ~]# rpm -qc [ 包名 | 包全名 ] -----------------------------------------------------------------------------------------
rpm 相当于 windows 的 exe。软件包管理系统通常由两种工具类型组成。
底层工具用来安装和删除软件包文件(rpm)。
上层工具完成元数据搜索和依赖解析(yum)。
yum 是方便管理 rpm 的工具。
repo 是资源库,其中包含了众多的 rpm 包。
# 查找命令对应的软件包 yum provides 命令
命令 | 说明 |
---|---|
yum install | 全部安装 |
yum install package | 安装指定的安装包 package |
yum install package -y | 直接安装不用询问是否安装 |
yum groupinsall group | 安装程序组 group |
命令 | 说明 |
---|---|
yum update | 全部更新 |
yum update package | 更新指定程序包 package |
yum check-update | 检查可更新的程序 |
yum upgrade package | 升级指定程序包 package |
yum groupupdate group | 升级程序组 group |
命令 | 说明 |
---|---|
yum info package | 显示安装包信息 package |
yum info updates | 列出更新信息 |
yum info installed | 列出安装包信息 |
yum info extras | 列出已安装,但不在 repo 中的包的信息 |
yum list | 显示所有已经安装和可以安装的程序包 |
yum list updates | 列出所有可更新的包 |
yum list installed | 列出所有已经安装的包 |
yum list extras | 列出所有已安装,但是没有在 repo 里的包 |
yum list package | 显示指定程序包安装情况 package |
yum groupinfo group | 显示程序组 group 信息 |
yum search string | 根据关键字 string 查找安装包 |
yum repolist | 查看(开启的)资源库 |
yum repolist all | 查看所有资源库 |
yum search | 使用 YUM 查找软件包 |
yum provides | 列出包中文件(正确意思应该是:查找命令对应的软件包。检查其它命令是否正确?) |
命令 | 说明 |
---|---|
yum remove package | 删除程序包 package |
yum groupremove group | 删除程序组 group |
yum deplist package | 查看程序 package 依赖情况 |
命令 | 说明 |
---|---|
yum clean packages | 清除缓存目录下的软件包 |
yum clean headers | 清除缓存目录下的 headers |
yum clean oldheaders | 清除缓存目录下旧的 headers |
yum clean/yum clean all | 清除缓存目录下的软件包及旧的 headers |
yum 的一切配置信息都储存在一个叫 yum.conf 的配置文件中。常位于 /etc 目录下
[main] cachedir=/var/cache/yum keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 metadata_expire=1800
说明 | |
---|---|
cachedir | yum 缓存的目录,yum 在此存储下载的 rpm 包和数据库,一般是 /var/cache/yum |
debuglevel | 除错级别,0~10,默认是 2 |
logfile | yum 的日志文件,默认是 /var/log/yum.log |
exactarch | 有两个选项 1 和 0,代表是否只升级和你安装软件包 cpu 体系一致的包,如果设为 1,则例如安装了一个 i386 的 rpm,则 yum 不会用 686 的包来升级 |
gpgchkeck |
[base] name=CentOS-$releasever - Base - 163.com baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
配置 | 说明 |
---|---|
[base] | 这个是软件源的名字,且 [ ] 里面不能为空 |
name | 这个只是软件源的一个描述,也可以随意些,但要有意义 |
baseurl | 指定路径,可以用 file,ftp,http 如果用后面的两个必须开启相应的服务,file 可以用来做本地软件源(如:将本地 DVD 设置为软件源),一定要保证路径可达 |
enabled | 有 1 和 0 两个选项,1 代表开启,0 代表关闭,开启是指激活这个软件源,关闭则不激活这个软件源 |
gpgcheck | 指下载软件包的时候是否检查数字签名,用来检查软件包的完整性。开启 gpgcheck 后,通过 gpgkey 来指定,相应的 rpm-gpg 文件,如果不指定 gpgkey 文件,那么就必须手动的导入相应的 rpm-gpg 文件 |
rpm --import gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
[root@centos6 ~]# rpm -Va # -Va:校验本机已经安装的所有软件包 [root@centos6 ~]# rpm -V 已安装的包名 # -V:校验指定 RPM 包中的文件(verify) [root@centos6 ~]# rpm -Vf 系统文件名 # -Vf:校验某个系统文件是否被修改
原文:https://www.cnblogs.com/bread-dream/p/12388776.html