云计算实战系列十一(软件包管理)

软件包管理

知识点:

  • Linux 软件包管理机制
  • Yum 使用官方源
  • Yum 管理软件包
  • Yum 缓存机制【扩展】
  • Rpm 工具管理 RPM 包
  • 源码包应用场景【定制】
  • 源码包管理软件包 nginx
  • 源码包安装软件包问题解析· 官网下载源码包(作业)

一、Linux软件包管理机制

  • 管理操作
  • 安装
  • 查询
  • 卸载
  • 软件包类型
  • 源码包,需编译安装 例:xxx.tar.gz
  • 二进制包,已编译 xxx.x86_64.rpm

区分方式,二进制包名字一般会很长,都带有版本号、适应平台、适应的硬件类型等,源码包一般只有版本号和压缩格式后缀。

shell 常见二进制包 系统平台 包类型 工具 在线安装(自动解决依赖关系) RedHat/Centos RPM rpm,rpmbuild yum Ubuntu/Debian DPKG dpkg apt 注意: 不管是源码包,还是二进制包,安装时都可能会有依赖关系!

  • rpm包管理

主要获取rpm包的图机构

  • RedHat光盘或官方网站 ftp://ftp.redhat.com
  • http://rpmfind.net
  • 相应软件官方网站,例如 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
软件包名            版本号                     发布版本                    系统平台
ntfs-3g         2011.4.12                   5.el5                       x86_64.rpm
ntfs-3g                 2011.4.12                   5.el6                       i686.rpm
yum-utils           1.1.30                      14.el6                  noarch
php                         5.6.20                      1.fc23                  x86_64

