CentOS 7安装软件的三种方式(RPM、YUM、源码包) 您所在的位置:网站首页 软件包后缀名 CentOS 7安装软件的三种方式(RPM、YUM、源码包)

CentOS 7安装软件的三种方式(RPM、YUM、源码包)

2024-07-01 01:52| 来源: 网络整理| 查看: 265

目录 软件包分类源码包源码包是什么源码包特点 二进制包二进制包分类二进制包特点 RPM安装rpm包命名规则rpm包默认安装路径rpm包安装rpm包安装rpm包升级rpm包卸载rpm包查询rpm验证命令举例 数字证书数字证书验证数字证书位置数字证书导入 YUM安装(rpm包在线安装)yum是什么yum源配置文件搭建本地光盘yum源yum源配置文件优化yum命令安装命令升级命令卸载命令查询命令 yum缓存yum组管理命令 源码包安装注意事项安装过程卸载

软件包分类 源码包 源码包是什么

源码包一般指C语言开发的源代码文件的一个压缩包(.tar.gz或.tar.bz2)。源码包的编译使用Linux系统里的编译器gcc,利用该编译器可以把源码包变成可执行的二进制文件。

创建一个源码包

[root@letty-02 Desktop]# vim hello.c # include int main (void) { printf("Hello,world!\n"); }

安装gcc编译器

[root@letty-02 /]# mount /dev/cdrom /mnt --挂载光驱到/mnt目录下 mount: /dev/sr0 is write-protected, mounting read-only [root@letty-02 /]# cd /mnt [root@letty-02 mnt]# ls --进入/mnt可发现已成功挂载 CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL [root@letty-02 Desktop]# rpm -ivh /mnt/Packages/gcc-4.8.5-4.el7.x86_64.rpm --rpm安装gcc warning: /mnt/Packages/gcc-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:gcc-4.8.5-4.el7 ################################# [100%]

编译执行源码包

[root@letty-02 Desktop]# gcc -c hello.c -- -c生成.o头文件,但不会生成执行文件 [root@letty-02 Desktop]# ll total 8 -rw-r--r--. 1 root root 67 Apr 29 19:00 hello.c -rw-r--r--. 1 root root 1496 Apr 29 19:19 hello.o [root@letty-02 Desktop]# gcc -o hello hello.o -- -o生成执行文件,并制定执行文件名,生成的hello就是可执行文件 [root@letty-02 Desktop]# ll total 20 -rwxr-xr-x. 1 root root 8503 Apr 29 19:19 hello -rw-r--r--. 1 root root 67 Apr 29 19:00 hello.c -rw-r--r--. 1 root root 1496 Apr 29 19:19 hello.o [root@letty-02 Desktop]# ./hello -- 执行hello文件 Hello,world! 源码包特点

源码包的优点:

开源,有能力可以自己修改源代码;可以自由选择所需功能;软件是编译安装,更加稳定,效率更高;卸载方便,直接删除目录即可。

源码包的缺点:

安装过程步骤过多,尤其在安装较大软件集合时(如LAMP环境搭建),容易出现拼写错误;编译过程时间较长,安装比二进制安装时间长;由于是编译安装,安装过程中一旦报错新手解决较为麻烦。 二进制包 二进制包分类 RPM包:由Red Hat公司开发的包管理系统,软件的安装、升级、卸载都非常简单和方便。目前很多Linux发行版都在使用这种包管理机制,包括CentOS、Redhat、Fedora等。软件包文件后缀是".rpm"。DPKG包:由Debian Linux开发出来的包管理机制,主要应用在Debian和Unbuntu系统中。软件包文件后缀是".deb"。

不论是RPM包管理器还是DPKG包管理器,都存在软件包依赖问题,比如软件包A依赖软件包B,软件包B又依赖软件包C,即依赖关系是 “A -> B -> C”,那么就必须先安装C,在安装B,最后A才能安装成功。 为了解决这种依赖问题,Linux开发商都提供了在线安装机制,通过这种机制可以自动解决依赖关系,安装A时会自动安装B和C。

