欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

软件包管理

程序员文章站 2022-04-18 10:29:27
包管理器 程序包管理器: 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而 方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作 包文件组成 (每个包独有) RPM包内的文件 RPM的元数据,如名称,版本,依赖性,描述等 安装或卸载时运行的脚本 数据库(公共):/var/l ......
包管理器
程序包管理器:
功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而
方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
包文件组成 (每个包独有)
RPM包内的文件
RPM的元数据,如名称,版本,依赖性,描述等
安装或卸载时运行的脚本
数据库(公共):/var/lib/rpm
程序包名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验码信息
 
程序包的来源
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum, dnf
获取程序包的途径:
(1) 系统发版的光盘或官方的服务器;
CentOS镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2) 项目官方站点
(3) 第三方组织:
Fedora-EPEL:
Extra Packages for Enterprise Linux
Rpmforge:RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
(4) 自己制作
注意:第三方包建议要检查其合法性
来源合法性,程序包的完整性
 
rpm包管理
(1):CentOS系统上使用rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE…
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度
rpm -ivh PACKAGE_FILE ..
 
 
rpm包安装
-i 安装
--test 仅测试,不安装
--nodeps 忽略依赖性
--replacepkgs 重复安装已安装过的包,文件覆盖
--replacefiles 将要安装包的部分文件与其他已安装的包文件冲突,可继续安装
--noscripts:不执行程序包脚本
%pre: 安装前脚本; --nopre
%post: 安装后脚本; --nopost
%preun: 卸载前脚本; --nopreun
%postun: 卸载后脚本; --nopostun
--oldpackage 已装新的,再装旧的
--force 等同于--replacepkgs --replacefiles --oldpackage
-U 更新 如果装的有旧的,则升级,如果未装旧的,则安装新的。
-F 更新 如果装的有旧的,则升级,如果未装旧的,不安装新的。
 
-v 详细信息
-vv 更详细信息 *
-h 显示进度
-ivh 安装并详细显示进度 ***
-q 查询
-qa 查询安装的所有包
rpm -qa scr*
rpm -qa |grep ^scr
-qf 查询指定的文件由哪一个rpm包提供(文件用路径表示)
-qp 指定未安装的rpm包
-q --provides 软件包名 查看指定的软件包提供了哪些能力
可以使用-a 显示当前系统中由已安装过的包提供的所有能力
-q --whatprovides webserver 查看指定的能力由哪一个软件包提供
-q --whatrequires CAPABILITY 查询指定的CAPABILITY被哪个包所依赖
-qR 软件包名 查看指定的软件包依赖哪些能力
-qc 软件包名 查看配置文件
-qd 软件包名 查看帮助文档
-ql 软件包名 查看该软件包所提供的所有文件
-qi 软件包名 查看软件包的信息
-q --scripts 软件包名 查看软件包的安装脚本
-V 查看指定包所提供的文件是否发生过改变
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ
 
-K|checksig rpmfile 检查包的完整性和签名
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
 
rpm包升级
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
upgrade:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage:降级
--force: 强制安装
 
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
 
实验:丢失文件恢复
/etc/inittab
1.rpm -qf /etc/inittab
initscripts-9.03.58-1.el6.centos.x86_64
 
2.cp /media/Packages/initscripts-9.03.58-1.el6.centos.x86_64.rpm /app
 
3.cd /app; rpm2cpio initscripts-9.03.58-1.el6.centos.x86_64.rpm |cpio -id
 
4.cp etc/inittab /etc
 
 
 
yum
vim /etc/yum.repos.d/dvd.repo
[base]
name=magedu centos 7 dvd
baseurl=file:///media
 
yum
CentOS: yum, dnf
YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依
赖性,可在多个库之间定位软件包,up2date的替代工具
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据
文件(放置于特定目录repodata下)
文件服务器:
http://
https://
ftp://
file:/
yum仓库
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
实例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384
yum源
 
yum源
阿里云repo文件:
http://mirrors.aliyun.com/repo/
CentOS系统的yum源
阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
教学环境: http://172.20.0.1/cobbler/ks_mirror/$releasever/
EPEL的yum源:
阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64
教学环境: http://172.20.0.1/fedora-epel/$releasever/x86_64/
 
 
yum命令
yum命令的用法:
yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)
升级程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] [...]
查看程序包information:
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins |
all ]
构建缓存:
yum makecache
搜索:yum search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
查看yum事务历史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history
yum history info 6
yum history undo 6
日志 :/var/log/yum.log
 
