第五课、软件包管理
linux下软件包管理大致两种:
- 二进制 ( .rpm)
- 源码包 ( .tar.gz)
源码安装前提板块: gcc gcc-c++
软件包的后缀名: tar.gz (标准压缩包格式)
[root@yzh ~]# rpm -ivh http://www.nginx.org.xx.rpm
yum & rpm —>可以直接网络安装
RPM软件包命名格式:
- name-version.rpm 版本
- name-version-noarch.rapm 匹配任何平台,无限制
- name-version-arch.src.rpm 基于源码的rpm
例如:
epel-release-6.8.noarch.rpm
rpm -q
rpm -qa
rpm -ql
rpm -ql | grep httpd
rpm -q httpd 检查httpd包是否安装;
rpm -ql httpd 查看软件安装的路径;
rpm -qi httpd 查看软件安装的版本信息;
rpm -e httpd 卸载httpd软件;
rpm -e --nodeps httpd 强制卸载httpd;
rpm -qa|grep httpd 检查httpd相关的软件包是否安装。
rpm -ivh httpd-2.4.10-el7.x86_64.rpm 安装httpd软件包;
rpm -Uvh httpd-2.4.10-el7.x86_64.rpm 升级httpd软件;
rpm -ivh --nodeps httpd-2.4.10-el7.x86_64.rpm 不依赖其他软件包;
tar软件包管理
常用的参数 c x v f j
标准压缩包 tar.gz
创建: c
解压: x
指定文件 f
显示过程 v
特殊结尾: bz2
-A, --catenate, --concatenate 将存档与已有的存档合并
-c, --create 建立新的存档
-d, --diff, --compare 比较存档与当前文件的不同之处
--delete 从存档中删除
-r, --append 附加到存档结尾
-t, --list 列出存档中文件的目录
-u, --update 仅将较新的文件附加到存档中
-x, --extract, --get 解压文件
**-j, --bzip2, --bunzip2 有bz2属性的软件包;**
**-z, --gzip, --ungzip 有gz属性的软件包;**
-b, --block-size N 指定块大小为 Nx512 字节(缺省时 N=20);
-B, --read-full-blocks 读取时重组块;
**-C, --directory DIR 指定新的目录;**
--checkpoint 读取存档时显示目录名;
-f, --file [HOSTNAME:]F 指定存档或设备,后接文件名称;
--force-local 强制使用本地存档,即使存在克隆;
-G, --incremental 建立老 GNU 格式的备份;
-g, --listed-incremental 建立新 GNU 格式的备份;
-h, --dereference 不转储动态链接,转储动态链接指向的文件;
-i, --ignore-zeros 忽略存档中的 0 字节块(通常意味着文件结束);
--ignore-failed-read 在不可读文件中作 0 标记后再退出;
-k, --keep-old-files 保存现有文件;从存档中展开时不进行覆盖;
-K, --starting-file F 从存档文件 F 开始;
-l, --one-file-system 在本地文件系统中创建存档;
-L, --tape-length N 在写入 N*1024 个字节后暂停,等待更换磁盘;
-m, --modification-time 当从一个档案中恢复文件时,不使用新的时间标签;
-M, --multi-volume 建立多卷存档,以便在几个磁盘中存放;
-O, --to-stdout 将文件展开到标准输出;
-P, --absolute-paths 不要从文件名中去除 '/';
-v, --verbose 详细显示处理的文件;
--version 显示tar 程序的版本号;
--exclude FILE不把指定文件包含在内;
-X, --exclude-from FILE 从指定文件中读入不想包含的文件的列表。
[root@yzh ~]# tar zcvf backup.tar.gz /root
压缩的格式
tar企业案例演示
tar -cvf thinkmo.tar.gz thinkmo 打包thinkmo文件或者目录,打包后名称thinkmo.tar.gz;
tar -tf thinkmo.tar.gz 查看thinkmo.tar.gz包中内容;
tar -rf thinkmo.tar.gz thinkmo.txt 将thinkmo.txt文件追加到thinkmo.tar.gz中
tar -xvf thinkmo.tar.gz 解压thinkmo.tar.gz程序包;
tar -czvf thinkmo.tar.gz thinkmo 使用gzip格式打包并压缩thinkmo目录;
tar -cjvf thinkmo.tar.bz2 thinkmo 使用bzip2格式打包并压缩thinkmo目录;
tar -czf thinkmo.tar.gz * -X list.txt 使用gzip格式打包并压当前目录所有文件,排除list.txt中记录的文件;
tar -czf thinkmo.tar.gz * --exclude=zabbix-3.2.4.tar.gz --exclude=nginx-1.12.0.tar.gz
使用gzip格式打包并压当前目录所有文件及目录,排除zabbix-3.2.4.tar.gz和nginx-1.12.0.tar.gz软件包。
zip软件包管理
- zip
- unzip 解压
(1) 通过zip工具打包thinkmo文件夹中所有内容:
zip -rv thinkmo.zip /root/thinkmo/
(2) 通过zip工具打包thinkmo文件夹中所有内容,排
除部分文件:
**zip -rv thinkmo.zip * -x linux1.txt
zip -rv thinkmo.zip * -x linux2.txt -x linux3.txt**
(3) 通过zip工具删除thinkmo.zip中linux3.txt文件
zip thinkmo.zip -d linux3.txt
(4) 通过unzip工具解压thinkmo.zip文件夹中所有内容:
unzip thinkmo.zip
unzip thinkmo.zip -d /data/backup/
可以-d指定解压后的目录
ll -h 显示大小为计算单位k m ……
源码包软件安装
源码安装3个步骤:
-
./configure 预编译,主要检测兄台那个环境是否满足。生成 makefile文件
指定路径 --preifx=/usr/local/nginx|apache|mysql
--user=
--group= 其他的就是功能参数
--with-http_ssl_module
- make 编译,基于第一步生成的makefile文件,进行源代码编译
-j(2/4/8/16/32/64) --内核时 - 同时使用多少个内核进程编译,提升速度。(mysql用源码安装,没有20分钟装不完的。所以很重要)
- make install
安装
使用make编译时,LInux操作系统必须有GCC编译器,用于编译源码。
yum安装nginx案例
- yum install -y gcc gcc-c++
- yum install -y wget
- wget -c https://nginx.org/download/nginx-1.23.2.tar.gz
-c 指的是断点续传。
- ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
执行完后发现 缺少PCRE library库文件
缺少 xx 就装 xx-devel
则:
- yum install -y pcre-devel
- ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
发现说缺少zlib library
则
- yum install -y zlib-devel
再次执行预编译
- ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
- echo $? 返回上一次命令执行的结果。正确是0
再进行安装
- **make -j2 && make install -j2 **
用2核进行编译安装
这时候显示安装成功
服务安装成功,但是一个进程需要一个用户才可以。而且刚才预编译时指定了用户和用户组。所以创建用户:
- useradd nginx -s /sbin/nologin
服务安装成功,但是如何启动?
安装路径上寻找
- /usr/local/nginx/sbin/nginx
这样就能启动
-
netstat -lntup
查看端口 -
systemctl stop firewalld
关闭防火墙
访问网站ip即可
yum命令指南
YUM命令工具指南,YUM格式为:
YUM [command] [package] -y|-q 其中的[options]是可选。-y安装或者卸载出现YES时,自动确认yes;-q不显示安装的过程。
**yum install httpd 安装httpd软件包;**
**yum search YUM搜索软件包;**
yum list httpd 显示指定程序包安装情况httpd;
**yum list 显示所有已安装及可安装的软件包;**
**yum remove httpd 删除程序包httpd;**
yum erase httpd 删除程序包httpd;
**yum update 内核升级或者软件更新;**
yum update httpd 更新httpd软件;
yum check-update 检查可更新的程序;
yum info httpd 显示安装包信息httpd;
yum provides 列出软件包提供哪些文件;
**yum provides "*/rz" 列出rz命令由哪个软件包提供;**
yum grouplist 查询可以用groupinstall安装的组名称;
yum groupinstall "Chinese Support" 安装中文支持;
yum groupremove "Chinese Support" 删除程序组Chinese Support;
yum deplist httpd 查看程序httpd依赖情况;
yum clean packages 清除缓存目录下的软件包;
yum clean headers 清除缓存目录下的headers;
yum clean all 清除缓存目录下的软件包及旧的headers。
yum makecache --- 提前将所有的已有yum源进行缓存以下
使用/usr/local/nginx/sbin/nginx 启动的话太麻烦
所以我们可以使用以下几种方式,进行启动
- 软链接
ln -s /usr/local/nginx/sbin/nginx /etc/init.d/
- alias别名
alias nginxstart=”/usr/loca/nginx/sbin/nginx”
yum remove httpd -y*
删除卸载
yum工作原理
yum运行需要两个部分,一yum源端,一yum客户端。yum文件以.repo结尾
如果裝圖形界面的話:
- yum groupinstall -y “Server with GUI”
- yum grouplist
yum三部走
yum clean all
yum makecache
yum repolist all
yum update -y 更新软件包或者linux内核升级
基于ISO镜像构建YUM本地源
原理:通过查找光盘中的软件包,实现YUM安装。
配置步骤:
- 将*.iso镜像加载到虚拟机CD/DVD或者放入服务器CD/DVD光驱中,并奖镜像文件挂载至服务器/mnt目录.
- mount /dev/cdrom /mnt/
- 备份/etc/yum.repos.d/C*.repo 为CentOS.repo.bak,同时在/etc/yum.repos.d下创建media.repo文件,并写入内容:
[centos]
name=centos7
baseurl=file:///mnt
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
enabled=1
yum clean all
yum makecache
yum repolist all
yum光盘源只能本机使用,局域网其他服务器无法使用yum光盘源。
基于HTTP构建YUM网络源
- 挂载光盘镜像文件至/mnt
[root@yzh ~]# mount /dev/cdrom /mnt
- 拷贝/mnt/Packages目录下所有软件到/var/www/html/centos/
[root@yzh ~]# cp -R /mnt/Packages/ /var/www/html/centos/*
- 使用Createrepo创建本地源,执行如下命令会在centos目录生成repodata目录
createrepo centos/
- 在客户端上建立yum源
/var/www/html ⇒ 192.168.10.10
- 客户端测试下载
- yum clean all && yum repolist all && yum makecache
补充:
如果要更新yum仓库则:
将.rpm包添加到/var/www/html/centos*
createrepo /var/www/html/centos
即可
同步外网YUM源
reposync命令
- yum provides “*/reposync”
將网络上的源自动拉过了
- reposync -r base -p /var/www/html/centos/
- reposync -r updates -p /var/www/html/centos/
- createrepo /var/www/html/centos/
刷新