基于RPM包管理机制开发出了YUM在线安装机制;基于DPKG包管理机制开发出了APT在线安装机制。 二进制包特点

RPM包的优点:

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

RPM包的缺点:

经过编译,不再可以看到源码;功能选择不如源码包灵活;依赖性。 RPM安装 rpm包命名规则

在这里插入图片描述

包全名:如果操作的是未安装软件包,则使用包全名,注意绝对路径。包名:如果操作的是已经安装的软件包,则使用包名即可,系统会产生RPM包的数据库(/var/lib/rpm/),且可以在任意路径下操作。 rpm包默认安装路径

在这里插入图片描述

rpm包安装 rpm包安装

安装命令:rpm -ivh 包全名

选项: -i:安装(install) -v:显示更详细的信息(verbose) -h:打印#显示安装进度(hash) –nodeps:不检测依赖性安装。软件安装时会检查依赖性,如果所依赖的软件还未安装则会报错。加上该选项不检测依赖强制安装,但是这样的软件安装后一般不能使用,建议不要这么做。 –replacefiles:替换文件安装。若安装软件包时包中部分文件已经存在,正常安装时会报错某文件已经存在导致软件无法安装,使用该选项可以忽视报错覆盖安装。 –replacepkgs:替换软件包安装。若软件包已经安装,此选项将软件包重复安装一遍。 –force:强制安装(–replacefiles和–replacepkgs的组合) –test:测试安装(检查依赖性,不会实际安装) –prefix:指定安装路径,不使用默认安装路径(指定安装路径会使得系统找不到这些安装的软件,需要手工配置被系统识别) rpm包升级

升级命令:rpm -Uvh 包全名

选项: -U:升级安装(如果没有安装过,系统直接安装;如果安装的版本较老,则升级到新版本)

升级命令:rpm -Fvh 包全名

选项: -F:升级安装(如果没有安装过,则不会安装;必须有旧版本的软件安装,才能升级) rpm包卸载

卸载命令:rpm -e 包名

选项: -e:卸载软件包 –nodeps:卸载时不检查依赖性(如果卸载的软件被其它软件依赖导致卸载失败,加上此选项可以强制卸载,但是可能会导致其它软件无法使用,谨慎) rpm包查询

查询软件包是否安装

rpm -q 包名

查询系统中所有的安装的软件包

rpm -qa

可以使用管道符查看所需内容 如rpm -qa | grep gcc,使用 “rpm -q 包名” 只能查看这个包是否安装,而 “rpm -qa | grep 包名” 可以将包含包名称的所有包都列出来。

[root@letty-02 Packages]# rpm -q gcc gcc-4.8.5-4.el7.x86_64 [root@letty-02 Packages]# rpm -qa | grep gcc gcc-4.8.5-4.el7.x86_64 libgcc-4.8.5-4.el7.x86_64

查询软件包的详细信息

rpm -qi 包名 :查询已安装的软件包详细信息 选项: -i:查询软件信息(information)

rpm -qip 包全名 :查询未安装的软件包详细信息 选项: -p:查询没有安装的软件包(package)

查询软件包中的文件列表

rpm -ql 包名:查询已经安装的软件包的文件列表和安装的完整目录 选项: -l:列出软件包中的所有文件了列表和软件所安装的目录(list)

rpm -qlp 包全名:查询未安装的软件包中的文件列表和打算安装的位置 选项: -p:查询没有安装的软件包(package)

查询系统文件属于哪个软件包

rpm -qf 系统文件名 选项: -f:查询系统文件属于哪个软件包(file)

查询软件包所依赖的软件包

rpm -qR 包名:查询系统中和已经安装的软件包有依赖关系的软件包 选项: -R:查询软件包的依赖性(requires)

rpm -qRp 包全名:查询未安装的软件包的依赖性

rpm验证 命令 rpm -Va:校验本机已经安装的所有软件包rpm -V 已安装的包名:校验指定的已安装的软件包rpm -Vf 系统文件名:校验某个系统文件是否被修改 选项: -V:校验指定RPM包中的文件(verify)

