Linux基础命令介绍十一:软件包管理

linux中软件包的管理随着系统发行版本的不同而不同,RPM和DPKG为最常见的两类软件包管理工具,分别应用于基于rpm软件包的linux发行版和基于deb软件包的linux发行版。本文只描述RPM的使用方法,另一种命令不同,但用法类似,就不做介绍了。

1、rpm RPM包管理器

选项-q表示查询系统安装的软件包


  1. [root@centos7 ~]# rpm -q sudo 
  2. sudo-1.8.6p7-16.el7.x86_64 
  3. [root@centos7 ~]# rpm -q nginx 
  4. 未安装软件包 nginx  
  5. [root@centos7 ~]#  

选项-a表示查询所有安装的rpm包


  1. [root@centos7 ~]# rpm -qa|grep vim 
  2. vim-filesystem-7.4.160-1.el7.x86_64 
  3. vim-common-7.4.160-1.el7.x86_64 
  4. vim-enhanced-7.4.160-1.el7.x86_64 
  5. vim-minimal-7.4.160-1.el7.x86_64 
  6. [root@centos7 ~]#  

选项-f file表示查询文件所属软件包


  1. [root@centos7 ~]# rpm -qf /usr/bin/ls 
  2. coreutils-8.22-15.el7.x86_64 
  3. [root@centos7 ~]#  

选项-c表示查询软件包的配置文件


  1. [root@centos7 ~]# rpm -qc sudo 
  2. /etc/pam.d/sudo 
  3. /etc/pam.d/sudo-i 
  4. /etc/sudo-ldap.conf 
  5. /etc/sudo.conf 
  6. /etc/sudoers 
  7. [root@centos7 ~]#  

选项-e表示卸载软件包


  1. [root@centos7 ~]# rpm -e sudo 
  2. 警告:/etc/sudoers 已另存为 /etc/sudoers.rpmsave 
  3. [root@centos7 ~]# rpm -q sudo 
  4. 未安装软件包 sudo  
  5. [root@centos7 ~]#   

选项-i表示安装 -v表示显示详细信息 -h表示显示安装进度


  1. #下载rpm包 
  2. [root@centos7 tmp]# wget ftp.scientificlinux.org/linux/scientific/7rolling/x86_64/os/Packages/sudo-1.8.6p7-16.el7.x86_64.rpm 
  3. #安装 
  4. [root@centos7 tmp]# rpm -ivh sudo-1.8.6p7-16.el7.x86_64.rpm  
  5. 警告:sudo-1.8.6p7-16.el7.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID 192a7d7d: NOKEY 
  6. 准备中...                          ################################# [100%] 
  7. 正在升级/安装... 
  8.    1:sudo-1.8.6p7-16.el7              ################################# [100%]  

有很多软件并不是只有一个rpm包,它们之间有各种各样的依赖关系,当安装(或卸载)时,需要将所有依赖的包都安装(或卸载)之后才能安装(或卸载)成功


  1. [root@centos7 tmp]# rpm -e vim-common 
  2. 错误:依赖检测失败: 
  3.     vim-common = 2:7.4.160-1.el7 被 (已安裝) vim-enhanced-2:7.4.160-1.el7.x86_64 需要  

选项--nodeps表示忽略依赖关系


  1. [root@centos7 tmp]# rpm -q vim-common 
  2. vim-common-7.4.160-1.el7.x86_64 
  3. [root@centos7 tmp]# rpm -e --nodeps vim-common 
  4. 警告:/etc/vimrc 已另存为 /etc/vimrc.rpmsave 
  5. [root@centos7 tmp]# rpm -q vim-common 
  6. 未安装软件包 vim-common  

选项-U表示对软件包升级


  1. [root@centos7 tmp]# rpm -q wget 
  2. wget-1.14-10.el7_0.1.x86_64 
  3. [root@centos7 tmp]# rpm -Uvh wget-1.14-13.el7.x86_64.rpm  
  4. 准备中...                          ################################# [100%] 
  5. 正在升级/安装... 
  6.    1:wget-1.14-13.el7                 ################################# [ 50%] 
  7. 正在清理/删除... 
  8.    2:wget-1.14-10.el7_0.1             ################################# [100%] 
  9. [root@centos7 tmp]# rpm -q wget 
  10. wget-1.14-13.el7.x86_64 

