linux程序包管理 rpm yum 编译

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]

安装:-i, --install

升级:-U, --update, -F, --freshen

卸载:-e, --erase

查询:-q, --query

校验:-V, --verify

数据库维护:--builddb, --initdb

安装:rpm {-i|--install} [install-options] PACKAGE_FILE ...

rpm  -ivh  PACKAGE_FILE ...

GENERAL OPTIONS:

-v:verbose,详细信息

-vv:更详细的输出

[install-options]:

-h:hash marks输出进度条;每个#表示2%的进度;

--test:测试安装,检查并报告依赖关系及冲突消息等;

--nodeps:忽略依赖关系;不建议;

--replacepkgs:重新安装

注意:rpm可以自带脚本;

四类:--noscripts

preinstall:安装过程开始之前运行的脚本,%pre , --nopre

postinstall:安装过程完成之后运行的脚本,%post , --nopost

preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun

postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun

--nosignature:不检查包签名信息,不检查来源合法性;

--nodigest:不检查包完整性信息;

升级:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-U:升级或安装;

-F:升级

rpm  -Uvh PACKAGE_FILE ...

rpm  -Fvh PACKAGE_FILE ...

--oldpackage:降级;

--force:强制升级;

注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;

(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸载:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

--allmatches:卸载所有匹配指定名称的程序包的各版本;

--nodeps:忽略依赖关系

--test:测试卸载,dry run模式

查询:rpm {-q|--query} [select-options] [query-options]

[select-options]

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;

-a, --all:查询所有已经安装过的包;

-f  FILE:查询指定的文件由哪个程序包安装生成;

-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]

-changelog:查询rpm包的changlog;

-l, --list:程序安装生成的所有文件列表;

-i, --info:程序包相关的信息,版本号、大小、所属的包组,等;

-c, --configfiles:查询指定的程序包提供的配置文件;

-d, --docfiles:查询指定的程序包提供的文档;

--provides:列出指定的程序包提供的所有的CAPABILITY;

-R, --requires:查询指定的程序包的依赖关系;

--scripts:查看程序包自带的脚本片断;

用法:

-qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

-qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...

校验:

rpm {-V|--verify} [select-options] [verify-options]

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

包来源合法性验正和完整性验正:

来源合法性验正:

完整性验正:

获取并导入信任的包制作者的密钥:

对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验正:

(1) 安装此组织签名的程序时,会自动执行验正;

(2) 手动验正:rpm -K PACKAGE_FILE

数据库重建:rpm管理器数据库路径:/var/lib/rpm/

查询操作:通过此处的数据库进行;

获取帮助:

CentOS 6:man rpm

CentOS 7:man rpmdb

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]

--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;

--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

CentOS: yum, dnf

YUM: yellow dog, Yellowdog Update Modifier

yum repository: yum repo

存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);

文件服务器:

ftp://

http://

nfs://

file:///

yum客户端:

配置文件:/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}

默认为:roundrobin,意为随机挑选;

cost=

默认为1000

yum命令的用法:

yum [options] [command] [package ...]

command is one of:

* install package1 [package2] [...]

* update [package1] [package2] [...]

* update-to [package1] [package2] [...]

* check-update

* upgrade [package1] [package2] [...]

* upgrade-to [package1] [package2] [...]

* distribution-synchronization [package1] [package2] [...]

* remove | erase package1 [package2] [...]

* list [...]

* info [...]

* provides | whatprovides feature1 [feature2] [...]

* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

* makecache

* groupinstall group1 [group2] [...]

* groupupdate group1 [group2] [...]

* grouplist [hidden] [groupwildcard] [...]

* groupremove group1 [group2] [...]

* groupinfo group1 [...]

* search string1 [string2] [...]

* shell [filename]

* resolvedep dep1 [dep2] [...]

* localinstall rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use install)

* localupdate rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use update)

* reinstall package1 [package2] [...]