如果执行命令后无任何提示,表明没有做任何修改;如果执行命令后有内容输出,则软件包的文件被修改过。

举例 [root@letty-02 Packages]# rpm -Va ....L.... c /etc/pam.d/fingerprint-auth ....L.... c /etc/pam.d/password-auth ....L.... c /etc/pam.d/postlogin ....L.... c /etc/pam.d/smartcard-auth ....L.... c /etc/pam.d/system-auth .M....... c /etc/cups/subscriptions.conf S.5....T. c /etc/plymouth/plymouthd.conf S.5....T. c /etc/profile S.5....T. c /etc/issue S.5....T. c /etc/issue.net S.5....T. c /var/lib/unbound/root.key S.5....T. c /etc/sysconfig/authconfig 验证内容 文件类型 文件路径

验证内容共有8个信息内容:

S:文件大小是否改变M:文件类型或文件权限(rwx)是否改变5:文件MD5校验是否改变(文件内容是否改变)D:设备主从代码是否改变L:文件路径是否改变U:文件所有者是否改变G:文件所有组是否改变T:文件修改时间是否改变

文件类型:

c:配置文件(config file)d:普通文件(documentation)g:鬼文件(ghost file)l:授权文件(license file)r:描述文件(read me) 数字证书 数字证书验证

rpm -V的校验方式只能对已经安装的RPM包中的文件进行校验。要在安装之前就对RPM进行校验需要使用数据证书验证:

首先找到原厂的公钥文件,然后进行安装;安装RPM包时,去提取RPM包中的证书信息,然后和本机安装的原厂证书进行验证;如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告。 数字证书位置

数字证书可以在光盘中找到:

[root@letty-02 ~]# ll /mnt/RPM-GPG-KEY-CentOS- RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7

默认也放在系统中:

