0%

Linux运维学习笔记:centOS7 如何安装软件

写在前面

在centOS系统中,安装软件主要有三种方法:

  • rpm包安装

  • yum安装

  • 源码包安装

这则笔记分别对上述三种方法进行整理。

rpm工具

rpm,全称是red hat package manager, 是Red Hat公司提出了软件安装管理程序。

挂载 rpm 包安装源

rpm 包是预先在linux系统上编译打包的文件,就藏在centos7 的光盘镜像里。要使用它,首先要把这些包都找出来。

  • 第一步:挂载光驱镜像

依次点击virtual machine -> CD/DVD(IDE) ->connect CD/DVD,选择光驱镜像

注:如果是已经加载了光驱镜像的,就会显示disconnect CD/DVD

  • 第二步:将光驱挂载到 /mnt 目录
1
2
[root@stevey mnt]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only //出现这一行说明已经挂载上
  • 第三步:进入/mnt 目录,查看/mnt/Packages,就能找到rpm包了。

rpm 初始化

1
2
[root@stevey Packages]# rpm --initdb
[root@stevey Packages]# rpm --rebuilddb

rpm包安装:

命令格式: rpm [参数] [rpm包名称]

常见参数 用法
-i 安装
-v 可视化
-h 显示安装进度
-U 升级rpm包
–force 特殊用法,强制安装,即使覆盖其他包也会安装
–nodeps 即使依赖包没有安装,也要强制安装
  • 安装检测:--test 用来检查依赖关系,并不是真正的安装;
1
[root@stevey Packages]# rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm
  • 安装:rpm -ivh [rpm包名称] 这里的包名称必须包括平台信息、版本号等一长串信息,必须吐槽一下,简直是一夜回到解放前,好土著的感觉。
1
[root@stevey Packages]# rpm -ivh gaim-1.3.0-1.fc4.i386.rpm
  • 升级 file.rpm,使用 -U 参数。
1
[root@stevey Packages]#rpm -Uvh file.rpm
  • 由新版本降级为旧版本,加--oldpackage 参数:
1
[root@stevey Packages]# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
  • 为软件包指定安装目录:要加 --relocate 参数:
1
[root@stevey Packages]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm     //把gaim-1.3.0-1.fc4.i386.rpm指定安装在 /opt/gaim 目录中

注:通常情况下,centos执行文件都放在 /bin 或者 /sbin目录下,指定目录可能会导致找不到命令,解决方法:在 /bin 或者 /sbin 目录下建立一个软链接文件,然后设置软链接:ln -s [源文件] [目标文件]

1
[root@stevey Packages]# ln -s /opt/lynx/etc/lynx.cfg /etc/lynx.cfg

rpm 包卸载

命令行格式: rpm -e [软件包名]

1
[root@stevey Packages]# rpm -e lynx

注:这里的 rpm 包名是不包括平台信息和后缀名的。

rpm 包的查询

命令行格式: rpm [参数] [rpm包名]

以下是rpm的常见用法:

查看已安装文件

  • 查询系统已安装的软件: rpm -q [软件名]
1
[root@stevey Packages]# rpm -q gaim
  • 查看系统中所有已经安装的包,要加 -a 参数 ;
1
[root@stevey Packages]# rpm -qa
  • 在所有已经安装的软件包中查找某个软件: 与管道符 | grep 连用
1
[root@stevey Packages]# rpm -qa |grep gaim
  • 查询已安装的文件属于哪个软件包:rpm -qf [文件名]
1
[root@stevey Packages]# rpm -qf /usr/lib/libacl.la

注:此处的文件需要使用绝对路径

  • 查询已安装软件包信息:rpm -qi [软件名]
1
[root@stevey Packages]# rpm -qi lynx
  • 查询已安装软件位置:rpm -ql [软件名]
1
[root@stevey Packages]# rpm -ql lynx
  • 查看已安装软件的配置文件:rpm -qc [软件名]
1
[root@stevey Packages]# rpm -qc lynx
  • 查看已安装软件所依赖的软件包: rpm -qR [软件名]
1
[root@stevey Packages]# rpm -qR rpm-python

查看未安装文件

  • 查看软件包的用途及版本等信息: rpm -qpi [软件名]
1
[root@stevey Packages]# rpm -qpi lynx-2.8.5-23.i386.rpm
  • 查看软件包所包含的文件:rpm -qpl [软件名]
1
[root@stevey Packages]# rpm -qpl lynx-2.8.5-23.i386.rpm
  • 查看软件包的文档所在位置:rpm -qpd [软件名]
1
[root@stevey Packages]# rpm -qpd lynx-2.8.5-23.i386.rpm
  • 查看软件包的配置文件:rpm -qpc [软件名]