* downgrade package1 [package2] [...]

* deplist package1 [package2] [...]

* repolist [all|enabled|disabled]

* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

* check

* help [command]

显示仓库列表:repolist [all|enabled|disabled]

显示程序包:

list

# yum list [all | glob_exp1] [glob_exp2] [...]

# yum list {available|installed|updates} [glob_exp1] [...]

安装程序包:install package1 [package2] [...]

reinstall package1 [package2] [...]  (重新安装)

升级程序包:update [package1] [package2] [...]

downgrade package1 [package2] [...] (降级)

检查可用升级:check-update

卸载程序包:remove | erase package1 [package2] [...]

查看程序包information: info [...]

查看指定的特性(可以是某文件)是由哪个程序包所提供: provides | whatprovides feature1 [feature2] [...]

清理本地缓存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存:makecache

搜索:search string1 [string2] [...]

以指定的关键字搜索程序包名及summary信息;

查看指定包所依赖的capabilities:deplist package1 [package2] [...]

查看yum事务历史:history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

安装及升级本地程序包:

* localinstall rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use install)

* localupdate rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use update)

包组管理的相关命令:

* groupinstall group1 [group2] [...]

* groupupdate group1 [group2] [...]

* grouplist [hidden] [groupwildcard] [...]

* groupremove group1 [group2] [...]

* groupinfo group1 [...]

如何使用光盘当作本地yum仓库:

(1) 挂载光盘至某目录,例如/media/cdrom

# mount -r -t iso9660 /dev/cdrom /media/cdrom

(2) 创建配置文件

[CentOS7]

name=

baseurl=

gpgcheck=

enabled=

yum的命令行选项:

--nogpgcheck:禁止进行gpg check;

-y: 自动回答为“yes”;

-q:静默模式;

--disablerepo=repoidglob:临时禁用此处指定的repo;

--enablerepo=repoidglob:临时启用此处指定的repo;

--noplugins:禁用所有插件;

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

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

$arch: 平台;

$basearch:基础平台;

$YUM0-$YUM9

http://mirrors.magedu.com/centos/$releasever/$basearch/os

创建yum仓库:

createrepo [options] <directory>

代码编译安装三步骤:

./configure:

(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;

(2) 检查依赖到的外部环境;

make:根据makefile文件,构建应用程序;

make install

开发工具:

autoconf: 生成configure脚本

automake:生成Makefile.in

建议:安装前查看INSTALL,README

开源程序源代码的获取:

官方自建站点:

apache.org (ASF)

mariadb.org

...

代码托管:

SourceForge

Github.com

code.google.com

c/c++: gcc (GNU C Complier)

编译C源代码:

前提:提供开发工具及开发环境

开发工具:make, gcc等

开发环境:开发库,头文件

glibc:标准库

通过“包组”提供开发组件

CentOS 6: "Development Tools", "Server Platform Development",

第一步:configure脚本

选项:指定安装位置、指定启用的特性

--help: 获取其支持使用的选项

选项分类:

安装路径设定:

--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/

--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

System types:

Optional Features: 可选特性

--disable-FEATURE

--enable-FEATURE[=ARG]

Optional Packages: 可选包

--with-PACKAGE[=ARG]

--without-PACKAGE

第二步:make

第三步:make install

安装后的配置:

(1) 导出二进制程序目录至PATH环境变量中;

编辑文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

(2) 导出库文件路径

编辑/etc/ld.so.conf.d/NAME.conf

添加新的库文件所在目录至此文件中;

让系统重新生成缓存:

ldconfig [-v]

(3) 导出头文件

基于链接的方式实现:

ln -sv

(4) 导出帮助手册

编辑/etc/man.config文件

添加一个MANPATH

时间: 2024-10-16 17:14:06

linux程序包管理 rpm yum 编译的相关文章

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux 程序包管理 rpm yum dnf

Linux程序包管理: 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验) 目前Linux中最常见有两种常用工具 deb:debian Linux使用 包括ubuntu rpm:Redhat Package Manager ,Centos等在使用 程序包的组成: 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin 库文件: /lib64, /usr/64 配置文件:/etc 帮助文件:manual, info 包管理器: 打包:将源文件,一个一个单一的归档文

