7.1&8.1 软件包安装

一、 两大流行软件包管理工具

https://www.jianshu.com/p/9188afa43cfd

RPM 和 DPKG

distribution代表 管理机制 使用指令 在线升级指令
Red Hat/CentOS RPM rpm,rpmbuild yum
Debian/Ubuntu DPKG dpkg apt-get

二、RPM 和 SRPM

RPM 全名是 RedHat Package Manager

命名规则

httpd-2.4.6-67.el7.centos.x86_64.rpm
 |     |    |  |     |      |    |
 |     |    |  |     |      |    |___.rpm-------软件包后缀名,一般为 *.rpm 或 *.src.rpm
 |     |    |  |     |      |________.x86_64----适用硬件平台,一般为 x86_64、i386 等
 |     |    |  |     |_______________.centos----适用操作系统,noarch为通用版本
 |     |    |  |_____________________.el7-------发行商版本号,el5为CentOS5与HREL5以下使用
 |     |    |________________________.67--------编译版本号,表示第几次编译
 |     |_____________________________.2.4.6-----软件版本号,分别为:主版本号.次版本号.修正号
 |___________________________________.httpd-----软件包名称

平台 noarch

就是没有任何硬件等级上的限制。一般来说,这种类型的 RPM 档案,里面应该没有 binary program 存在, 较常出现的就是属亍 shell script 方面的软件。

MD5校验

[root@kvm-docker ~]# md5sum anaconda-ks.cfg
bb6e974d74a51b24d0576edca461a03b  anaconda-ks.cfg

SRPM

是 Source RPM 的意思,也就是这个 RPM 档案里面含有原始码,扩展名为***.src.rpm

为何说 CentOS 是『社群维护的企业版』呢? Red Hat 公司的 RHEL 发布出后,连带会将 SRPM 发布出来。

社群的朋友就将这些 SRPM 收集起来幵重新编译成为所需要的软件,再重复释出成为 CentOS,所以才能号称与 Red Hat 的 RHEL 企业版同步啊!真要感谢 SRPM !如果想要理解 CentOS 是如何编译一支程序的, 也能够透过学习 SRPM 内含的编译参数,来学习的啊!

rpm包的安装:

rpm 包安装工具,无法解决软件包的依赖性

rpm   -ivh   软件包名

rpm包的管理

rpm -qa | grep 软件包名 //查询系统已安装的软件   常用
rpm -qi 查询已安装软件包的信息
rpm -ql 软件包名  //  列出所有的已安装文件       常用
rpm -qc 软件包名  // 列出配置文档     常用
rpm -V 校验已安装到系统中的文件的改动情况

-V 后的值:

  • 5 md5校验值
  • S 文件大小
  • L 链接文件
  • T 文件的创建时间
  • D 设备文件
  • U 文件的所属主
  • G 文件的所属组
  • M 文件的权限

经典实例

rpm2cpio 命令可以从一个 rpm 包中提前出文件。

  1. rpm -ql 软件名 | grep example //查询软件包里的文件

  2. 当不小心删除了系统里的一个重要的配置文档,该怎么找回来

首先, 查询这个文件是哪个软件包安装的
rpm -qf 绝对路径的完整文件名
之后,将需要的文件提取到当前的工作目录
rpm2cpio tree-1.6.0-10.el7.x86_64.rpm | cpio -idv ./usr/bin/tree

YUM

YUM 是Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。自己本身也可以做yum服务器,本身可以根据光盘镜像做yum服务器。

配置文件

通过配置文件的设置,可以把从远程仓库安装的软件保存到本地。

配置文件路径: /etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
...略...

cachedir 设置缓存软件到本地的路径
keepcache 设置是否保存缓存的软件包,0 不保存, 1 保存
假如想把已安装好的软件包保存到本地,需要设置 keepcache=1

PID 文件

/var/run/yum.pid

这个文件在每次使用 yum 命令时被创建,正常安装软件结束后被删除。

有时候非正常退出 yum install 命令时,这个文件会保留,并且里面写入了本次 yum install 命令的进程号。