1
[root@localhost RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm
  • 查看软件包的依赖关系:rpm -qpR [软件名]
1
[root@localhost archives]# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm

源码包安装

源码包是所有安装方式里面最复杂的,如果可能,尽量不使用源码包安装。

安装工作流:

  • 第一步:./configure

  • 第二步:make

  • 第三步:make & install

以安装php为例,具体过程如下;

前提条件:

采用源码包安装的方式,需要用编译器进行。linux下的c语言编译器是gcc,centos下运行 yum install -y gcc 进行安装。

第一步:下载源代码

命令行格式: wget [源码包地址]

注意:

  • 下载源码包一定要到官方镜像地址,这里选择了香港镜像下载;

  • 建议源码包放置在固定目录,建议存放在/usr/local/src/

第二步:解压源码包

1
tar -jxvf php-7.2.4.tar.bz2  //这里下载的`.tar.bz2` ,所以用`-jxvf` 解压。

注:解压完成之后务必要进入文件目录,查看一下README 、 INSTSLL 这两个帮助文档,能够获得很多必要的说明信息。

1
[root@stevey php-7.2.4]# less INSTALL

第三步:配置选项并生成makefile

进入源码包目录,配置选项。运行 ./configure --help | less 查看帮助文档;

TroubleShooting:运行之后,出现了错误提示:configure: error: xml2-config not found. Please check your libxml2 installation.

google了半天,最终在这里找到了答案,解决办法:

1
yum install -y libxslt libxslt-devel libxml2 libxml2-devel

常见的配置选择有 --perfix=[安装目录] ,用来自定义软件包的安装目录。

1
./configure --prefix=/usr/local/php7

注:这里的路径一定要写绝对地址,否则会报错。

配置完成后,输入 echo $? 进行验证,返回值为0,说明配置成功。

第四步:编译安装包

命令行: make

TroubleShooting: 这里有遇到了坑,错误提示:virtual memory exhausted: Cannot allocate memory 虚拟内存不够,又折腾了很久,找到解决思路

错误原因:虚拟内存不够,从而导致编译失败。

解决问题:涉及知识点就是手动增加swap

  • 建立swapfile
1
2
3
4
5
6
[root@stevey php-7.2.4]# mkdir /usr/img/
[root@stevey php-7.2.4]# rm -rf /usr/img/swap
[root@stevey php-7.2.4]# dd if=/dev/zero of=/usr/img/swap bs=1024 count=2048000
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB) copied, 10.1097 s, 207 MB/s
  • 格式化swap
1
2
3
[root@stevey php-7.2.4]# mkswap /usr/img/swap
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=3f7c827e-4b1f-4120-80a2-4750c177d985
  • 挂载swap

命令:swapon /usr/img/swap

TroubleShooting: 好吧,真的跟打游戏一样,这里又复习一遍chmod的用法。

1
chmod 0600 /usr/img/swap

再次输入命令 echo $?,验证操作是否成功。

swap空间在编译完毕之后,就没用了,可以删掉。当然,也可以选择保留。

1
2
[root@stevey php-7.2.4]# swapoff swap 
[root@stevey php-7.2.4]# rm -f /usr/img/swap

第五步:安装

1
make install

yum 工具

注:比rpm更智能、更人性化的软件安装管理工具,

查询可用的安装包: yum list

注:左侧是软件名;中间是版本信息;右侧是安装信息。

  • base、anaconda表示不同的repos 仓库;

  • 加上@表示已安装,不加@表示本机未安装;

  • @updates 表示已安装需要升级;

以下是一些常用的查询命令:

  • 列出所有可更新的软件包:yum list updates

  • 列出所有已安装的软件包: yum list installed
  • 列出所有已安装但不在 Yum Repository 内的软件包: yum list extras
  • 使用YUM获取软件包信息: yum info
  • 列出所有软件包的信息: yum info
  • 列出所有可更新的软件包信息: yum info updates
  • 列出所有已安装的软件包信息: yum info installed
  • 列出软件包提供哪些文件: yum provides

搜索安装包:

  • 第一种方式: yum search [keyword]

  • 第二种方式:yum list | grep ‘keyword’

  • 第三种方式:yum provides '/*/vim'

yum安装卸载:

单独安装卸载

  • 安装:yum install -y [rpm 名]

  • 升级 rpm 包:yum update [-y] [rpm 名]

  • 卸载:yum remove [rpm 名]

注:卸载跟安装类似,卸载也可以加上-y参数,省略交互环节;不过稳妥起见,还是不加-y比较好。

组团安装

除了一个一个地安装,yum还支持一堆一堆的安装,就是按照功能把软件分组,一次安装一组软件。

  • yum grouplist 查询

  • yum groupinstall [组名] 安装,注意此处的组名要用单引号括起来
1
[root@stevey ~]#yum groupinstall 'Basic Web Server'

yum搭建本地仓库

相较于rpm,使用yum安装要方便很多,但是当系统无法联网,就不能使用yum安装软件了。这里的变通的方法,是搭建本地仓库。