Linux程序包管理rpm与yum

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.  

Linux程序包管理及yum安装管理

Linux程序包管理: API:ApplicationProgramming Interface   应用编程接口 POSIX:Portable OS    遵循本协议的程序均可在不同系统间移植 程序编写完成后,执行所要经过的处理步骤: 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 静态编译: 共享编译:直接调用.so共享对象实现 ABI:ApplicationBinary Interface  应用二进制接口 Windows与Linux所支持的可执行二进制

2018-3-14Linux系统管理(12) Linux程序包管理(2)yum前端管理工具

我们在之前的章节中讲到了Linux的程序包管理的基础与实现,后面也讲述了RPM包的管理命令实现了管理包的功能,主要用的是rpm命令,那么rpm实现程序管理总结如下:    rpm命令实现程序管理:       安装:-ivh, --nodeps, --replacepkgs       卸载:-e, --nodeps, --replacepkgs       升级:-Uvh, -Fvh, --nodeps, --oldpackage       查询:-q, -qa, -qf, -qi, -qd

学习笔记之Linux程序包管理rpm、yum、编译

无论是Windows系统还是Linux系统,我们用户想要在操作系统上获得更多的乐趣还是更多的功能的话,就需要在一个干净的系统上安装各式各样的软件程序,Linux上的是ELF格式的,目前比较常见的程序包管理器如: Redhat软件包管理器---rpm Debian软件包管理器---dpkg 一.1.RPM 安装:rpm {-i|--install} [install-options] PACKAGE_FILE... -v: verbose,详细信息 -vv: 更详细的输出 -h: hashmark

Linux程序包管理之yum仓库、源码编译安装

CentOS:yum,dnf URL:ftp://172.16.0.1/pub yum是C/S架构,是rpm的前端工具,依赖于rpm存在的: 1.本地要有yun程序: 2.本地要有配置文件(配置远程服务器yum仓库或本地服务器yum仓库): 3.要有存在的文件服务器(程序包仓库即yum仓库).(也可以在本地配置服务器yum仓库): yum支持的服务器有两种:一种是ftp服务器,第二种是http服务器: yum工作简述: yum是客户端,也认为是自我独立管理的组件,需要联系远程的仓库,从仓库中下载

Linux程序包管理--rpm和yum的原理和基本用法

Linux中的程序包主要分为两类: 二进制可执行安装包和源代码程序文件包. 本文主要讲解使用rpm程序包管理器和yum管理器前端工具来实现对二进制可执行安装包的安装, 查询, 升级和卸载等相关操作. Linux中在二进制可执行安装程序包安装上会涉及多个文件的操作, 操作过程就会比较复杂, 为简化该过程就使用程序安装包管理器来管理程序包的安装过程, 大大简化了程序包安装过程. Linux根据发行版本不同, 使用不同的程序包管理器实现对程序包的管理, 在这里主要介绍两大分支: debian: 使用d

程序包管理rpm,yum用法解析及自动化部署apache server实战,让您轻松拥有apache网站!

程序包管理器rpm,yum用法及apache httpd服务的自动化部署 程序包管理? 通常来说在windows中将需要安装的程序,程序名.exe下载下来然后点击setup的安装程序或直接点击程序包,下一步下一步即可.而Linux中程序包不是exe,不同的主流发行版有着不同的程序包管理机制.比较主流的主要是rpm程序包管理器和deb程序包管理. 这里要区别: 包名(PACKAGEFILE): rpm包程序文件的全名程序名(PACKAGENAME): rpm包不带版本号的程序名,比如QQ而不是QQ