安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] [...]
(用install替代)
yum localupdate rpmfile1 [rpmfile2] [...]
(用update替代)
包组管理的相关命令:
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
 
 
yum repolist
enabled 仅显示激活的仓库,默认
all 显示所有的仓库
disabled 仅显示禁用的仓库
先挂载光盘
mount /dev/sr0 /media/ cd /etc/yum
umount 卸载光盘
写配置文件vim yum.repos.d
#!/bin/bash
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backupi
cat > /etc/yum.repos.d/media.repo <<end
yum源本地配置
vim yum.repo
[base]
name=base
baseurl=file:///media
gpgcheck=0
 
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64/
gpgcheck=0
end
 
yum repolist 初始化文件 相当于刷新。看yum搭建成功了没
yum install +(要安装的东西)比如tree 安装
yum clean all 清除yum缓存,有存储安装
 
本地安装
[base]
name=magedu centos $releasever dvd
baseurl=http://172.18.0.1/centos/$releasever
enabled=1
网络安装
[epel]
name=magedu centos $releasever dvd
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
enabled=1
 
yum-config-manager --add-repo=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64
 
 
yum list [all]
@anaconda 表示操作系统安装时所安装的软件包
installed 表示操作系统安装后,手工通过rpm、yum、dnf所安装的软件包
除以上两种,其他的表示未安装的软件包,@name 显示包来源于哪个repo id
 
available 只显示未安装的包
installed 只显示已安装的,包括@anaconda和installed的
updates 只显示可更新包
yum update
 
yum install httpd
yum reinstall httpd
 
 
lscpu命令 :查看cpu的详细信息
free:查看内存信息
cat /proc/meminfo :查看内存信息
unsit:删除变量
$$:查看当前进程
pstree -p 查看进程
name=
set :查看变量 set|grep PS1,PS1:是命令提示符,改颜色
echo $_ :调用上一次参数的变量
!$:上一条命令的最后一个参数的调用
 
 
[root@feng ~]# name=test;(echo $name)
test
[root@feng ~]# name=test;(echo $name; name=222;echo $name);echo $name
test
222
test
 
 
scp +脚本名+IP地址 :直接将脚本考到其他IP地址中
 
 
#!/bin/bash
name=etc`date +%F`
cp -a /etc/ /root/$name
 
cp -a /etc/ /root/etc$(date "+%Y-%m-%d")
 
#!/bin/bash
scp $* wang@172.18.1.124
 
直接:bash scp.sh scp.sh
yum
info
provides [whatprovides] 查看文件来自于哪个rpm包
provides "*bin/tree"
clean all 清空缓存
makecache 构建缓存
search pkgname 以指定的关键字搜索程序包名及summary信息
deplist pkgname 查询指定的包依赖哪些能力及所提供的包
yum history
yum history info 6
yum history undo 6 ***
yum history redo 6
 
localinstall[install] rpm文件。使用yum安装指定的rpm文件,并利用yum安装所依赖 的文件。
locaupdate[update] rpm文件。使用yum更新指定的rpm文件,并利用yum更新所依赖的文件
包组
grouplist
groupinfo 包组名
yum groupinstall "Development Tools"
yum install --downloadonly --downloaddir=/app httpd-manual 仅下载不安装
 
 
使用本地光盘做为yum源
1.mount /dev/cdrom /media/
2.vim /etc/yum.repos.d/dvd.repo
[base]
name=magedu centos $releasever dvd
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///media/RPM-GPG-KEY-CentOS-7
 
自建仓库
createrepo /app/rpm/
 
实验:在centos7上编译安装 httpd 2.4
 
1.下载源码包
lftpget ftp://172.18.0.1/pub/Sources/sources/httpd/httpd-2.4.25.tar.bz2
2.2.32
 
2.安装Development Tools
yum -y groupinstall "Development Tools"
3.解压
tar xvf httpd-2.4.25.tar.bz2
一般情况下把源码解压的文件 cd/usrlocal/src
并查看README和INSTALL以及./configure --help
4.配置
./configure --prefix=/app/apache24 --sysconfdir=/etc/apache24
dnf -y install apr-devel apr-util-devel pcre-devel
5.make
 
6.make install
 
7.将执行命令和帮助文档的路径写入PATH
vim /etc/profile.d/env.sh
export PATH=/app/apache24/bin/:$PATH
source /etc/profile.d/env.sh