Linux-安装软件的三种方式

前言

在Linux系统中,有三种安装软件的方式(其实是四种,ubuntu 中还可以使用 apt安装软件)
简单介绍:

  1. 订餐点外卖 (做好的饭 筷子) yum安装软件 简单快捷 (掌握)
  2. 买半成品 (速冻饺子 加工) rpm安装软件 需要有软件安装包
  3. 自己做饭 (食材 做饭) 编译安装软件 可以灵活调整

优缺点:

  1. rpm
    优点:单独安装软件
    缺点:不能解决依赖关系
  2. yum
    优点:解决软件依赖关系
    缺点:不能灵活定制化
  3. 编译安装
    优点:单独定制安装软件
    缺点:不能解决依赖关系

rpm

简介

RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

每一个rpm包的名称都由”-“和”.”分成了若干部分。就拿 a2ps-4.13b-57.2.el5.i386.rpm 这个包来解释一下,a2ps 为包名;4.13b则为版本信息;57.2.el5为发布版本号;i386为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 alacarte-0.10.0-1.fc6.noarch.rpm 。

在这里插入图片描述

使用rpm命令安装扩展名为".rpm"的软件包

格式:rpm [选项] RPM包文件
常用选项:
-i:安装一个新的rpm软件包
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
–force:强制安装所指定的rpm软件包
–nodeps:安装软件时,忽略依赖关系

(1)安装没有依赖包的.rpm软件
在这里插入图片描述

PS:这个不是在线下载,需要你当前文件夹有这个 rpm 包才行。在安装软件时,一般选项 -ivh 一起使用,这样可以看到安装进度与安装信息。

(2)安装有依赖关系的.rpm软件包。
可以同时将依赖包与软件包一起安装,下图中安装gcc-4.4.7-4.el6.x86_64.rpm软件包时,有两个依赖包,所以安装时,三个软件包一起安装。
在这里插入图片描述

升级或更新.rpm软件包

格式:rpm [选项] RPM包文件

常用选项:
-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装
–nodeps:升级软件时,忽略依赖关系

卸载指定的.rpm软件包

格式:rpm -e filename
–nodeps:卸载软件时,忽略依赖关系
在这里插入图片描述
PS:卸载时后边跟的filename和安装时的是有区别的。这里的filename是通过rpm的查询功能所查询到的,稍后会作介绍。

查询已安装的.rpm软件包

格式:rpm -q[子选项] [软件名]
常用子选项命令:
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息
-ql:查询指定软件包所安装的目录、文件列表
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件
这里的软件名,是不带有平台信息以及后缀名的)
查看软件包是否有安装
在这里插入图片描述

查询文件或目录是哪个软件包安装的

格式:rpm -qf 文件或目录名
在这里插入图片描述

查询未安装的.rpm软件包文件

格式:rpm -qp[子选项] RPM包文件

常用的子选项:
-qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表

PS:查询未安装的软件包时,必须输入整个安装包的名称,而查询已安装的软件包时,只要输入软件包名就可以了
在这里插入图片描述

yum

简介

介绍完rpm工具后,还需要你掌握最常用的yum工具,这个工具比rpm工具好用多了,当然前提是你使用的linux系统是支持yum的。yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包。

yum源的获取

本地源设置

使用yum命令时,必须依赖于yum源,而yum源可以从互联网获取,也可以建立本地的yum源;从互联网获取的yum源,前提条件必须连接互联网,连接互联网后,直接使用yum命令安装,默认情况yum源的配置文件是在**/etc/yum.repos.d目录下,打开/etc/yum.repos.d**,可以看到yum源默认用的CentOS官网的。
如果无法连接外网,那么就需要建立本地的yum源,当有光驱时,建立本地yum源的步骤:
(1) 在系统根目录下新建一个目录abc;
在这里插入图片描述
(2) 将系统安装光盘挂到根/abc目录下;
在这里插入图片描述
(3) 在/etc/yum.repos.d/目录下新建一个xxx.repo的yum源文件,如新建的yum源文件名称为testyum.repo,新建testyum.repo文件前,需要先将/etc/yum.repos.d/目录下的文件全部删除;
在这里插入图片描述
在testyum文件中输入下面的内容:
[yunSource] #yum源名称
name=yumSource #yum源名称
baseurl=file:///abc #yum源所在的本地路径,file://是指本地硬盘上
gpgcheck=0 #不校验软件包是不是官方发布的

