初入linux——软件安装

时间:2020-8-30 作者:admin


Linux软件的安装

在windows下安装一个软件很轻松,只要双击setup或者.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一个软件。

Linux发现版本有很多,包管理工具也有很多,主要是RedHat的红帽派和Debin派,现在我们学的CentOS是红帽一派,这里主要拿它来讲解。

软件的安装,类似在windows上下载安装一个游戏一样,无非找到对应的可执行文件,直接双击就可以,然后在安装过程中,可能会考虑到将此服务安装到哪个目录之下,当然也会有各种配置文件,只不过平时我们没注意过这些,其实Linux系统也一样,但稍微比windows要复杂一些。在红帽一派的系统中,安装方式无外乎三种,源码编译安装、rpm包安装、yum源安装。

一、编译安装

初入linux——软件安装
这里我们以编译安装Nginx为例:

1、获取源代码

Nginx官网:http://nginx.org/en/,下载地址:http://nginx.org/download/,或者是从GitGub网站查找下载。

PS: 一般的开源服务,除了在官网能够找到其相关的源码包之外,通常他们还会把相关安装包放在GitHub网站上。

Linux系统中也可以直接下载:

[root@base ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
[root@base ~]# ls
nginx-1.16.0.tar.gz
[root@base ~]# du -h nginx-1.16.0.tar.gz
1012K nginx-1.16.0.tar.gz //源码包体积非常小

2、解压tar包

//安装前准备,下载源码安装所需编译工具:

PS: pcre :支持正则表达 openssl加密方式,一般配合httpd或nginx,devel是对软件进行二次开发时候使用的,里边包括头文件、静态库甚至源代码。

//添加nginx用户

[root@base ~]# useradd -M -s /sbin/nologin nginx

//解压源码包

[root@base ~]# tar -zxf nginx-1.16.0.tar.gz -C /usr/src

3、./config配置

[root@base nginx-1.16.0]# pwd /usr/src/nginx-1.16.0
[root@base nginx-1.16.0]# ./configure –
prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_stub_status_module

4、make编译

//make 编译,生成可执行的二进制文件Makefile,一般编译后会紧跟着安装。

[root@base nginx-1.16.0]# make && make install

5、配置应用选项

[root@base nginx-1.16.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@base 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@base nginx-1.16.0]# nginx
[root@base 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

RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安
装到你的Linux 主机的一套管理程序。

也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。

RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。

但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

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@base ~]# rpm -ivh zsh-5.0.2-33.el7.x86_64.rpm
Preparing…
################################# [100%]
Updating / installing…
1:zsh-5.0.2-33.el7
################################# [100%]

//也可在安装前先进行测试。

[root@base ~]# rpm -ivh –test gcc-4.8.5-39.el7.x86_64.rpm
Preparing…
################################# [100%]
package gcc-4.8.5-39.el7.x86_64 is already installed

–test:只是测试安装,并不会真正安装软件
–nodeps:只安装软件本身,不考虑依赖
–force:强制安装

2、rpm的查询: 重点

1、-q query—查询

查询已安装的软件包的信息

a)查询软件包是否安装 rpm -q 软件名字

[root@base ~]# rpm -q zsh
zsh-5.0.2-33.el7.x86_64
[root@base ~]# rpm -q abcd
package abcd is not installed

b)查询系统中所有已经安装的软件包有哪些

[root@base ~]# rpm -qa

//统计已经安装的软件包的个数

[root@base ~]# rpm -qa |wc -l
372

c)f 查询某个文件是由哪个软件包安装的
文件的绝对路径: which
//找出vim命令是由哪个软件包安装的

[root@base ~]# rpm -qf `which vim“ //反向键
vim-enhanced-7.4.629-6.el7.x86_64

d)c 查询软件的配置文件

[root@base ~]# rpm -qc httpd

e)l 安装某个软件时,都安装了哪些文件

[root@base ~]# rpm -ql httpd

f)i 查询安装的软件包的信息

[root@base ~]# rpm -qi httpd

2、-qp 查询未安装的软件包的相关信息

[root@base ~]# rpm -qpi gcc-4.8.5-39.el7.x86_64.rpm

-qpi 未安装的软件包的完整路径和包名 :查询未安装的软件包的详细信息
-qpl:如果安装未安装的软件,会安装哪些文件在系统中
-qpR:查询未安装的软件包的依赖情况