2、yum 下载更新器


  1. yum [options] [command] [package ...] 

yum是一个基于rpm的交互式软件包管理器。yum在安装软件时并不需要像rpm那样手动查找安装,它在工作时会搜索源中的rpm包,并自动解决依赖关系,自动下载并安装。yum默认源配置文件位于目录/etc/yum.repos.d内。

命令install表示安装


  1. [root@centos7 ~]# yum install vim-common 
  2. 已加载插件:fastestmirror 
  3. Loading mirror speeds from cached hostfile 
  4.  * base: mirrors.yun-idc.com 
  5.  * extras: mirrors.yun-idc.com 
  6.  * updates: mirrors.yun-idc.com 
  7. 正在解决依赖关系 
  8. --> 正在检查事务 
  9. ---> 软件包 vim-common.x86_64.2.7.4.160-1.el7 将被 安装 
  10. --> 解决依赖关系完成 
  11.  
  12. 依赖关系解决 
  13. .... #省略部分输出 
  14. 安装  1 软件包 
  15.  
  16. 总下载量:5.9 M 
  17. 安装大小:21 M 
  18. Is this ok [y/d/N]:y  #需要在这里输入确认是否安装 
  19. Downloading packages: 
  20. vim-common-7.4.160-1.el7.x86_64.rpm                         | 5.9 MB  00:00:00      
  21. Running transaction check 
  22. Running transaction test 
  23. Transaction test succeeded 
  24. Running transaction 
  25. 警告:RPM 数据库已被非 yum 程序修改。 
  26. ** 发现 1 个已存在的 RPM 数据库问题, 'yum check' 输出如下: 
  27. 2:vim-enhanced-7.4.160-1.el7.x86_64 有缺少的需求 vim-common = ('2', '7.4.160', '1.el7') 
  28.   正在安装    : 2:vim-common-7.4.160-1.el7.x86_64                         1/1  
  29.   验证中      : 2:vim-common-7.4.160-1.el7.x86_64                         1/1  
  30.  
  31. 已安装: 
  32.   vim-common.x86_64 2:7.4.160-1.el7                                                                                                    
  33.  
  34. 完毕!  

命令check-update表示检查更新

命令update表示升级

命令search表示搜索软件包

命令list表示列出可用软件包

命令remove表示卸载

命令clean表示清除yum缓存目录内容

选项-y表示在所有需要交互式确认的地方默认输入yes

当yum源中没有所需要安装的包时,会报没有可用软件包的错误。此时可以通过添加新的yum源来解决

如centos7中安装nginx:


  1. #安装repo 
  2. [root@centos7 tmp]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 
  3. 获取http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 
  4. 警告:/var/tmp/rpm-tmp.cUANoe: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY 
  5. 准备中...                          ################################# [100%] 
  6. 正在升级/安装... 
  7.    1:nginx-release-centos-7-0.el7.ngx ################################# [100%]  

此时/etc/yum.repos.d中增加了一个新文件nginx.repo


  1. [root@centos7 tmp]# cat /etc/yum.repos.d/nginx.repo  
  2. # nginx.repo 
  3.  
  4. [nginx] 
  5. name=nginx repos                                      #名称 
  6. baseurl=http://nginx.org/packages/centos/7/$basearch/ #源地址 
  7. gpgcheck=0  #是否检查key,0表示不检查 
  8. enabled=1   #这里等于0表示不启用baseurl,为1表示启用baseurl  

现在就可以通过命令yum install -y nginx安装nginx了

当服务器没有网络可用时,还能够设置本地yum源。此时需要手动配置repo文件

首先将安装光盘或ios文件挂载至系统(关于挂载的更多内容请看这一篇)


  1. [root@centos7 tmp]# mount CentOS-7-x86_64-DVD-1611.iso /media 
  2. mount: /dev/loop2 写保护,将以只读方式挂载 
  3. [root@centos7 tmp]#  
  4. #如果是光盘则如此挂载: 
  5. [root@centos7 tmp]# mount /dev/cdrom /media 
  6. mount: /dev/sr0 写保护,将以只读方式挂载 
  7. [root@centos7 tmp]# 
  8. #卸载用umount或eject 
  9. [root@centos7 tmp]# umount /media 
  10. [root@centos7 tmp]# eject  

