Linux软件的安装
一、编译安装
1、获取源代码
Nginx官网:http://nginx.org/en/ 下载地址:http://nginx.org/download/ 或者从GitGub官网查找下载
注:一般的开源服务,除了在官网能够找到其相关的源码包之外,通常他们还会把相关安装包放在GitHub网站上
也可以在Linux系统中直接下载:
[root@localhost ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
--2021-05-10 07:33:10-- http://nginx.org/download/nginx-1.16.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 2a05:d014:edb:5702::6, 2a05:d014:edb:5704::6, 52.58.199.22, ...
正在连接 nginx.org (nginx.org)|2a05:d014:edb:5702::6|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1032345 (1008K) [application/octet-stream]
正在保存至: “nginx-1.16.0.tar.gz”
100%[==============================>] 1,032,345 3.88KB/s 用时 6m 44s
2021-05-10 07:39:55 (2.49 KB/s) - 已保存 “nginx-1.16.0.tar.gz” [1032345/1032345])
[root@localhost ~]# ls
anaconda-ks.cfg http.sh user.sh 视频 音乐
fenshu.sh initial-setup-ks.cfg users.sh 图片 桌面
httpdd.sh nginx-1.16.0.tar.gz 公共 文档
httpd.sh repo.sh 模板 下载
[root@localhost ~]# du -h nginx-1.16.0.tar.gz
1012K nginx-1.16.0.tar.gz
2、解压tar包
//安装前准备,下载源码安装所编译工具:
[root@localhost ~]# yum -y install gcc zlib pcre-devel openssl openssl-devl zlib-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
软件包 gcc-4.8.5-28.el7.x86_64 已安装并且是最新版本
软件包 zlib-1.2.7-17.el7.x86_64 已安装并且是最新版本
软件包 1:openssl-1.0.2k-12.el7.x86_64 已安装并且是最新版本
没有可用软件包 openssl-devl。
正在解决依赖关系
--> 正在检查事务
---> 软件包 pcre-devel.x86_64.0.8.32-17.el7 将被 安装
---> 软件包 zlib-devel.x86_64.0.1.2.7-17.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
==================================================================================================================================================
Package 架构 版本 源 大小
==================================================================================================================================================
正在安装:
pcre-devel x86_64 8.32-17.el7 local 480 k
zlib-devel x86_64 1.2.7-17.el7 local 50 k
事务概要
==================================================================================================================================================
安装 2 软件包
总下载量:530 k
安装大小:1.6 M
Downloading packages:
Error downloading packages:
zlib-devel-1.2.7-17.el7.x86_64: [Errno 256] No more mirrors to try.
pcre-devel-8.32-17.el7.x86_64: [Errno 256] No more mirrors to try.
注:pcre 支持正则表达式 openssl加密方式,一般配合httpd或nginx,devel是对软件进行二次开发时候使用的,里边包括头文件,静态库甚至源代码
//添加nginx用户
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
//解压源码包
[root@localhost ~]# tar -zxvf nginx-1.16.0.tar.gz -C /usr/src
3、./config配置
[root@localhost ~]# cd /usr/src/nginx-1.16.0
[root@localhost nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
4、make编译
//make编译,生成可执行的二进制文件Makefile,一般编译后会紧跟着安装
[root@localhost nginx-1.16.0]# make && make install
5、配置应用选项
[root@localhost nginx-1.16.0]# ln -s /usr/local/nginx/sbin/*
/usr/local/sbin/
[root@localhost nginx-1.16.0]# nginx -t
nginx: the configuration file
/usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf
test is successful
[root@localhost nginx-1.16.0]# nginx
[root@localhost nginx-1.16.0]# nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address
already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address
already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address
already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address
already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address
already in use
二、RPM
1、安装软件包
rpm常用选项
-vh 显示安装进度
-U 升级软件包
-qpl 列出RPM软件包内的文件信息
-qpi 列出RPM软件包的描述信息
-qf 查找指定文件属于哪个RPM软件包
-Va 校验所有的RPM软件包,查找丢失的文件
-qa 查找相应文件,如:rpm -qa mysql
-e 卸载rpm包
-q 查询已安装的软件信息
-i 安装rpm包
-u 升级rpm包
--replacepkgs 重新安装rpm包
--justdb 升级数据库,不修改文件系统
--percent 在软件包安装时输出百分比
--help 帮助
--version 显示版本信息
-c 显示所有配置文件
-d 显示所有文档文件
-h 显示安装进度
-l 列出软件包中的文件
-a 显示文件状态
-p 查询/校验一个软件包
-v 显示详细的处理信息
举例:
安装软件
[root@localhost ~]# rpm -ivh zsh-5.0.2-33.el7.x86_64.rpm
也可以在安装前先进行测试
[root@localhost ~]# rpm -ivh --test zsh-5.0.2-33.el7.x86_64.rpm
--test:只是测试安装
--nodeps:只安装软件本身,不考虑依赖
--force:强制安装
2、rpm的查询:重点
1)-q query查询
a)查询软件包是否安装rpm -q 软件名字
[root@localhost ~]# rpm -q zsh
未安装软件包 zsh
b)查询系统中所有已经安装的软件包有哪些
[root@localhost ~]# rpm -qa |wc -l
1430 //统计个数
c)f查询某个文件是由哪个软件包安装的
[root@localhost ~]# rpm -qf `which vim` //找出vim命令是由哪个软件包装的
vim-enhanced-7.4.160-4.el7.x86_64
[root@localhost ~]# rpm -qf /etc/passwd ///etc/passwd文件是由哪个软件包安装的
setup-2.8.71-9.el7.noarch
d)c查询软件的配置文件
[root@localhost ~]# rpm -qc httpd //查询httpd服务的配置文件
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
e) l安装某个软件时,都安装了哪些文件
[root@localhost ~]# rpm -ql httpd
f)i查询安装的软件包信息
[root@localhost ~]# rpm -qi httpd
Name : httpd
Version : 2.4.6
Release : 80.el7.centos
Architecture: x86_64
Install Date: 2021年05月08日 星期六 10时04分38秒
Group : System Environment/Daemons
Size : 9817285
License : ASL 2.0
Signature : RSA/SHA256, 2018年04月25日 星期三 19时04分41秒, Key ID 24c6a8a7f4a80eb5
Source RPM : httpd-2.4.6-80.el7.centos.src.rpm
Build Date : 2018年04月21日 星期六 02时12分22秒
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
2)-qp查询未安装的软件包的相关信息
rpm -qpi gcc-4.8.5-39.el7.x86_64.rpm
-qpi:未安装的软件包的完整路径和包名:查询未安装的软件包的详细信息
-qpl:如果安装未安装的软件,会安装哪些文件在系统里
-qpR:查询未安装的软件包的依赖情况
3)rpm包的卸载
-e:erase
rpm -e zsh
rpm -q zsh
4)rpm包的校验:verify
为了安全,防止恶意代码
V:后面接软件名称,该软件所含的文件被改动过,才会被列出来。针对一个软件查询
Va:列出系统上面所有有可能被改动过的文件。针对整个系统的
Vp:后面接RPM软件包
Vf:列出某个文件是否被改动过
rpm -Vf /usr/sbin/sshd
rpm -Va 检测所有的包
[root@localhost ~]# rpm -Va
.M....... g /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/lib/amd64/server/classes.jsa
.M....... g /var/lib/setroubleshoot/email_alert_recipients
......
......
......
对于输出中每个标记的含义介绍如下:
S 表示文件长度发生了变化
M 表示文件的访问权限或文件类型发生了变化
5 表示MD5校验和发生了变化
D 表示设备节点的属性发生了变化
L 表示文件的符号链接发生了变化
U 表示文件/子目录/设备节点的owner发生了变化
G 表示文件/子目录/设备节点的group发生了变化
T 表示文件最后一次的修改时间发生了变化
注: 如果输出结果中有“M”标记出现,那么对应的文件可能遭到篡改或替换,此时可以通过卸载这个rpm包重新安装来清除受攻击的文件 不过这个命令有个局限性,那就是只能检查通过rpm包方式安装的所有文件,对于通过非rpm包方式安装的文件就无能为力了。同时 如果rpm工具也遭到替换,就不能通过这个方法了,此时可以从正常的系统上复制一个rpm工具进行检测
三、yum安装
yum是红帽系列系统基于RPM包构建的软件更新机制,可以自动解决rpm包之间的依赖关系,所有软件包由集中的yum软件仓库提供。
yum的配置文件在 /etc/yum.repos.d/下面,必须以.repo结尾!
常用yum命令
1)、安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinstall group1 安装程序组group1
2)、更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级指定组group1
3)、查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的软件包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息
yum search string 根据关键字string查找安装包
4)、删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5)、清楚缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的headers
yum clean oldheaders 清除缓存目录下旧的headers
一般常用命令
//查看这个命令是由哪个包提供的?[root@localhost ~]# yum provides vim 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml" 正在尝试其它镜像。 2:vim-enhanced-7.4.160-4.el7.x86_64 : A version of the VIM editor which : includes recent enhancements 源 :local 匹配来源: 提供 :vim = 7.4.160-4.el7 2:vim-enhanced-7.4.160-4.el7.x86_64 : A version of the VIM editor which : includes recent enhancements 源 :@anaconda 匹配来源: 提供 :vim = 7.4.160-4.el7
//查看yum仓库中所有的rpm包,通常会和grep一起使用查看是否有我们需要的包
[root@localhost ~]# yum list | grep httpd file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml" 正在尝试其它镜像。 httpd-tools.x86_64 2.4.6-80.el7.centos @local httpd.x86_64 2.4.6-80.el7.centos local httpd-devel.x86_64 2.4.6-80.el7.centos local httpd-manual.noarch 2.4.6-80.el7.centos local libmicrohttpd.x86_64 0.9.33-2.el7 local
//查看要安装的包的详细信息
[root@localhost ~]# yum info httpd 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml" 正在尝试其它镜像。 可安装的软件包 名称 :httpd 架构 :x86_64 版本 :2.4.6 发布 :80.el7.centos 大小 :2.7 M 源 :local 简介 : Apache HTTP Server 网址 :http://httpd.apache.org/ 协议 : ASL 2.0 描述 : The Apache HTTP Server is a powerful, efficient, and : extensible web server.
//安装软件包
[root@localhost ~]# yum -y install httpd
//卸载软件包
[root@localhost ~]# yum -y remove httpd
1、配置本地yum源
配置本地yum源是通过本地映射光盘挂载到系统中,然后将yum的配置文件中的baseurl指向挂载的目录即可
步骤:
//首先在虚拟机的这个配置中,勾选使用iso映射文件,然后选中我们iso文件所在的位置即可
//在虚拟机系统中,我们的iso文件是/dev/sr0设备,现在我们要将iso文件挂载到/mnt/cdrom下。如果mnt目录下木cdrom,那么我们自己新建一个[root@localhost ~]# mkdir /mnt/cdrom
//挂载有两种方式挂载,临时挂载和开机自动挂载
临时挂载[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
(我们设备的挂载信息在/etc/fsyab里面,所以我们想要永久挂载,需要修改fstab文件。用vim打开该文件,我们可以看到有三行信息,是其他分区的挂载信息,所以我们现在要把我们光盘的挂载信息添加过去)
开机自动挂载
vim /etc/fstab
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0
mount -a
//挂载好iso文件之后,我们去修改源的配置文件/etc/yum.repos.d/,它默认有一个文件,我们把它做一个备份,然后自己新建以.repo结尾的文件,用vim编辑器打开.输入以下的配置,保存
cd /etc/yum.repos.d/
mkdir backup
mv *.repo backup/
vim my.repo
[myrepo]
name=NewRepo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0[myrepo] 括号中的名称为仓库源名称,通常为字谜和数字,必须填写
name=NewRepo 对yum的描述,可写可不写
baseurl=file:///mnt/cdrom 表示声明yum可以管理并使用的rpm包路径,必须填写
enabled=1 表示当前仓库是否开启,1为开启,0为关闭,此项不写默认为开启
gpgcheck=0 表示安装rpm包时,是否基于公私钥对匹配包的安全信息,1表示开启,0表示关闭,此项不写默认为验证
//最后我们进入到/mnt/cdrom/Packages目录下,验证一下
cd /mnt/cdrom/Packages
ll | wc -l2、配置网络yum源
//这里配置国内阿里的yum源,网址:http://developer.aliyun.com/mirror/
cd /etc/yum.repos.d/
rm -rf my.repo
wegt -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
除了阿里云的yum源,在此还准备了国内其他yum源的地址:
网易163yum源,安装方法查看:http://mirrors.163.com/.help/
中科大的 yum源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help
清华大学的 yum源,安装方法查看: https://mirrors.tuna.tsinghua.edu.cn/
浙江大学的 yum源,安装方法查看: http://mirrors.zju.edu.cn/
中国科技大学yum源,安装方法查看: http://centos.ustc.edu.cn/3、拓展yum源
EPEL是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、Centos和Scientific Linux
这里我们使用国内的阿里源,国内yum源皆有拓展源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo4、使用yum查看安装服务的相关包文件
yum -y install yum-utils
repoquery -ql nginx5、在下载的时候,可以选择将rpm包下载到本地
可以使用 --downloadonly --downloaddir=/xxx
下载完成之后 yum -y localinstall *