3、rpm包的卸载

e : erase

[root@base ~]# rpm -e zsh
[root@base ~]# rpm -q zsh
package zsh is not installed

rpm包的更新
-U : 如果包未安装,等同于-i 进行安装
如果包已安装,便是更新版本

4、rpm包的校验: verify

为了安全,防止恶意代码

V:后面接软件名称,该软件所含的文件被改动过,才会被列出来。针
对一个软件查询。
Va:列出系统上面所有有可能被改动过的文件。针对整个系统的。
Vp:后面接RPM软件包。
Vf:列出某个文件是否被改动过

[root@base ~]# rpm -Vf /usr/sbin/sshd
S.5…T. c /etc/ssh/sshd_config

rpm -Va 检测所有的包
对于输出中每个标记的含义介绍如下:

S:表示文件长度发生了变化
M:表示文件的访问权限或文件类型发生了变化
5:表示MD5校验和发生了变化
D:表示设备节点的属性发生了变化
L:表示文件的符号链接发生了变化
U:表示文件/子目录/设备节点的owner发生了变化
G:表示文件/子目录/设备节点的group发生了变化
T:表示文件最后一次的修改时间发生了变化

如果在输出结果中有“M”标记出现,那么对应的文件可能已经遭到篡改或替换,此时可以通过卸载这个rpm包重新安装来清除受攻击的文件。

不过这个命令有个局限性,那就是只能检查通过rpm包方式安装的所有文件,对于通过非rpm包方式安装的文件就无能为力了。同时,如果rpm工具
也遭到替换,就不能通过这个方法了,此时可以从正常的系统上复制一个rpm工具进行检测。

三、yum安装

YUM(Yellow dog Updater Modified): yum是Redhat系列系统基于RPM包构建的软件更新机制,可以自动解决 rpm 包之间的依赖关系,所有软件包由集中的yum软件仓库提供。其理念是使用一个中心仓库(repository)管理一部分甚至一个distribution的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、 删除等操作,减少了Linux用户一直头痛的
dependencies的问题。 可以同时配置多个资源库(Repository),简洁的置文件(/etc/yum.conf),自动解决增加或删除rpm包时遇到的依赖性问题,保持与RPM数据库的一致性。

PS: yum的配置文件在 /etc/yum.repos.d/ 下面,必须以 .repo 结尾!

常用yum命令:

1、 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall 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
yum clean, yum clean all (= yum clean packages;yum clean oldheaders) 清除缓存目录下的软件包及旧的headers

总结: 一般常用命令
//查看这个命令是由哪个包提供的

[root@base ~]# yum provides pstree

//查看yum仓库中所有的rpm包,通常会和 grep一起使用查看是否有我们需要的包。

root@base ~]# yum list | grep httpd

//查看要安装的包的详细信息

[root@base ~]# yum info httpd

//安装软件包

[root@base ~]# yum install httpd -y

//卸载软软件包

[root@base ~]# yum remove httpd -y

1、配置本地yum源

配置本地yum源是通过本地映射光盘挂载到系统中,然后将yum的配置文件中的 baseurl 指向挂载的目录即可。

//首先在虚拟机的这个配置中,勾选使用iso映射文件,然后选中我们iso文件所在的位置即可。
初入linux——软件安装
//在虚拟机系统中,我们的 iso 文件是 /dev/sr0 设备,现在我们要将iso文件挂载到 /mnt/cdrom 下。如果mnt目录下没有cdrom,那么我们自己新建一个。

[root@base ~]# ll /dev/sr0
brw-rw—-. 1 root cdrom 11, 0 Apr 16 16:06 /dev/sr0

挂载有两种方式挂载,临时挂载和开机自动挂载
//临时挂载

