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