(4)文件输入完成后保存并退出,查看/etc/yum.repos.d目录下已生成一个testyum.repo的文件,用命令yum repolist all 查看一下建立的yum源仓库是否建立成功;
(5)yum clean all 清空一下缓存
(6)yum repolist 重新加载库
(7) 这样就可以用yum源安装软件包了;
备注:如果Linux可以上外网,baseurl可以用网易的镜像源:http://mirrors.163.com/.help/CentOS6-Base-163.repo

配置阿里源等…
# 统一yum安装的环境:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 命令作用:
从阿里云下载一个yum源文件,更新默认的/etc/yum.repos.d/CentOS-Base.repo,使下载环境统一

使用yum命令来安装软件包

格式:yum install [-y] 软件名
-y:如果使用-y,那么在安装软件时命令行就不会出现"Is this ok[y/N]"这条提醒语句了,更不需要在命令行输入y或N了,直接安装软件
在这里插入图片描述备注:对于安装有依赖包的软件,用yum命令特别方便,如果用rpm命令,就必须要先装依赖包再装软件包,而yum命令会直接匹配依赖包然后直接安装
在这里插入图片描述

卸载一个rpm包

格式: yum remove [-y] [rpm包名]

列出所有已安装的软件包

格式: yum list installed

列出所有可安裝的软件包

格式: yum list

搜索一个软件包

(1)yum search [相关关键词]
(2)yum list | grep 软件名

列出所有软件包的信息或单独一个软件包的信息

(1)yum info: 列出所有软件包的信息
(2)yum info 软件名:列出指定软件包的信息

升级一个软件包

格式: yum update [-y] [rpm包]

安装源码包

简介

其实,在linux下面安装一个源码包是最常用的。安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。

源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。

用源代码安装软件的优点:

  1. 可以获得最新的软件,及时修复bug;
  2. 根据用户的需求,灵活定制软件功能

编译安装源包必须要有源代码编译环境。 编译源代码步骤
在这里插入图片描述configure、Makefile.in一般是项目管理器自动生成的,而gcc编译器需要安装,使用yum命令安装。
安装一个源码包,通常需要三个步骤:

  1. ./config 在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通过”./config --help ”命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一个Makefile文件。

  2. make 使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。

  3. make install 安装步骤,生成相关的软件存放目录和配置文件的过程。

上面介绍的3步并不是所有的源码包软件都一样的,源码包的安装并非具有一定的标准安装步骤。这就需要你拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名。所以,你一定要去看一下。
在这里插入图片描述

源码安装步骤

  1. 下载一个源码包
    这里要提一下,建议以后你把所有下载的源码包放到/usr/local/src/目录下,这个并不是必须的,只是一个约定。方便你和你的同事将来更好的去运维这台服务器。
    PS:下载下来的源码包,可以使用md5sum校验工具,进行完整性校验,防止源码包被别人串改,校验方法:计算MD5校验和,并与官方提供的值相比较,判断是否一致,如果一个致,代表没有串改,如果不一致,就表明已被别人串改了。
    在这里插入图片描述
    在这里插入图片描述

提示: 用firefox浏览器下载文件默认保存到当前用户root的主目录/root/Downloads目录下,如果是其它普通用户登陆的,默认保存到/home/普通用户名/Downloads目录下。也可以使用wget下载源码,wget即为下载的命令,后边跟源码包的下载地址。(wget在哪个目录下运行,则下载的文件就在那个目录)

  1. 解压源码包