编辑yum源配置文件


  1. vim /etc/yum.repos.d/local.repo 
  2.     [local] 
  3.     name=test 
  4.     baseurl=file:///media #这里baseurl写 前缀(file://)+挂载点 
  5.     enabled=1 
  6.     gpgcheck=0  

然后将原有网络源配置文件备份到另一个目录,/etc/yum.repo.d中只保留local.repo文件。安装软件:


  1. yum install bc -y 

3、源码包

前面所说的rpm和deb都是二进制软件包,由于这些软件包都是已经经过编译的,用户不能设置编译选项,也不能对软件做任何更改。相对来说,使用源码包编译安装软件提供了更多的灵活性,在编译时可指定各种选项,对于有能力的用户,还可以修改源代码。下面介绍一下linux中是如何安装源码包的

1)、获取源码包


  1. wget http://mirrors.sohu.com/nginx/nginx-1.9.6.tar.gz 

2)、解压


  1. tar zxf nginx-1.9.6.tar.gz 

3)、配置


  1. [root@idc-v-71252 src]# cd nginx-1.9.6 
  2. [root@idc-v-71252 nginx-1.9.6]# ./configure --prefix=/usr/local/nginx  

这里配置选项--prefix=/usr/local/nginx表示指定nginx的安装路径为/usr/local/nginx。

可以执行./configure --help查看有哪些配置参数,此步骤的执行会检查系统是否符合编译要求。如果报错,很多情况下是因为少了一些编译工具,可以使用yum安装这些工具(当然也可以装源码)。

在本例中报错:./configure: error: the HTTP rewrite module requires the PCRE library.。

说明少了pcre库,查看一下系统:


  1. [root@idc-v-71252 nginx-1.9.6]# rpm -qa pcre 
  2. pcre-8.32-15.el7.x86_64 
  3. [root@idc-v-71252 nginx-1.9.6]#  

系统有pcre安装,但没有devel包,使用yum安装


  1. [root@idc-v-71252 nginx-1.9.6]# yum install pcre-devel -y 

再次执行configure发现报错变了:./configure: error: the HTTP gzip module requires the zlib library.

重复上述操作直到所需软件都安装完毕,之后再次执行./configure --prefix=/usr/local/nginx

4、编译


  1. [root@idc-v-71252 nginx-1.9.6]# make -j8 

使用make进行编译,选项-j表示指定并发执行的数量,这里指定了和系统逻辑CPU数(可以使用命令grep -c "^processor" /proc/cpuinfo查看逻辑CPU数)相同的并发数。

此步骤也可能会出现报错,一般也是因为缺少包,仔细阅读报错信息,一般都不难解决。

5、安装


  1. [root@idc-v-71252 nginx-1.9.6]# make install 

如果没有错误,这个软件包就安装完毕了,可以在/usr/local/nginx中找到安装后的文件。

这里说了源码包的一般安装过程,有些源码包的安装可能会有所不同,一般源码包中都有相应的安装说明文件(README或INSTALL),仔细阅读这些文件或者通过查询软件官网,就能找到它们的安装方法。

作者:vvpale

来源:51CTO

时间: 2025-01-27 05:20:34

Linux基础命令介绍十一:软件包管理的相关文章

Linux基础命令介绍十五:推陈出新

本文介绍ip.ss.journalctl和firewall-cmd,它们旨在代替linux中原有的一些命令或服务. 1.ip ip [OPTIONS] OBJECT COMMAND  ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig.route等,使用权限为超级用户. OPTIONS是修改ip行为或改变其输出的选项. OBJECT是要获取信息的对象.包括: address   表示设备的协议(IPv4或IPv6)地址  link  

linux基础命令介绍五:文本过滤 grep

在linux中经常需要对文本或输出内容进行过滤,最常用的过滤命令是grep grep [OPTIONS] PATTERN [FILE...]  grep按行检索输入的每一行,如果输入行包含模式PATTERN,则输出这一行.这里的PATTERN是正则表达式(参考前一篇,本文将结合grep一同举例). 输出文件/etc/passwd中包含root的行: [root@centos7 temp]# grep root /etc/passwd  root:x:0:0:root:/root:/bin/bas

