每天一点Linux-24软件包管理

  1. 软件包管理
    1. YUM使用官方源
      1. 使用自建源
      2. Base源 [centos7光盘文件]
      3. 第三方软件源 [yum缓存]
      4. YUM缓存:
      5. 本地源:例如使用安装光盘

软件包管理

安装/查询/卸载

一、软件的类型

  • A. 源码包 需要编译 nginx-1.8.1.tar.gz
  • B. 二进制包 已编译 mysql-community-common-5.7.12-1.el7.x86_64.rpm

常见二进制包

系统平台 包类型 工具(自动解决依赖关系)
RedHat/Centos RPM(RedHat Packet Manage) rpm,rpmbuild
Ubuntu/Debian DPKG dpkg

注意: 不管是源码包,还是二进制包,安装时都可能会有依赖关系!使用RPM安装首先需要手动安装依赖文件

二、RPM包管理
主要获得RPM包途径:

  1. RedHat光盘或官方网站 ftp://ftp.redhat.com
  2. rpmfind.net
  3. 相应软件官方网站如 http://www.mysql.com

认识RPM包:整体为套件名,一般第一个数字前的为包名
ntfs-3g-2011.4.12-5.el5.x86_64.rpm 套件名
ntfs-3g-2011.4.12-5.el6.i686.rpm 套件名
ntfs-3g-2011.4.12-5.el6.x86_64.rpm 套件名
yum-rhn-plugin-0.9.1-40.el6.noarch.rpm 套件名
yum-utils-1.1.30-14.el6.noarch.rpm 套件名
mysql-community-common-5.7.12-1.el7.i686.rpm
mysql-community-common-5.7.12-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.12-1.el6.x86_64.rpm
php-5.6.20-1.fc23.x86_64.rpm
php-5.6.20-1.fc23.ppc64p7.rpm IBM 小型机CPU Power

软件包名 版本号(Version) 发布版本(Release) 系统平台
ntfs-3g 2011.4.12 5.el6 i386(32位)
ntfs-3g 2011.4.12 5.el6 x86_64(64位)
yum-utils 1.1.30 14.el6 noarch(不区分)
php 5.6.20 1.fc23 x86_64
php 5.6.20 1.fc23 ppc64p7

[yang@ecs-ea9d ~]$ uname -m
x86_64

[yang@ecs-ea9d ~]$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

YUM使用官方源

http://mirrors.aliyun.com/

[yang@ecs-ea9d ~]$ yum repolist //列出当前使用的那些源
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors

base: mirrors.aliyun.com

extras: mirrors.aliyun.com

updates: mirrors.aliyun.com

repo id repo name status
!base/7/x86_64 CentOS-7 - Base 10,019
!extras/7/x86_64 CentOS-7 - Extras 435
!updates/7/x86_64 CentOS-7 - Updates 2,500
repolist: 12,954

Base/Extras/Updates: 默认(国外源) //三个基本源,一般用来升级系统
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/{*.repo,backup}
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo (aliyun)
yum makecache //重建缓冲

EPEL: //给企业版的一个扩展包
yum -y install epel-release (国外源) //安装包,官方,一般找不到的包这可能会有
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo (aliyun)

Nginx:
[yang@ecs-ea9d ~]$# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

使用自建源

Base源 [centos7光盘文件]

第三方软件源 [yum缓存]

建议:
刚安装好系统 Base/Extras/Updates: yum -y update
zabbix,nginx: yum -y install zabbix –downloadonly

综合案例:建立YUM服务器

  1. 提供基础软件包Base [光盘]
  2. 提供update软件包 [yum缓存]
  3. 提供其它软件包如nginx, zabbix, docker, hadoop, openstack [yum缓存]

配置防火墙
[root@yangs ~]# firewall-cmd –permanent –add-service=ftp
[root@yangs ~]# firewall-cmd –reload

关闭SELinux
[root@yangs ~]# setenforce 0
[root@yangs ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

FTP
[root@yangs ~]# yum -y install vsftpd
[root@yangs ~]# systemctl start vsftpd
[root@yangs ~]# systemctl enable vsftpd

实现目标1:提供基础软件Base
挂载centos镜像
[root@yangs ~]# mkdir /var/ftp/{centos6u6,centos7u2}
[root@yangs ~]# mount -o loop /home/centos7u2.iso /var/ftp/centos7u2
[root@yangs ~]# echo “mount -o loop /home/centos7u2.iso /var/ftp/centos7u2” >> /etc/rc.local
[root@yangs ~]# chmod +x /etc/rc.d/rc.local

实现目标2: 提供其它软件包如nginx, zabbix
复制已缓存的Nginx 及依赖包 到自定义YUM仓库目录中:
[root@ecs-ea9d ~]# mkdir /var/ftp/{nginx,zabbix}

YUM缓存:

  1. 配置nginx及zabbix源
    [root@ecs-ea9d ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
  2. 启动yum缓存安装nginx
    [root@yangs ~]# vim /etc/yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=1
    debuglevel=2

[root@yangs ~]# yum clean all
[root@yangs ~]# yum -y install nginx
[root@yangs ~]# find /var/cache/yum/x86_64/7/ -iname “*.rpm” -exec cp -rf {} /var/ftp/nginx

  1. downloadonly
    [root@aliyun ~]# yum -y install nginx –downloadonly
  2. 创建reopdata:
    [root@yangs ~]# yum -y install createrepo
    [root@yangs ~]# createrepo /var/ftp/nginx //如果加入新软件包,重新创建
    [root@ecs-ea9d ~]# ls /var/ftp/nginx/
    nginx-1.8.1-1.el6.ngx.x86_64.rpm repodata

客户端使用YUM源:
[root@client ~]# vim /etc/yum.repos.d/centos7.repo //指向基础源
[centos7]
name=centos7
baseurl=ftp://x.x.x.x/centos7u2
gpgcheck=0

[root@client ~]# vim /etc/yum.repos.d/nginx.repo //指向nginx源
[nginx]
name=nginx
baseurl=ftp://x.x.x.x/nginx
gpgcheck=0

[root@client ~]# yum -y install nginx

1000台client使用自定义源:

  1. Shell script
  2. Saltstack, Asible, Puppet

YUM使用签名检查机制
rpm软件提供组织例如redhat在构建rpm包时,使用其private key对rpm进行签名
client在使用其rpm时,为了验证其合法性,可以使用redhat提供的public key进行签名检查

方法一: 事先导入公钥
[root@ecs-ea9d ~]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 //redhat
[root@ecs-ea9d ~]# vim /etc/yum.repos.d/CentOS-Base.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

方法二: 指定公钥的位置
[root@ecs-ea9d ~]# vim /etc/yum.repos.d/CentOS-Base.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

额外选项:
–nogpgcheck //不检查软件包的签名

本地源:例如使用安装光盘

挂载安装光盘(临时):
[root@ecs-ea9d ~]# mount /dev/cdrom /media
[root@ecs-ea9d ~]# mount -o loop centos7u2.iso /media
[root@ecs-ea9d ~]#vim /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=file:///media

gpgcheck=0


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com

文章标题:每天一点Linux-24软件包管理

本文作者:DROBP

发布时间:2019-09-02, 09:39:12

最后更新:2019-09-02, 09:40:11

原始链接:https://DROBP.github.io/2019/09/02/每天一点Linux-24软件包管理/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