linux程序包管理 rpm yum 编译

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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


本文出自 “11284919” 博客,请务必保留此出处http://11294919.blog.51cto.com/11284919/1783191

以上是关于linux程序包管理 rpm yum 编译的主要内容,如果未能解决你的问题,请参考以下文章

Linux程序包管理.md

linux rpm程序包管理器

linux程序包管理 rpm yum 编译

linux程序包管理之rpm程序包管理器与yum前端工具

程序包管理rpm和yum

16Linux软件管理工具rpm详解