[root@letty-02 ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS- RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7 数字证书导入 [root@letty-02 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 选项: --import:导入数字证书 [root@letty-02 ~]# rpm -qa | grep gpg-pubkey --查询系统中安装好的数字证书 gpg-pubkey-f4a80eb5-53a7ff4b YUM安装(rpm包在线安装) yum是什么

yum软件仓库是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术。yum的关键之处是要有可靠的respository,它能够从指定服务器自动下载rpm包并安装。yum能够自动解决软件依赖性问题,一次性安装所有依赖的软件包。

yum源配置文件

yum源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是".repo",及yum源配置文件只要扩展名是".repo"就会生效。

[root@letty-02 yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo

/etc/yum.repos.d/目录下的文件如上所示,默认情况下CentOS-Base.repo文件生效。

[root@letty-02 yum.repos.d]# vim CentOS-Base.repo --展示该文件中的base容器 [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [base]:容器名称,一定要放在[]中name:容器说明,随便写mirrorlist:镜像站点,可以注释掉baseurl:yum源服务器的地址(默认是CentOS官方的yum源服务器,可以更改)enabled:此容器是否生效(enabled=1生效,enabled=0不生效)gpgcheck:rpm数字证书是否生效(gpgcheck=1生效,gpgcheck=0不生效)gpgkey:数字证书的公钥文件保存位置 搭建本地光盘yum源 将CentOS光盘挂载到指定位置[root@letty-02 /]# mkdir /mnt/cdrom --创建挂载点 [root@letty-02 /]# mount /dev/cdrom /mnt/cdrom/ --挂载光盘到/mnt/cdrom目录下 mount: /dev/sr0 is write-protected, mounting read-only 为了使centos7.repo文件真正生效,需要使得其他yum源文件失效。可以将/etc/yum.repos.d/目录下的yum源配置文件转移到别处[root@letty-02 yum.repos.d]# mkdir sys [root@letty-02 yum.repos.d]# mv *.repo sys [root@letty-02 yum.repos.d]# ls sys 创建本地yum源配置文件[root@letty-02 yum.repos.d]# vim centos7.repo [centos7] name=centos7 baseurl=file:///mnt/cdrom --地址设置为光盘挂载地址 gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 测试[root@letty-02 yum.repos.d]# yum list available Loaded plugins: fastestmirror, langpacks centos7 | 3.6 kB 00:00:00 (1/2): centos7/group_gz | 155 kB 00:00:00 (2/2): centos7/primary_db | 2.8 MB 00:00:00 Loading mirror speeds from cached hostfile Available Packages 389-ds-base.x86_64 1.3.4.0-19.el7 centos7 389-ds-base-libs.x86_64 1.3.4.0-19.el7 centos7 ElectricFence.x86_64 2.2.2-39.el7 centos7 GeoIP.x86_64 1.5.0-9.el7 centos7 ...... yum源配置文件优化

通过网易yum源进行优化:http://mirrors.163.com/.help/centos.html

点击CentOS 7直接下载repo文件,之后移动到Linux系统中。 在这里插入图片描述 右键点击CentOS 7并选择复制链接地址,在Linux系统中通过wget命令进行下载 在这里插入图片描述

[root@localhost Desktop]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo --2021-04-30 16:10:58-- http://mirrors.163.com/.help/CentOS7-Base-163.repo Resolving mirrors.163.com (mirrors.163.com)... 111.2.178.103, 111.2.178.101, 111.2.178.102 Connecting to mirrors.163.com (mirrors.163.com)|111.2.178.103|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1572 (1.5K) [application/octet-stream] Saving to: ‘CentOS7-Base-163.repo’ 100%[===================================================>] 1,572 --.-K/s in 0s 2021-04-30 16:10:58 (261 MB/s) - ‘CentOS7-Base-163.repo’ saved [1572/1572] [root@localhost Desktop]# mv CentOS7-Base-163.repo /etc/yum.repos.d/ [root@localhost Desktop]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls CentOS7-Base-163.repo centos7.repo sys [root@localhost yum.repos.d]# mv centos7.repo sys [root@localhost yum.repos.d]# ls CentOS7-Base-163.repo sys [root@localhost yum.repos.d]# yum repolist --检查可用的yum源信息 Loaded plugins: fastestmirror, langpacks Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast Loading mirror speeds from cached hostfile repo id repo name status !base/7/x86_64 CentOS-7 - Base - 163.com 10,072 !extras/7/x86_64 CentOS-7 - Extras - 163.com 463 !updates/7/x86_64 CentOS-7 - Updates - 163.com 1,901 repolist: 12,436 yum命令

yum 命令格式:yum [选项] COMMAND [软件包]

选项: -y:自动回答"yes",不再询问。如果不加该选项,安装过程中每个涉及的包安装都要手工回答 “yes” or “no” -q:静默模式。不显示安装过程 -C:完全从缓存中运行,而不去下载或者更新任何头文件COMMAND (要进行的操作) install:执行安装操作 update:执行升级操作 remove:执行卸载操作 list:显示可用软件包列表 search:根据关键字匹配软件包 info:显示软件包信息

软件包:如果为包名,则默认为软件包的最新版本;如果要指定软件包版本,则需要使用包全名

安装命令 安装指定软件包:yum -y install 包名 升级命令 升级指定软件包:yum -y update 包名升级本机所有软件包:yum -y update(服务器稳定优先,因此全系统升级的情况并不多见)

注意:在进行升级操作的时候,yum源服务器中软件包的版本要比本机安装的软件包的版本高。

卸载命令 卸载指定软件包:yum remove 包名

注意:除非确定要卸载的软件依赖包不会对系统产生影响,否则不要执行yum卸载。

查询命令

yum list:查询yum源服务器上所有可安装的软件包列表

[root@letty-02 ~]# yum list | more Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Installed Packages --已经安装的软件包 ...... Available Packages --还可以安装的软件包 ......

yum list 包名:查询yum源服务器中是否包含某个软件包

[root@letty-02 ~]# yum list httpd Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Available Packages httpd.x86_64 2.4.6-40.el7.centos centos7

yum search 关键字:查询yum源服务器上所有和关键字相关的软件包(可用于确定某个软件在哪个相关包中)

[root@letty-02 ~]# yum search ifconfig Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile ========================================== Matched: ifconfig =========================================== net-tools.x86_64 : Basic networking tools

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

[root@letty-02 ~]# yum info httpd Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Available Packages --未安装 Name : httpd --包名 Arch : x86_64 --适合的硬件平台 Version : 2.4.6 --版本 Release : 40.el7.centos --发布版本 Size : 2.7 M --大小 Repo : centos7 --光盘 ...... yum缓存

默认情况下,通过yum成功安装软件后,会把下载的软件包删除。如果要保留下载的软件包,可以编辑/etc/yum.conf,把里面的参数keepcache改为1(默认keepcache=0)。这样每次通过yum安装软件时,会把下载的软件包缓存在/var/cache/yum/目录下,下次安装相同软件时,就可以从缓存中直接获取软件包,在没有网络的情况下也可以正常安装。

清除缓存:yum clean packages|headers|oldheaders|all packages:清除缓存目录下的软件包 headers:清除缓存目录下的headers oldheaders:清除缓存目录下旧的headers all:清除全部重新建立缓存:yum makecache只从缓存中查找软件包并安装:yum -C install 包名 yum组管理命令

软件组指的是一组相关的软件包(并不是指依赖关系),通过yum命令可以对组内软件包批量管理。

yum grouplist:列出所有可用的软件组列表yum groupinfo 软件组名:列出软件组包含的软件yum groupinstall 软件组名:安装软件组yum groupremove 软件组名:卸载软件组 源码包安装 注意事项 什么时候使用源码包安装? 如果软件包是给大量客户提供访问,建议使用源码包安装,因为源码包效率更高。如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单,不易出错。获取源码包:官网下载同一个软件是否可以使用软件包方式安装和源码包安装同时安装? 可以,因为两种方式的软件安装位置不同,所以安装时互相不会产生影响。但是两个软件同时启动需要更改端口,否则会端口冲突。一般情况下不会同一个软件安装两次。 安装过程 下载源码包解压缩源码包进入解压目录./configure 编译前准备 – 在安装之前检测系统环境是否符合安装要求。 – 定义需要的功能选项,如通过"./configure --prefix=安装路径"来指定安装路径。可以执行"./configure --help"命令查询其支持的功能。 – 创建Makefile文件并把系统环境的检测结果和定义好的功能选项写入,后续的编译和安装需要依赖这个文件的内容。make 编译 make会调用gcc编译器,并读取Makefile文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被Linux识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗时。make clean 清空编译内容(非必要步骤) 如果在"./configure" 或 “make"编译中报错,在重新执行命令前一定先执行make clean命令,它会清空Makefile文件或编译产生的”.o头文件。make install 编译安装 真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个命令的执行过程保存下来,以备将来删除使用。

注意:

执行 ./configure 命令时可能会提示缺少 gcc 等依赖程序,所以需要使用 yum 等方式先安装依赖程序即可。并不是所有的源码包安装一定是执行 “./configure”、“make”、“make install” 这三个命令,只有极少数源码包安装命令可能有些不同,比如 mysql 版本 5.5 以后的源码包安装时,使用 “cmake” 命令替代了 “./configure”。一般源码包解压后都有安装的说明文档,安装之前可以先阅读以下说明文档。一般去第三方官网下载源码包时,也会提供已经编译好的二进制包,这种二进制包里面包括了已经经过编译可以马上运行的程序,所以解压后直接进入 “xxx/bin/” 目录找到相关命令直接运行即可。 卸载

通过源码包安装时如果指定了安装目录,如 “./configure --prefix=安装路径”,卸载时只需要删除整个安装目录就可以了 “rm -rf 安装路径”,而且是100%卸载,不会像windows那样经常会残留那多注册表之类的垃圾。

如果源码包安装时没有指定安装目录,那么安装软件生成的文件会分别存储在 /usr/local/ 下的 bin、lib、etc 等目录下,删除起来就比较麻烦一点了。所以建议源码包安装一定要指定安装目录,方便卸载。如果忘记指定安装目录,则可以把make install这个命令的执行过程保存下来,以备将来删除使用。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有