进入这个解压后的文件,可以看到源码目录。

在这里插入图片描述

  1. 配置相关的选项,并生成Makefile

使用./config --help 可以查看可用的选项。一般常用的有”–prefix=PREFIX “ 这个选项的意思是定义软件包安装到哪里。
常源码包都是安装在/usr/local/目录下的。
在这里插入图片描述结束后生成了Makefile文件。除了查看有没有生成Makefile文件来判定有没有完成./config 的操作外,还可以通过这个命令”echo $?”来判定,如果是0,则表示上一步操作成功完成,否则就是没有成功。
备注:
(1)/usr/local/apache2目录是随意指定的一个安装目录,也可以安装到其它目录下;

(2)使用./configure配置时,需要将工作目录切换到软件源码所在的目录;

(3)使用源码目录中的configure脚本,由于configure是软件程序而不是系统命令,所以执行时,需要指明路径,由于目前是在httpd-2-2.15,可以使用相对路径 ./configure,.(点)的意思是指当前目录httpd-2-2.15目录;

(4)–prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱;如果使用–prefix选项可以将安装文件放到/usr/local/apache2目录中,有利于查找、卸载软件或移植软件,当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净,移植软件只需拷贝整个目录到另外一个机器即可;

  1. 进行编译执行make命令即可
    这一步操作,就是把源代码编译成二进制的可执行文件,这一步也是最漫长的一步,编译时间的长短取决于源代码的多少和机器配置。

  2. 安装 — make install
    在安装前,用echo $?先确认上一步操作是否成功完成。、
    使用安装make install命令安装程序、
    在这里插入图片描述 使用安装/usr/local/apache2/bin目录下的apachectl程序,用./apachectl start启动安装程序
    在这里插入图片描述关闭程序
    在这里插入图片描述备注:make与make install命令可以合写成一行

疑问

(1)centos中使用rpm包或yum命令在线安装的软件默认是安装在哪个目录下?
这个不是 rpm 包管理器和 yum 命令决定的,而是软件包自身会选择安装到某个地方,通常会在这几个文件夹中。
1,/bin 可执行文件
2,/usr/bin 可执行文件
3,/sbin 可执行文件
4,/usr/local/bin 可执行文件
5,/usr/include 头文件
6,/usr/local/include 头文件
7,/lib 库
8,/usr/lib 库
9,/usr/local/lib 库
10,还有一些配置文件,在/etc下,或者/var下

补充

apt

简介

apt 可以更新软件包列表索引、执行安装新软件包、升级现有软件包,还能够升级整个 Ubuntu 系统(apt 是 Debian 系操作系统的包管理工具)。与更专业的 APT(Advanced Packaging Tool) 工具 apt-get 和 apt-cache 相比,apt 具有一些更适合交互式场景的选项,它更倾向于成为面向最终用户的工具(而不仅仅是系统管理员)。换句话说,apt 比 apt-get 用起来更简单,用户体验更好。

基本语法
语法格式:

apt [options] command

配置文件:

早期 apt 默认的配置文件为 /etc/apt/apt.conf,但是当前的 Ubuntu 系统中默认没有这个文件。
如果 /etc/apt/apt.conf 文件存在,apt 仍然会读取它。但现在的设计思路是把配置文件分隔后放置在 /etc/apt/apt.conf.d 目录下,这样更容易管理。

常用子命令:

update
update 命令用于从配置的源下载包信息。update 命令应该总是在安装或升级包之前执行。

upgrade
upgrade 命令用于从配置的源安装当前系统中的所有包的可用升级。如果需要满足依赖关系,就安装新的包,但是不会删除现有的包。如果包的升级需要删除已安装的包,则不执行此包的升级。

full-upgrade
full-upgrade 命令执行升级功能,如果需要将系统升级到新的版本,则会删除当前已安装的包。