因为 YUM 是单进程的,就是每次只能运行一个 yum install 命令, 所以假如上次的命令没有正常结束,本次的命令就无法执行,此时就会报错,解决方法就是删除 /var/run/yum.pid 文件后,重新执行 yum install 命令即可。

YUM 源配置文件

/etc/yum.repos.d

ls /etc/yum.repos.d/

CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo      docker-ce.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo

在这个目录下存放了可以使用的软件包仓库的地址等信息,都是以 .repo 结尾的文件。

文件内容:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

  • [base] 代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称
  • name 为库的名称,自定义但不需要太长
  • mirrorlist=:列出这个软件库可以使用的软件仓库的URL列表,如果不想使用,可以注解到这行;
  • baseurl=:这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序自行去查找仓库URL, baseurl 则是指定固定的一个软件库URL!
  • baseurl 支持的传输协议,可以为
    • file://
    • ftp://
    • http://
    • https://
  • enabled 为是否启用库 1 代表启用;0 代表关闭
  • gpgcheck 为检查软件包的签名,1 为检查;0 为不检查
  • gpgkey 数字签名的公钥位置

基本用法

# 安装软件
[root@localhost ~]# yum -y install httpd      # -y表示后面的交互式询问默认选为yes
# 更新所有软件(包括内核)
[root@localhost ~]# yum update
# 升级指定软件
[root@localhost ~]# yum update httpd
# 列出所有可更新的软件
[root@localhost ~]# yum check-update
# 列出所有可安装的软件清单
[root@localhost ~]# yum list
# 查找软件包
[root@localhost ~]# yum search httpd
# 删除软件包
[root@localhost ~]# yum remove httpd
# 清理yum的缓存
[root@localhost ~]# yum clean all
# 生成yum的缓存
[root@localhost ~]# yum makecache

// 查询 pstree 文件由那个软件包安装
yum provides    pstree

软件包组

yum [群组功能] [软件群组]
选项与参数:
   grouplist   :列出所有可使用的“软件群组组”,例如 Development Tools 之类的;
   groupinfo   :后面接 group_name,则可了解该 group 内含的所有软件名;
   groupinstall:这个好用!可以安装一整组的软件群组,相当的不错用!
   groupremove :移除某个软件群组;

自建 YUM 源(仓库)

基于光盘镜像的 YUM 源

节省硬盘空间,但是不可扩展

CentOS_BuildTag                 :制作标签
EFI                             :EFI启动方式文件
EULA                            :最终用户许可协议
GPL                             :GPL授权协议
images                          :网络PXE启动文件
isolinux                        :挽救模式文件
LiveOS                          :微型系统镜像
Packages                        :自带RPM包    # 重点
repodata                        :YUM源数据库  # 重点
RPM-GPG-KEY-CentOS-7            :公钥信息文件
RPM-GPG-KEY-CentOS-Testing-7    :公钥信息文件
TRANS.TBL                       :光盘目录

在光盘镜像中还存放着一个repodata目录,这个目录下存放的yum源的数据库文件,也可以理解为这里记录了软件包的互相依赖关系。只要把光盘镜像挂载到服务器上,然后配好yum源为挂载的镜像,当使用yum安装软件的时候yum就会到这个目录下面去查询数据库,然后再到Packages目录下去拿rpm包进行安装,所以简单理解可以说repodata是记录Packages目录下所有 rpm 包的数据库。

1. 先在/目录下创建一个iso的空目录(不要在空目录内存放东西!目录名称可自定义)

1.1 [root@localhost ~]# mkdir /iso

2. 将光盘镜像挂载到刚刚创建的/iso目录

  1. [root@localhost ~]# mount /dev/cdrom /iso/
  2. mount: /dev/sr0 写保护,将以只读方式挂载

