软件包管理
知识点:
- 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
[root@mysql-5.7.17 ~]# 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