Linux基础命令介绍四:文本编辑vim

本文介绍vim(版本7.4)的一般用法. vim是功能强大的文本编辑器,是vi的增强版. vim [options] [file ..]  使用vim编辑一个文件的最常用命令就是: vim file  其中file可以是一个新文件,也可以是原有文件.这样的命令执行后将打开编辑器,显示文件file的内容.如图所示: 如果是一个新文件,底部左边会显示"file" [新文件]的字样,右边显示0,0-1表示当前光标所在行数和字符数.如果打开的是一个老文件,底部左边显示"file&qu

Linux基础命令介绍十二:磁盘与文件系统

本篇讲述磁盘管理相关的命令.计算机中需要持久化存储的数据一般是保存在硬盘等辅助存储器中.硬盘一般容量较大,为了便于管理和使用,可以将硬盘分成一到多个逻辑磁盘,称为分区;为使分区中的文件组织成操作系统能够处理的形式,需要对分区进行格式化(创建文件系统);在linux中,对于格式化后的分区,还必须经过挂载(可简单理解为将分区关联至linux目录树中某个已知目录)之后才能使用. 1.df 显示文件系统磁盘空间使用量 [root@centos7 temp]# df -h  文件系统           

Linux基础命令介绍六:网络

本文将讲述网络相关命令,作者假定读者具备TCP/IP协议栈的基础知识.对于相关命令及其输出只介绍它的基本的使用方法和大概的描述,具体协议将不作详细解释. 如今网络无疑是很重要的,linux系统中提供了丰富的网络测试与管理命令.我们来一起看看它们. 1.ping 发送TCMP回显请求报文,并等待返回TCMP回显应答. ping [OPTIONS]... destination  这里的目标destination可以是目的IP地址或者域名/主机名 选项-c指定发送请求报文的次数,当ping没有任何选

Linux基础命令介绍九:进程与内存

计算机存在的目的就是为了运行各种各样的程序,迄今我们介绍的绝大多数命令,都是为了完成某种计算而用编程语言编写的程序,它们以文件的形式保存在操作系统之中(比如/bin下的各种命令);但静态的程序并不能"自发的"产生结果,只有在操作系统中为其指定输入数据并运行起来,才能得到输出结果.而操作系统中程序运行的最主要表现形式便是进程. 静态程序可以长久的存在,动态的进程具有有限的生命周期.每次程序运行的开始(如键入一条命令后按下回车键),操作系统都要为程序的运行准备各种资源,这些资源绝大多数都处

Linux基础命令介绍十三:启动流程

固件(firmware)是指设备最底层的,让设备得以运行的程序代码.简单理解就是:固定在硬件上的软件.计算机中的许多设备都拥有固件(如硬盘.鼠标.光驱.U盘等),在计算机启动过程中,最先读取的就是位于主板上的固件,这个固件当前有两种类型:传统的BIOS和新的通用性更强的UEFI. 在上一篇中,我们提到另一种磁盘分区格式GTP也是UEFI标准的一部分.于是,当前计算机启动中,出现了两种不同的方式:BIOS/MBR和UEFI/GTP. 在linux操作系统的世界中,同样在经历着变革,系统初始化软件s

Linux基础命令介绍七:网络传输与安全

本篇接着介绍网络相关命令 1.wget 文件下载工具 wget [option]... [URL]...  wget是一个非交互的下载器,支持HTTP, HTTPS和FTP协议,也可以使用代理.所谓'非交互'意思是说,可以在一个系统中启动一个wget下载任务,然后退出系统,wget会在完成下载(或出现异常)之后才退出,不需要用户参与. [root@centos7 temp]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomca

Linux基础命令介绍八:文本分析awk

awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具. awk [options] 'pattern {action}' file...  awk的工作过程是这样的:按行读取输入(标准输入或文件),对于符合模式pattern的行,执行action.当pattern省略时表示匹配任何字符串;当action省略时表示执行'{print}';它们不可以同时省略. 每一行输入,对awk来说都是一条记录(record),awk使用$0来引用当前记录: [root@centos7 ~]#