3. 将原有的yum源文件移走备份

  1. [root@shark ~]# mkdir /etc/yum.repos.d/back
  2. [root@shark ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/

4. 配置yum源

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Local-ISO.repo

[cdrpm]
name=cdrpm
baseurl=file:///iso
enabled=1
gpgcheck=0

5. 清理缓存并缓存新的数据

[root@localhost ~]# yum clean all && yum makecache


基于本地磁盘配置yum源

可扩展性强,就是可以向本地的仓库添加其他的 rpm 软件包
会占用本地的磁盘空间,只可以对本机提供 YUM 服务。

1. 先安装 createrepo 工具

[root@shark ~]# yum -y install createrepo

2. 先把光盘镜像里的Packages目录拷贝到本地磁盘(目录名称自取,后面保持一致)

  1. [root@localhost ~]# mkdir /localYum
  2. [root@localhost ~]# cp -a /iso/Packages/ /localYum/

3. 生成元数据

createrepo  /localYum/Packages

-o 把生成的源数据文件,存放到指定的目录下

查看生成的 repodata 目录

ll /locaYum/Packages/repodata/

4. 配置yum源

vim /etc/yum.repos.d/CentOS-Local.repo

[localrpm]
name=localYum
baseurl=file:///locaYum
enabled=1
gpgcheck=0

5. 清理缓存并缓存新的数据

  1. [root@localhost ~]# yum clean all && yum makecache

基于 FTP 文件传输协议的 YUM 源

可扩展性强,可以向互联网上的任意主机提供 YUM 服务,前提是 互联网上的主机可以访问到 FTP Server
会占用 FTP Server 的磁盘空间

  1. 先安装 FTP Server 软件

可以是任意能提供 FTP 服务的软件,这里使用的是 VSFTPD

yum  install  vsftpd   -y

  1. 保证下面的选项在配置文件中是打开的,一般是默认值

配置文件: /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

  1. 启动服务,并检查监听端口
systemctl start vsftpd
[root@shark ftp]# ss -ntal |grep 21
LISTEN     0      1024   127.0.0.1:9121                     *:*
LISTEN     0      32          :::21                      :::*
  1. 拷贝数据包到 FTP Server 的根目录下的指定文件夹下

这里为了演示方便,可以直接拷贝 ISO 光盘镜像中的数据包目录到 /var/ftp/ftpYum/ 目录下

mkdir   /var/ftp/ftpYum
mount   /dev/cdrom   /media
cp   -a   /media/Packages/    /var/ftp/ftpYum/
  1. 创建源数据
#在Packages目录下创建
createrepo /var/ftp/ftpYum/Packages    
vim /etc/yum.repo.d/ftp.repo
image.png

此时/etc/yum.repo.d/文件夹下没有其他的yum源

yum clean all && yum makecache



源码安装

获得源码包途径

官方网站,可以获得最新的软件包。
Nginx官网:www.nginx.org

安装源码包 准备工作

1. 准备编译环境,如编译器

gcc
gcc-c++
make

一般我们会安装一个开发工具包。这个工具包可以使用如下命令安装

yum -y groupinstall "Development Tools"

2. 准备软件自身所依赖的软件包

软件自身依赖的软件包信息,这个软件的官方网站都会提示。
比如 Nginx 需要 pcre 等,用于支持正则表达式,地址重写rewrite
zlib-devel 用于压缩。
以下命令可以为编译安装配好环境

yum -y install pcre pcre-devel zlib-devel openssl-devel
yum -y install gcc gcc-c++ make

3. 进行配置

编译时配置参数的意义
Nginx官方链接www.nginx.org

./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre

源码安装常见错误:

./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=<path> option.

解决方案: yum -y install zlib-devel

./configure: error: SSL modules require the OpenSSL library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-openssl=<path> option.

解决方案: yum -y install openssl-devel

错误 3
checking for C compiler ... not found ./configure: error: C compiler cc is not found

解决方案: yum -y install gcc gcc-c++

错误4
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option.

解决方案:yum -y install pcre-devel

开始编译

编译需要用的 make,确保已经安装 make
yum install make

取到源码解压的目录下执行
make
或者
make   -j   2
-j 后面跟的是计算机的 cpu核心数

安装

还是在源码解压后的目录下执行

make   install
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容