[root@base ~]# mkdir /mnt/cdrom
[root@base ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only

我们的设备的挂载信息在 /etc/fstab 里面,所以我们要想永久挂载,需要修改 fstab 文件。用 vim 打开该文件,我们可以看到有三行信息,是其他分区的挂载信息,所以我们现在要把我们的光盘的挂载信息添加过去。

//开机自动挂载

[root@base ~]# vim /etc/fstab

/dev/sr0 /mnt/cdrom iso9660 defaults 0
0
[root@base ~]# mount -a

挂载好iso文件之后,我们去修改源的配置文件 /etc/yum.repos.d/ ,它默认有一个文件,我们把它做一个备份,然后自己新建以 .repo 结尾的文件,用vim编辑器打开。输入以下的配置,保存。

[root@base yum.repos.d]# pwd
/etc/yum.repos.d
[root@base yum.repos.d]# mkdir backup
[root@base yum.repos.d]# mv *.repo backup/
[root@base yum.repos.d]# ls
backup
[root@base yum.repos.d]# vim my.repo
[myrepo]
name=NewRepo
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@base yum.repos.d]# yum clean all
[root@base yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
myrepo |
3.6 kB 00:00
(1/2): myrepo/group_gz |
166 kB 00:00
(2/2): myrepo/primary_db |
6.0 MB 00:00
repo id repo name
status
myrepo NewRepo
10,019
repolist: 10,019

[myrepo] #括号中的名称为仓库源名称,通常为字母和数字,必须填写name=NewRepo #对yum的描述,可写可不写。
baseurl=file:///mnt/cdrom #baseurl表示声明yum可以管理并使用的rpm包路径,必须填写。
enabled=1 #enabled表示当前仓库是否开启,1为开启,0为关闭,此项不写默认为开启。
gpgcheck=0 #gpgcheck表示安装rpm包时,是否基于公私钥对匹配包的安全信息,1表示开启, #0表示关闭,此项不写,默认为验证。

[root@base Packages]# pwd
/mnt/cdrom/Packages
[root@base Packages]# ll | wc -l
10021

2、配置网络yum源

//这里配置国内阿里的yum源,网址:https://developer.aliyun.com/mirror/

[root@base yum.repos.d]# rm -rf my.repo
[root@base yum.repos.d]# wget -O /etc/yum.repos.d/CentOSBase.
repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@base yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirrors.aliyun.com
  • extras: mirrors.aliyun.com
  • updates: mirrors.aliyun.com
    repo id repo name
    status
    base/7/x86_64 CentOS-7 – Base -mirrors.aliyun.com 10,097
    extras/7/x86_64 CentOS-7 – Extras -mirrors.aliyun.com 341
    updates/7/x86_64 CentOS-7 – Updates -mirrors.aliyun.com

除了阿里云的yum源,在此还准备了国内其他yum源的地址:
网易163 yum源,安装方法查看: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 (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.

这里考虑网络原因,也不再使用Fedora的拓展源,改用国内的拓展源,上述国内yum源皆有拓展源,这里我们选用阿里云。

[root@base yum.repos.d]# wget -O
/etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
[root@base yum.repos.d]# yum repolist
[root@base yum.repos.d]# yum makecache fast
[root@base yum.repos.d]# yum install nginx

//有没有考虑过,我们使用yum install 之后的包,都放在哪里了那?,默认情况之下,系统是不会保存我们下过的rpm包。但,我们也可以通过设置来保存,当然建议不保存,因为为占用我们的磁盘空间。通过编辑/etc/yum.conf

[root@base ~]# vim /etc/yum.conf
cachedir=/var/cache/yum/

basearch/basearch/

releasever //包存放位置
keepcache=1 //是否开启保存rpm包

[root@base packages]# pwd
/var/cache/yum/x86_64/7/epel/packages
[root@base packages]# ls
nginx-1.16.1-1.el7.x86_64.rpm
nginx-all-modules-1.16.1-1.el7.noarch.rpm
nginx-filesystem-1.16.1-1.el7.noarch.rpm
nginx-mod-http-image-filter-1.16.1-1.el7.x86_64.rpm
nginx-mod-http-perl-1.16.1-1.el7.x86_64.rpm
nginx-mod-http-xslt-filter-1.16.1-1.el7.x86_64.rpm
nginx-mod-mail-1.16.1-1.el7.x86_64.rpm
nginx-mod-stream-1.16.1-1.el7.x86_64.rpm

4、使用yum查看安装服务的相关包文件[root@base ~]# yum -y install yum-utils

[root@base ~]# yum -y install yum-utils
[root@base ~]# repoquery -ql nginx

5、在下载的的时候,可以选择将rpm包下载到本地

可以使用 –downloadonly –downloaddir=/xxx ,下载完成之后, yum -y localinstall *

码字不易,点个赞呗
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。