前言
在开发过程中使用Linux下载、安装软件是必不可少的, 那么我们都可以使用什么样的方式呢?
安装包分类
计算机只认识0和1这样二进制数字,所以我们的代码要想运行在计算机上,就需要把代码文件编译成二进制文件。
我们把二进制文件放到系统目录下设置好权限,我们的程序就可以运行起来了。
源代码安装包
源代码安装就是拿到写好的C、C++代码文件,我们手动编译并安装。
二进制安装包
Linux内核是Linus Benedict Torvalds开发的一个开源的项目,但是使用起来非常复杂,所有有些商家/组织就会帮我们在这个内核的基础上附加上自己的一些软件然后发布出来,让我们得以友好地使用Linux操作系统。
二进制安装包 就是Linux 内核发行商(debin、redhat)为了让我们更加快速和简单的使用Linux操作系统,就帮助我们把使用Linux常用到的一些软件(vftp/bind)编译好了,我们使用一些特定的Linux命令就可以直接进行安装它们。
今天我主要说 readhat的 rpm安装。
rpm本地安装rpm包
如果我们想要使用rpm包(也就是Linux内核发行商帮我们编译完的包),可以从本地系统盘镜像或者 远程镜像仓库获取。
我们挂载上镜像然后进入Packages目录下全都是发行商帮我集成好的 rpm包
[root@linux-node3 media]# mount -n /dev/sr0 /media/ [root@linux-node3 media]# cd /media/ [root@linux-node3 media]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@linux-node3 media]# cd Packages/
[root@linux-node3 Packages]# ls |wc -l
3832
[root@linux-node3 Packages]#
rpm命令
我们使用 rpm命令就可以安装那些Linux发行商提供的rpm包了。
安装rpm包
[root@linux-node3 Packages]# rpm -ivh vsftpd-3.0.2-21.el7.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:vsftpd-3.0.2-21.el7 ################################# [100%] [root@linux-node3 Packages]#
查看已安装的rpm包
[root@linux-node3 Packages]# rpm -q nginx
未安装软件包 nginx
[root@linux-node3 Packages]#
查看所有已安装rpm包
[root@linux-node3 Packages]# rpm -qa upower-0.99.2-1.el7.x86_64 libpinyin-0.9.93-4.el7.x86_64 libreoffice-writer-5.0.6.2-3.el7.x86_64 libXvMC-1.0.8-2.1.el7.x86_64 lohit-bengali-fonts-2.5.3-4.el7.noarch liberation-fonts-common-1.07.2-15.el7.noarch udisks2-2.1.2-6.el7.x86_64 iso-codes-3.46-2.el7.noarch libreoffice-graphicfilter-5.0.6.2-3.el7.x86_64
卸载
[root@linux-node3 Packages]# rpm -e vsftpd [root@linux-node3 Packages]# rpm -q vsftpd 未安装软件包 vsftpd [root@linux-node3 Packages]#
强制安装(自动解决依赖关系)
[root@linux-node3 Packages]# rpm -ivh php-5.4.16-42.el7.x86_64.rpm 错误:依赖检测失败: httpd-mmn = 20120211x8664 被 php-5.4.16-42.el7.x86_64 需要 php-common(x86-64) = 5.4.16-42.el7 被 php-5.4.16-42.el7.x86_64 需要 php-cli(x86-64) = 5.4.16-42.el7 被 php-5.4.16-42.el7.x86_64 需要 httpd 被 php-5.4.16-42.el7.x86_64 需要 [root@linux-node3 Packages]# rpm -ivh php-5.4.16-42.el7.x86_64.rpm --nodeps 准备中... ################################# [100%] 正在升级/安装... 1:php-5.4.16-42.el7 ################################# [100%] 警告:群组apache 不存在 - 使用root
如果我们本地镜像里面没有我们想要的 rpm包或者是缺失某些rpm包,该如果解决呢?这就需要yum跨网络去网上的镜像仓库下载了。
yum网络安装rpm包
yum是构造在redhat的 rpm命令之上的,所以 Debian发行的Ubuntu不使用yum。
Yellowdog Update Modifer 是使用Python语言所编写的一款可以在本地文件、远程镜像仓库搜寻rpm包、自动解决rpm依赖、自动安装的工具。
yum仓库
yum既然yum可以自动的去本地和网络上定位rpm包的,那么我们得告诉yum去哪里找啊,yum仓库就是配置这些的。
yum仓库在 /etc/yum.repos.d/目录下。
@linux-node3 yum.repos.d]# cd /etc/yum.repos.d/ [root@linux-node3 yum.repos.d]# pwd /etc/yum.repos.d [root@linux-node3 yum.repos.d]# ls CentOS-Base.repo CentOS-Media.repo CentOS-Vault.repo CentOS-Ceph-Jewel.repo CentOS-OpenStack-ocata.repo docker-ce.repo CentOS-CR.repo CentOS-QEMU-EV.repo epel.repo CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo CentOS-fasttrack.repo CentOS-Storage-common.repo [root@linux-node3 yum.repos.d]#
yum仓库配置说明
kubernetes.repo
[kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
配置阿里云镜像仓库
url -o /etc/yum.repos.d/xxxx.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache