CentOS软件包管理

CentOS软件包管理

系统环境:CentOS 6.9和7.3

CentOS 6.9系统软件包管理

rpm - RPM Package Manager

rpm --version

RPM version 4.8.0

linux包管理

二进制应用程序的组成部分:二进制文件,库文件,配置文件,帮助文件

debian:deb文件,dpkg包管理器

Redhat:rpm文件,rpm包管理器

ldd /bin/cat  查看软件依赖的库文件

ldd /bin/ls

误删除系统库文件恢复方法:

光盘启动进入救援模式

默认挂载到/mnt/sysimage

运行chroot /mnt/sysimage改变挂载点

还原移动或删除的库文件,重启即可

查看和管理本机装载的库文件

ldconfig

/sbin/ldconfig -p

配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf

缓存文件:/etc/ld.so.cache

第三方安装源EPEL——rpmforge

搜索:http://pkgs.org  http://rpmfind.net  http://rpm.pbone.net  https://sourceforge.net/

rpm包命名格式

包名-包版本号-编译版本号.cpu架构.rpm

name-version-release.arch.rpm

例: bash-4.2.46-19.el7.x86_64.rpm

VERSION: major.minor.release

release: release.OS

常见的 arch:

x86: i386, i486, i586, i686

x86_64: x64, x86_64, amd64

powerpc: ppc

跟平台无关: noarch

制作rpm包命令:rpmbuild 和FPM

查找所有包的平台架构

ls -al /mnt/Packages/ > lsrpm.log

more lsrpm.log | egrep -o "[^.]+\.rpm" |cut -d. -f1 |sort| uniq

######################

安装-i

安装选项:

--test:测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles  用于同一个包,替换包,即重新安装|替换文件,用于不同的包
--nosignature:不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
  %pre:安装前脚本;--nopre
  %post:安装后脚本;--nopost
  %preun:卸载前脚本;--nopreun
  %postun:卸载后脚本;--nopostun
--root=/mnt/sysimage  救援模式下重新安装kernel需要指定/目录或者运行chroot
rpm -ivh rpmfile   安装软件包

#######################

查询-q

选项:

-a:查询所有已经安装的包
-f:查询指定的文件由哪个程序包安装生成
-p rpmfile:查询指定包内容,必须跟rpm包路径
-c:查询程序的配置文件
-d:查询程序的文档
-i:查询程序的详细信息
-l:查询程序包的所有文件
-R:查询指定程序包所依赖的功能
-s: 查询所有文件的状态
--changelog
--scripts:程序包自带的脚本
--provides:列出指定程序包所提供的功能
常用组合选项:
-qi 查询软件包的详细信息
-ql 查询软件包生成的所有文件列表
-qc 查询软件包生成的所有配置文件(/etc目录下)
-qd 查询软件包生成的所有说明文件(man帮助文档)
-qR 查询软件包的依赖包关系
rpm -q kernel
rpm -qa tree
rpm -qa | grep tre  模糊搜索tree
rpm -qa | wc -l  查询所有已安装的软件包
rpm -qf /etc/issue  查看指定文件属于哪个rpm包
rpm -qf /bin/bash
rpm -qf `which rpm`  查询指定命令由哪个包生成
rpm -qpl rpmfile  查看指定包文件列表
rpm -qpi rpmfile  查询指定包信息
rpm -qpl --scripts bash-xxx.rpm  查询指定安装包的安装脚本
rpm -qa bash --scripts
rpm -qc bash  配置文件
rpm -qd bash  文档
rpm -ql tree
rpm -qi tree  查询已经安装过的包
rpm -q --whatprovides bash  查询指定命令由哪个包提供
rpm -q --whatrequires bash  查询指定命令依赖哪个包

查询系统是否安装了指定软件

rpm -q logrotate
rpm -q logrotating

查询系统工具来自哪个安装包

#rpm -qf `which lsblk`
util-linux-2.23.2-33.el7.x86_64
#yum install util-linux
rpm2cpio rpmfile |cpio -itv   查看rpm包内文件的详细信息,包括权限,大小的,类似于ls的显示
rpm2cpio rpmfile |cpio -id "*.conf"  提取安装包内的指定文件
rpm2cpio /mnt/sdb1/Packages/tree-1.5.3-3.el6.x86_64.rpm |cpio -itv
rpm2cpio /mnt/sdb1/Packages/tree-1.5.3-3.el6.x86_64.rpm |cpio -id *.gz
 
恢复误删除文件,此种方式可能会有权限问题,注意查看属主和权限,不推荐
#rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -itv
#rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -id ./usr/bin/tree
#ll usr/bin/tree
-rwxr-xr-x. 1 root root 62768 Jun  9 14:29 usr/bin/tree
#ll /usr/bin/tree
-rwxr-xr-x. 1 root root 62768 Jun 10  2014 /usr/bin/tree
#cp usr/bin/tree /usr/bin

#######################

校验-V

rpm -V tree   查询软件是否被更改过
rpm -Va tree  查询系统中所有可能被更改过的文件
rpm -Vp rpmfile   查询该软件包被更改过的文件列表
rpm -Vf filename  查询文件的属性

列出你的Linux内的logrotate这个软件是否被更改过

rpm -V logrotate

查询一下你的/etc/crontab是否有被更改过

# rpm -V tree

S.5....T.    /usr/bin/tree

# 被更改过所以会列出被更改过的信息类型

# rpm -Vf /etc/ssh/sshd_config

S.5....T.  c /etc/ssh/sshd_config

显示的信息类型如下:

S :(file Size differs) 文件大小已被改变

M :(Mode differs) 文件的权限(rwx)已被改变

5 :(MD5 sum differs) MD5验证不同

D :(Device major/minor number mis-match) 设备的主/次号码不匹配

L :(readLink(2) path mis-match) Link路径已被改变

U :(User ownership differs) 文件的所有者已被改变

G :(Group ownership differs) 文件的所属组已被改变

T :(mTime differs) 文件的mtime时间已被改变

显示的文件类型如下:

c :配置文件(config file)

d :文档文件(documentation)

g :ghost文件,指该文件不被软件包所包含,较少发生(ghost file)

l :许可证文件(license file)

r :自述文件(read me)

chgrp bin /usr/bin/tree

rpm -V tree

echo >> /usr/bin/tree

rpm -V tree

rpm -Va

包来源的完整性验证:SHA256,来源合法性验证:RSA

对称加密:加密,解密使用同一密钥

非对称加密:密钥是成对出现的,公钥和私钥

rpm -K rpmfile  检查包的完整性和签名

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   导入公钥,光盘里也有

rpm -qa "gpg-pubkey"

rpm -qi gpg-pubkey

# rpm -K tree-1.5.3-3.el6.x86_64.rpm

tree-1.5.3-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

#######################

升级-U/-F

rpm -Uvh rpmfile
rpm -Fvh rpmfile
-U,--upgrade:安装有旧版程序包,则升级;如果不存在则安装
-F,--freshen:安装有旧版程序包,则升级,如果不存在则不执行升级操作
--oldpackage:降级
--force:强制安装,不能用于卸载

#######################

卸载-e

卸载rpm包

rpm -e tree
rpm -q tree
rpm -e kernel-2.6.32-573.el6.x86_64   内核需要加上版本号
rpm -e rpm  不能直接删除
 
rpm -e rpm --nodeps  去除依赖性
rpm误删除后需要通过光盘启动救援模式来重新安装rpm包,然后重启
rpm -ivh /mnt/cdrom/Packages/rpm.rpm --root=/mnt/sysimage  指定新的/目录

rpm数据库重建:存放路径/var/lib/rpm

--initdb:初始化数据库,如果原先不存在则新建,否则不执行任何操作。

--rebuilddb:重建已安装的包头数据库索引

rpm的查询和安装都依赖rpm数据库,很重要,这里即使重建,但是数据为空,重建也无意义,所以最好提前做备份。

如何制作一个rpm包?

yum - Yellowdog Updater Modified

yum是一个交互式的RPM包管理程序,可自动解决包依赖问题,基于repository元数据来查询,安装,更新,卸载软件包,执行系统更新,检查包依赖性等操作

repodata:存储rpm包以及依赖包的相关元数据

repodata的父目录就是yum仓库的路径,Redhat5系列在Server目录下,centos6之后为光盘根目录。

支持4种路径http://  https://  ftp://  file://

yum日志:/var/log/yum.log

/var/lib/yum/  yum的元数据

/var/lib/rpm/  rpm数据库

yum只能同时运行一个进程,底层依赖rpm命令。

yum --version  查看版本等信息

yum

选项:

-c   指定配置文件
-q   静默模式,只提示必要的包列表信息
-y, --assumeyes   自动回答yes
--assumeno   自动回答no
--installroot=[path]   指定安装的根目录
--nogpgcheck   禁止进行gpg check
--noplugins  禁用所有插件
--version

命令:

yum repolist  列出可用的yum源
yum list   显示所有安装包,@表示已经安装,installed表示是通过rpm命令安装的
yum search   通过yum数据库查询软件包
yum info   查询软件包的信息
yum install   安装
yum reinstall   重新安装
yum update   升级
yum deplist   查询包依赖关系
yum provides  查询命令或功能由哪个包提供
yum distribution-synchronization  同步已安装的软件到最新版本
yum remove|erase   卸载
yum check-update   检查更新
yum history   显示yum操作历史
yum shell   进入yum自带的shell

包组命令:

yum groupinfo   显示包组信息
yum groupinstall  安装包组
yum grouplist  显示所有包组列表
yum groupupdate  更新包组
yum groupremove  卸载包组
 
yum history  [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-back|new|sync|stats]
 
yum history
yum history info 2 显示yum历史列表为2的详细操作
yum history undo 2 回退操作,即还原安装历史序列号为2的所有操作
 
yum repolist all   显示所有的的yum源
yum list installed|more   查询已安装的包
yum list available|more   查询可用的安装包
 
yum grouplist | grep -A 10 Installed  //查看已安装的软件包组
yum grouplist development tools   //查询指定包组
Server Platform Development 和 Development tools 这两个包组是完全一样的,一般只需要安装后者即可
yum groupinstall Development tools

更新缓存:

yum clean all
yum makecache

yum源配置文件:

/etc/yum.conf   全局配置,为所有仓库提供公共配置

/etc/yum.repos.d/*.repo   配置yum仓库

vi base.repo
[base]  //仓库名不能重名
name=centos6  //描述信息
baseurl=URL  //元数据路径,即repodata目录的路径,支持http,ftp,file
enabled={1|0}  //1启用,0禁用
gpgcheck={1|0}  //验证
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}  //roundrobin表示随机挑选,默认值;priority表示按顺序访问
cost=  //默认为1000

yum的repo配置文件中可用的变量:

$releasever:当前OS的发行版的主版本号

$arch:平台,i386,i586,x86_64

$basearch:基础平台,i386,x86_64

$YUM0-$YUM9:自定义变量

http://server/centos/$releasever/$basearch/  通用方式,可以表示以下两种

http://server/centos/7/x86_64

http://server/centos/6/i386

最简单的repo文件

[base]
name=centos6
baseurl=ftp://192.168.1.1/pub/6
gpgcheck=0

yum只能同时运行一个进程,如果有其他用户同时使用yum,可以通过fuser -km /repodata-path 强行结束。

fuser -km /var/ftp/pub/6
mount --bind /misc/cd /var/ftp/pub/6
mount
yum install gcc

创建yum仓库:createrepo .

先把rpm文件放到一个目录,然后执行createrepo 目录路径即可生成repodata目录仓库

配置yum源

1.光盘yum源配置,通过autofs服务开机自动挂载光盘

yum install autofs
service autofs start
vi /etc/yum.repos.d/base.repo
[cdrom]
name=cdrom
baseurl=file:///misc/cd
gpgcheck=0
enabled=1

更新yum源缓存并测试安装软件,以下均省略说明

yum clean all
yum makecache
yum repolist
yum remove tree
yum install tree

2.网络yum源配置,推荐使用http方式

yum install httpd
mkdir /var/www/html/yum
mount /dev/sr0 /var/www/html/yum
service httpd start
vi /etc/yum.repos.d/base.repo
[yumsrc]
name=yumsrc
baseurl=http://192.168.10.61/yum
gpgcheck=0
enabled=1

更新yum源缓存并测试安装软件,同上

3.搭建自定义的yum源

yum install createrepo
mkdir /app/Packages
cp /root/xxx.rpm /app/Packages
createrepo /app/Packages
mkdir /var/www/html/yum
mount -o bind /app/Packages /var/www/html/yum
vi /etc/yum.repos.d/base.repo
[yumsrc]
name=yumsrc
baseurl=http://192.168.10.61/yum
gpgcheck=0
enabled=1

更新yum源缓存并测试安装软件,同上

CentOS 7.3系统软件包管理

yum groups命令与6不同,如下:

yum groups list  查询包组

yum groups info

yum groups install

yum groups remove

yum groups summary

yum groups list | grep -A 10 Installed   //查看已安装的软件包组

yum groups info Development Tools

时间: 2024-11-09 20:49:20

CentOS软件包管理的相关文章

rhel和centos软件包管理

通过rpm管理安装包 安装软件:rpm -ivh filename.rpm 升级软件:rpm -Uvh filename.rpm 卸载软件:rpm -e filename.rpm 查询软件的描述信息:rpm -qpi filename.rpm 列出软件的文件信息:rpm -qpl filename.rpm 查询文件属于哪个rpm包:rpm -qf filename yum软件仓库管理软件安装 yum能够根据用户的要求分析出所需的软件包及其依赖的软件包,自动下载软件包和依赖包到本地并安装 yum的

Linux软件包管理{rpm|yum|源码包}2015082901

CentOS软件包管理 Linux程序安装有三种方式: 1.  二进制包安装 a.RPM b.YUM 2.  源码包安装 (1)二进制包管理: RPM CentOS上的二进制包为rpm格式,并且rpm软件包管理程序也叫做rpm(RPM is Package Manager) RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程.此外通过RPM方式安装的软件,RPM工具都会记录软件的安装信息至数据库中(/var/lib/rpm),这样方便了软件日后的

Linux学习之CentOS(二十三)--Linux软件管理之源代码以及RPM软件包管理

在Linux系统下,对于软件包的管理有多种机制,有源代码方式.RPM软件包管理方式以及YUM软件管理方式,本篇随笔将详细讲解CentOS下源代码形式安装软件以及RPM软件包管理机制 一.源代码形式 首 先我们先来看一下源代码的方式.我们知道,在开源的环境下,大多数的开源软件都是以源代码的形式来发布,通常将源代码打包成tar.gz的归档压缩文件发 布到网上供我们下载使用.但是我们下载下来的源代码方式我们还不能够直接使用,不像在windows系统上直接下载下来可执行的二进制文件,我们需要将下 载好的

CentOS软件管理之源代码以及RPM软件包管理

在Linux系统下,对于软件包的管理有多种机制,有源代码方式.RPM软件包管理方式以及YUM软件管理方式,本篇随笔将详细讲解CentOS下源代码形式安装软件以及RPM软件包管理机制 一.源代码形式 首先我们先来看一下源代码的方式.我们知道,在开源的环境下,大多数的开源软件都是以源代码的形式来发布,通常将源代码打包成tar.gz的归档压缩文件发布到网上供我们下载使用.但是我们下载下来的源代码方式我们还不能够直接使用,不像在windows系统上直接下载下来可执行的二进制文件,我们需要将下载好的源码编

软件包管理之RPM

一.前言 在没有软件包管理器前,用户都是通过源代码的方式来安装软件.但是我们很容易发现,在每次安装软件时都必须对操作系统的境.编译的参数进行对应的编译,并且操作过程很是复杂,这对于不熟悉操作系统的朋友来说真心困难,那么有没有一款软件能让用户能很简单的安装所需的软件呢? 随着自由软件蓬勃发展,Linux系统的飞快发展,很多软件开发者.企业和社区将这些软件开始通过收集.整理.编译制作成distributions发布到常用的Linux操作系统上,但是后来发现,这样做在日后软件更新.系统更新上面都需要做

17、Linux软件包管理工具yum详解

yum介绍 yum客户端的使用 配置文件项作说明: 案例repo配置文件. 创建yum源命令(yum-config-manager) yum list相关命令 yum安装 yum更新和升级 yum查找和显示 yum删除程序 查看仓库 实战演练本地yum仓库(光盘) YUM内置变量 创建YUM仓库(http) yum介绍 yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安

[Noi2015]软件包管理器

题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置.Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管理器. 你决定设计你自己的软件包管理器.不可避免地,你要解决软件包之间的依赖问题.如果软件包A依赖软件包B,那

Linux 入门学习之rpm软件包管理

Linux入门之软件包管理 在linux有很多类的软件包管理机制,但是在redhat.centos这类版本的系统中,都会使用一种相同的机制,就是rpm软件包管理机制,当然,还有其它版本的linux使用的不同机制: debian:使.deb文件,dpkg包管理器 redhat:使用.rpm文件,rpm包管理器 软件包在使用中又分类两种(源码包和二进制包): 源码包:一般是提供了一些源码模块和编译脚步组合起来的压缩文件,命令格式如: name-version.tar.{gz|bz2|xz} 等,这里

1、linux软件包管理

linux软件包管理分为两种:RPM包管理和源码包管理,其中RPM包管理又有两种方式:①RPM命令管理,②YUM在线命令管理. RPM包依赖关系: 1.树形依赖 2.环形依赖 (用一条命令同时装来解决) 3.模块依赖,模块依赖查询网址www.rpmfind.net.例如,安装某个rpm包的时候需要依赖模块libodbcinst.so.2,解决步骤:在rpmfind网址上查找到模块所在的rpm包,然后安装该包即可. 区别“包全名”与“包名” 1.包全名:mysql-5.1.73-7.el6.x86