查看当前操作系统所属系统平台
[root@newrain ~]# uname -m
x86_64
[root@newrain ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 
[root@newrain ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

二、yum源管理

阿里云yum源:http://mirrors.aliyun.com/
网易yum源  :http://mirrors.163.com
基础源
Base/Extras/Updates: 默认(官方源,国外的)
[root@newrain ~]# ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo        
CentOS-CR.repo         CentOS-Media.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  

[root@newrain ~]# yum repolist
repo id                             repo name                                           status
base/7/x86_64                   CentOS-7 - Base                             9363
extras/7/x86_64         CentOS-7 - Extras                           449
updates/7/x86_64            CentOS-7 - Updates                      2146
repolist: 11,958

切换为aliyun、163的yum源
[root@newrain ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@newrain ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2523  100  2523    0     0   183k      0 --:--:-- --:--:-- --:--:--  189k
#[root@newrain ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo \
#http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@newrain ~]# yum clean all         # 清楚就得yum缓存
[root@newrain ~]# yum makecache     # 创建元数据缓存

EPEL:
[root@newrain ~]# yum install -y epel-release  安装官方源
[root@newrain ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
[root@newrain ~]# wget -O /etc/yum.repos.d/epel.repo \ http://mirrors.aliyun.com/repo/epel-7.repo  安装aliyun的epel源

安装软件官方提供的源:
[root@newrain yum.repos.d]# vim nginx.repo
[nginx]                                         用来区分源,必须独一无二
name=nginx repo                         描述
baseurl=http://nginx.org/packages/centos/7/$basearch/   源地址
gpgcheck=0                                  秘钥检查
enabled=1                                       是否启用
注意: 
gpgcheck是GPG验证是否开启的选项,1是开启,0是不开启,一般情况可以关掉; 
enabled=1 启用这个yum源仓库。

MySQL:
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
[root@newrain ~]#yum repolist all | grep mysql 查看所有关于mysql的库
[root@newrain ~]#yum -config-manager --enable mysql-community 将禁用的yum源库启用
[root@newrain ~]# yum -y install mysql-community-server
[root@newrain ~]# systemctl start mysqld
[root@newrain ~]# systemctl enable mysqld
Zabbix:
[root@newrain ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@newrain ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

三、yum管理rpm包

注意:自动解决包的依赖关系
查看可用仓库
[root@newrain ~]# yum clean all //清空缓存及其它文件
[root@newrain ~]# yum makecache #fast //重建缓存
[root@newrain ~]# yum repolist //查询可用的仓库
安装
[root@newrain ~]# yum -y install httpd vsftpd
[root@newrain ~]# yum -y reinstall httpd
[root@newrain ~]# yum -y update httpd
[root@newrain ~]# yum -y install php
[root@newrain ~]# yum -y update (不要轻易执行,会升级系统内核)
[root@newrain ~]# yum -y install /root/OpenIPMI-2.0.19-11.el7.x86_64.rpm //从本地安装
[root@newrain ~]# yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm //URL
[root@newrain ~]# yum groupinfo mariadb
[root@newrain ~]# yum -y groupinstall mariadb
[root@newrain ~]# yum -y remove httpd  # yum erase
[root@newrain ~]# yum -y groupremove mariadb
查询(从本地 rpm数据库 和 yum源 中查询)
[root@newrain ~]# yum list httpd 列出资源库中所有可以安装或更新的rpm包
[root@newrain ~]# yum list |grep vnc
[root@newrain ~]# yum list installed
[root@newrain ~]# yum info httpd 列出资源库中所有可以安装或更新的rpm包的信息
[root@newrain ~]# yum group list
[root@newrain ~]# yum grouplist 安装了的组和可以安装的组一览显示
[root@newrain ~]# yum groupinfo mariadb
卸载
[root@newrain ~]# yum -y remove mysql-server
[root@newrain ~]# yum -y groupremove mysql-server
history历史
[root@newrain ~]# yum history

扩展查询:
例1: 从包名和包描述中查找带有关键字chinese的包
[root@newrain ~]# yum list |grep chinese //只关注软件包的名
[root@newrain ~]# yum list |grep piny
[root@newrain ~]# yum search chinese //关注软件包的名 或 描述
cjkuni-ukai-fonts.noarch : Chinese Unicode TrueType font in Kai face
cjkuni-uming-fonts.noarch : Chinese Unicode TrueType font in Ming face
[root@newrain ~]# yum search "http server"
[root@newrain ~]# yum search "web server"
例2:查找/etc/vsftpd/vsftpd.conf属由哪个包提供?
[root@newrain ~]# yum provides /etc/vsftpd/vsftpd.conf
Loaded plugins: langpacks
vsftpd-3.0.2-9.el7.x86_64 : Very Secure Ftp Daemon
Repo : classroom_content_rhel7.0_x86_64_dvd_
Matched from:
Filename : /etc/vsftpd/vsftpd.conf
[root@newrain ~]# yum -y install vsftpd-3.0.2-9.el7.x86_64
例3:查找vsftpd.conf属由哪个包提供?
[root@newrain ~]# yum provides *vsftpd/vsftpd.conf
[root@newrain ~]# yum provides */vsftpd.conf
[root@newrain ~]# yum provides */vsftpd.*
例4:查找命令gnuplot属由哪个包提供?
[root@newrain ~]# gnuplot
bash: gnuplot: command not found...
[root@newrain ~]# yum provides gnuplot
Loaded plugins: langpacks
gnuplot-4.6.2-3.el7.x86_64 : A program for plotting mathematical expressions and data
Repo : classroom_content_rhel7.0_x86_64_dvd
例5:查找命令pip属由哪个包提供?
[root@newrain ~]# pip
bash: pip: command not found...
[root@newrain ~]# yum -y install pip
例6:查找命令vim属由哪个包提供?
[root@newrain ~]# yum provides vim

四、RPM工具包管理

rpm安装:
[root@newrain ~]# rpm -ivh 软件包名称
-i install
-vh verbose human 人性化显示
[root@newrain ~]# rpm -ivh lftp-4.0.9-1.el6.x86_64.rpm
查询软件安装路径:
[root@newrain ~]# rpm 查询某一个文件是哪个软件产生的:
[root@newrain ~]# rpm -qf /etc/passwd
setup-2.8.14-20.el6.noarch
[root@newrain ~]# rpm -qf /bin/rpm
rpm-4.8.0-32.el6.x86_64-ql 软件名称
-q query 查询
-l list
[root@newrain ~]# rpm -ql lftp-4.0.9-1.el6.x86_64
查询软件的名称:----------> 查询软件的全称。
[root@newrain ~]# rpm -qa
[root@newrain ~]# rpm -qa | grep lftp
lftp-4.0.9-1.el6.x86_64
-a all
查询软件详细信息:
[root@newrain ~]# rpm -qi 软件名称
[root@newrain ~]# rpm -qi gedit-2.28.4-3.el6.x86_64
-i information
查询某一个文件是哪个软件产生的:
[root@newrain ~]# rpm -qf /etc/passwd
setup-2.8.14-20.el6.noarch
[root@newrain ~]# rpm -qf /bin/rpm
rpm-4.8.0-32.el6.x86_64
-f file
查看配置文件
[root@newrain ~]# rpm -qc
软件卸载
[root@newrain ~]# rpm -e 软件名称
-e erase
--force 在安装的时候用(强制覆盖安装)
--nodeps 在卸载的时候用(卸载的时候不检查依赖关系

五、企业案例实战

  • 如何自己制作yum源
1.创建目录存放rpm包
[root@newrain ~]# mkdir /root/yumdir
2.把想用yum安装的软件拷贝到目录下
[root@newrain ~]# cp /root/yumdir
3.生成软件包文件
[root@newrain ~]#createrepo /root/yumdir  #如果没有此命令,可以使用之前学习的搜一下
4.编写yum源文件
[root@newrain ~]# vim /etc/yum.repos.d/myyum.repo
[myyum]
name=myyum repo
baseurl=file:///root/yumdir/
gpgcheck=0
enabled=1
  • 如何自己制作网络yum源:例如ftp服务器 课后作业
  • 自制mysql的yum源仓库 课后作业

六、rpm包签名检查机制

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

方法一: 事先导入公钥
[root@newrain ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@newrain ~]# 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@newrain ~]# 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

七、源码包管理

1. 获得源码包途径
官方网站,可以获得最新的软件包
Apache: www.apache.org
Nginx: www.nginx.org
Tengine: tengine.taobao.org
2.编译安装过程:
1.下载软件,安装编译所需环境
#wget http://archive.apache.org/dist/apr/apr-1.6.5.tar.gz
#wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
#wget http://archive.apache.org/dist/httpd/httpd-2.4.38.tar.gz

#下载依赖
#yum -y install ncurses ncurses-devel expat-devel openssl-devel bison gcc gcc-c++ make
2.解压
#tar xf /root/httpd-2.4.38.tar.bz2
#tar xf /root/apr-1.6.5.tar.gz
#tar xf /root/apr-util-1.6.1.tar.gz
3.cd 到解压目录,并编译安装
# 编译安装apr
cd /root/apr-1.6.5 
./configure --prefix=/usr/local/apr
make && make install
# 编译安装apr-util
cd /root/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
# 编译安装httpd
cd httpd-2.4.37
./configure \
--prefix=/usr/local/apache/ \
--with-apr=/usr/local/apr/ \
--with-apr-util=/usr/local/apr-util/ \
--enable-so \
--enable-ssl\
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--enable-static-support
make && make install
#configurl 检测依赖环境
#make 编译
#make install 安装

企业案例:
编译安装mysql:
# 下载源码包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
1. 编译安装
# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
cmake:
# yum -y install cmake
boost:
# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
mysql:
[root@mysql1 mysql-5.7.19]# pwd
/root/mysql-5.7.19
[root@mysql1 mysql-5.7.19]# tar xf /root/boost_1_59_0.tar.gz
3.清空系统残留并创建新的账户
userdel -r mysql
yum -y remove mariadb mariadb-lib mariadb-server mariadb-devel
rm -rf /etc/my*
rm -rf /var/lib/mysql
useradd mysql -M -s /sbin/nologin
[[email protected] ~]# cmake . \ 指定当前目录
-DWITH_BOOST=boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装目录
-DSYSCONFDIR=/etc \ #配置文件的位置,默认就是etc
-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据目录 错误日志文件
-DINSTALL_MANDIR=/usr/share/man \ #帮助文档的目录
-DMYSQL_TCP_PORT=3306 \ #默认端口号3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #用来做网络通信,启动的时候才会产生
-DDEFAULT_CHARSET=utf8 \ #默认字符集
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \ #可以上下翻历史命令
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \ #嵌入式服务器
-DENABLED_LOCAL_INFILE=1 \ #支持从本机导入
-DWITH_INNOBASE_STORAGE_ENGINE=1 #默认存储引擎
提示:boost也可以使用如下指令自动下载
-DDOWNLOAD_BOOST=1
# make
# make install
扩展:
2. 初始化
[root@mysql1 local]# cd mysql 把这个删了就相当于卸载
[root@mysql1 mysql]# mkdir mysql-files
[root@mysql1 mysql]# chown -R mysql.mysql .
[root@mysql1 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 初始化,只需要初始化一次
编辑mysql的配置文件
[root@mysql1 mysql]# vim /etc/my.cnf
[mysqld]  
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
validate_password=off 添加后可设置弱密码强度
启动MySQL-使用mysqld_safe
[root@mysql1 mysql]# bin/mysqld_safe --user=mysql &
[root@mysql1 bin]#./bin/mysqladmin -u root -p'原密码' password 123
使用客户端测试
[root@mysql1 bin]#./bin/mysql -u root -p '密码'

八、企业编译安装原文档(了解)

apache :http://note.youdao.com/noteshare?id=b7a5d089db3bf0492783b3eec2fb565d
nginx  :http://note.youdao.com/noteshare?id=e4ea631878f159aa8306db07d9018484
zabbix :http://note.youdao.com/noteshare?id=a509a3012e2dd30d97845eeb86e306e3

你可能感兴趣的:(云计算群Q:784324747)