install,remove,purge
install 命令用来安装一个或多个指定的包。remove 命令用来删除包,但是会保留包的配置文件。purge 命令会在删除包的同时删除其配置文件。

autoremove
autoremove 命令用于删除自动安装的包,这些包是为了满足其他包的依赖关系而自动安装的,随着依赖关系的更改或需要它们的包已被删除,这些包现在不再需要了。

search
search 命令用于在可用包列表中搜索给定的项并显示匹配到的内容。例如,如果您正在寻找具有特定功能的包,这将非常有用。

show
show 命令显示关于给定包的信息,包括它的依赖关系、安装和下载大小、包的来源、包内容的描述等等。比如,在删除一个包或搜索要安装的新包之前查看这些信息是很有帮助的。

list
list 命令可以显示满足特定条件的包列表,默认列出所有的包。可以通过 --installed 选项列出已安装的包,–upgrade 选项列出可以升级的包。

edit-sources
edit-sources 命令用来编辑 /etc/apt/source.list 文件:
$ sudo apt edit-sources

常见用法

更新包索引文件

$ sudo apt update

安装包

$ sudo apt install nginx

安装指定版本的包

$ sudo apt install vim=2:8.0.1453-1ubuntu1

安装本地的 deb 包文件

$ sudo apt install name.deb

这种方法会自动下载并安装依赖的包。

安装系统中有更新的包
upgrade 命令会升级已安装的包,同但不移除任何包。它的目标是确保可能的侵入式升级最小化:

$ sudo apt update
$ sudo apt upgrade

删除包。通过下面两个命令可以删除使用 apt install 安装的包:

$ sudo apt remove nmap
$ sudo apt purge nmap

其中 remove 命令会保留配置文件,而 purge 命令会把配置文件一起删除。

查看包的信息

$ apt show vim
Package: vim
Version: 2:8.0.1453-1ubuntu1.1
Priority: optional
Section: editors
Origin: Ubuntu
Maintainer: Ubuntu Developers ubuntu-devel-discuss@lists.ubuntu.com
Original-Maintainer: Debian Vim Maintainers pkg-vim-maintainers@lists.alioth.debian.org
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 2,852 kB
Provides: editor
Depends: vim-common (= 2:8.0.1453-1ubuntu1.1), vim-runtime (= 2:8.0.1453-1ubuntu1.1), libacl1 (>= 2.2.51-8), libc6 (>= 2.15), libgpm2 (>= 1.20.7), libPython3.6 (>= 3.6.5), libselinux1 (>= 1.32), libtinfo5 (>= 6)
Suggests: ctags, vim-doc, vim-scripts
Homepage: https://vim.sourceforge.io/
Task: cloud-image, server
Supported: 5y
Download-Size: 1,152 kB
APT-Manual-Installed: yes
APT-Sources: http://cn.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
Description: Vi IMproved - enhanced vi editor
Vim is an almost compatible version of the UNIX editor Vi.

输出指定条件的包列表
可以指定某个包的名称,否则会输出大量的信息 :

$ apt list vim

在这里插入图片描述

$ apt list docker

在这里插入图片描述
还可以使用通配符:
在这里插入图片描述可以通过 --installed 选项列出所有已安装的包,而 --upgradable 选项则列出所有可以升级的包:
在这里插入图片描述
搜索包
search 命令用于在可用包列表中搜索给定的项并显示匹配到的内容。比如下面的命令,我们搜索 docker,与之相关的 cadvisor 也被搜索出来了:

$ apt search docker

在这里插入图片描述

apt 与 apt-get 的区别

简单来说 apt 命令就是 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。下面是几个常见命令的对照关系:
list:与 dpkg --list 相似
search:与 apt-cache search 相似
show:与 apt-cache show 相似
update:与 apt-get update 相同
install/remove:与 apt-get install/remove 相似,但是多了进度条提示
upgrade:与 apt-get upgrade --with-new-pkgs 相同
full-upgrade:与 apt-get dist-upgrade 相似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值