实现办法如下:

  • 第一步:挂在光驱镜像
1
mount /dev/cdrom /mnt
  • 第二步:删除 /etc/yum.repos.d 目录下所有repos文件(强烈建议:先备份,再删除)
1
2
3
cp -r /etc/yum.repos.d /etc/yum.repos.d_bak //备份到/`etc/yum.repos.d_bak`

rm- rf /etc/yum.repos.d/* /删除repos文件
  • 第三步:创建dvd.repo
1
2
3
4
5
6
7
vim /etc/yum.repos.d/dvd.repo   //vim编辑,加入以下内容

[dvd]
name=install dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0
  • 第四步:刷新repos生成缓存
1
2
3
yum clean all     //先清楚之前到缓存
yum makecache //生成缓存
yum list //保险起见,可以查看一下,列表中最后一列标识为dvd的都是本地repos

之后,就可以使用本地repos了。

yum 下载安装包

yum只下载安装包(注:该方法适用于未安装软件)

1
yum install -y [包名] --downloadonly

默认情况下,下载的rpm包保存在这里:

1
/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages     //[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates)

上述方法,只适用于未安装软件,如果是已安装软件,则使用以下命令:

1
yum reinstall -y [包名] --downloadonly

下载的安装包地址在:

设置保留yum安装包

1
2
3
4
5
vim /etc/yum.conf   //修改 yum 配置文件,如下:

cachedir=/home/soft/yumcache //安装包保存地址
keepcache=1 //1表示保存已下载安装包
debuglevel=2

切换国内源

国内源地址:

服务商 repo地址
163 http://mirrors.163.com/.help/CentOS7-Base-163.repo
阿里巴巴 http://mirrors.163.com/.help/CentOS7-Base-163.repo
  • 第一步:备份源地址
1
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 第二步: 下载源
1
2
3
cd /etc/yum.repos.d/       //转到源目录:

wget -O /etc/yum.repos.d/CentOS-163-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo //下载源,O是大写,使用wget -O下载并以不同的文件名保存
  • 第三步:生成缓存:
1
2
yum clean all     //先清空缓存
yum makecache //再重新生成yum源

安装拓展源epel

EPEL 是yum的一个软件源,包含了PHP、Redis、htop等基本源没有到软件。

方法一:yum 安装

1
[root@stevey ~]# yum install -y epel-release

方法二:rpm安装

  • 先查看系统版本
1
2
[root@stevey ~]# arch      //该命令用于显示当前主机的硬件架构类型
x86_64 //表示64位系统,如果显示i686就是32位系统
  • 安装EPEL的rpm包,命令行格式:rpm -ivh [rpm地址],各系统版本命令如下:
1
2
3
4
5
6
7
8
9
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm     # CentOS 7 64位

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # CentOS 6 32位

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # CentOS 6 64位

rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm # CentOS 5 32位

rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm # CentOS 5 64位
  • 检查repo源 yum repolist 能看到红框标出的那一行,说明以安装成功

成功之后就可以使用yum 命令安装更多的命令了。

epel源删除(不推荐)

删除EPEL源需要同时删除配置和rpm文件。

1
2
3
4
5
6
rm epel.repo epel-testing.repo             # 删除配置文件

rm /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
yum remove $(rpm -qa | grep epel) # 删除rpm文件

yum clean all # 清理配置

yum设置源优先级

前提条件:需要安装yum-priorities

安装完成后确认一下配置文件是否存在。

编辑 /etc/yum.repos.d/目录下的*.repo 文件来设置优先级。

注意:

  1. 这里所有的repo文件都需要设置。例如 vim /etc/yum.repos.d/CentOS-Base.repo 在文件中另起一行写入priority=1,保存退出即可;其他repo也做同样修改,根据需求设置不同priority。

  2. 数字越大,优先级越低

  3. 推荐的设置为:

1
2
3
4
5
[base], [addons], [updates], [extras] … priority=1 

[centosplus],[contrib] … priority=2

Third Party Repos such as rpmforge … priority=N (where N is > 10 and based on your preference)

yum下载rpm包

命令行格式:yum install --downloadonly <package-name>

例如,尝试下载zsh的rpm包:

默认情况下,下载的rpm包保存在这里,/var/cache/yum/x86_64/7/[repository]/packages/ 。这里的[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates),也就是上图中红圈标出来的位置。

如果想要指定下载目录,使用以下命令:

1
yum install --downloadonly --downloaddir=/tmp <package-name>    `--downloaddir`后面跟的是指定的目录

注意:

  1. 在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用–downloadonly命令;

  2. 另一个专门下载安装包的软件 yumdownloader,这种方式只会将指定的包下载到当前目录下,不包括依赖包,所以实际使用起来仍然是比较麻烦的。

1
2
3
yum install yum-utils  //下载安装插件

yumdownloader <package-name> //将指定包下载到当前目录下

参考资料:

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!