程序包管理与程序编译安装(第九章)

1. 程序包管理工具

1.1 dpkg包管理工具

dpkg为基于debian发行版中的程序包管理工具,例如Ubuntu、linxu mint。

aptitude:软件包管理系统,直接输入此命令可进入包管理的视图

dpkg -L Package_Name:列出指定软件包所包含的全部文件

dpkg --search absolute_file_name:查看指定文件属于哪个包

aptitude search Package_Name:查看所有该名字的软件包,会自动增加通配符,前面下是i表示已安装,c表示软件已被删除,显示p表示配置文件也已经被删除,v表示包可用且未安装。

aptitude safe-upgrade:安全的更新升级,如果存在依赖关系问题,不会强制升级

aptitude full-upgrade:更新升级,但不检查依赖关系

aptitude dist-upgrade:更新升级,但不检查依赖关系

aptitude remove Package_Name:删除软件包,但不删除数据和配置文件

aptitude purge Package_Name:删除软件包,同时删除配置文件和数据

aptitude仓库

aptitude仓库配置存放于/etc/apt/sources.list中

1.2 rpm包管理工具

rpm包管理工具普遍用于Redhat系列的操作系统

rpm包命名规则:

name-VERSION-release.arch.rpm

name:包名

Version:版本号

release:发行号,有可能还会显示支持的操作系统,比如release.el7,表示适用于RHEL7

arch:运行平台。例如x86、x86_x64、x64,无关平台的通常会显示noarch

rpm包依赖关系:

yum是rpm包管理器的前端工具,用于解决包之间的依赖关系

ldd:查看二进制程序所依赖的库文件

ldconfig:管理与查看本地已装载的库文件

-p:显示本地已经缓存的库文件和文件路径的映射关系

配置文件有/etc/ld.so.conf、/etc/ld.so.conf.d/*.conf,缓存文件有/etc/ld.so.cache

rpm包安装

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

-i:安装软件包

rpm -ivh Package_Name:安装软件包,显示安装过程和安装进度

--install-options:安装选项

--test:测试安装,不真正执行

--nodeps:忽略依赖关系,一般不建议

--repleacepkgs:重新安装

--nosignature:不检查包的来源合法性

--nodigest:不检查包完整性

--noscripts:不执行程序包脚本片段

%pre:安装前脚本; --nopre

%post:安装后脚本;--nopost

%preum:卸载后脚本; --nopreun

%postun:卸载后脚本; --nopostun

rpm包升级:

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

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

-U:如果有旧版本则升级,没有旧版本则安装

-F:如果有旧版本则升级,没有旧版本则不执行操作

rpm -Uvh Package_Name

rpm -Fvh Package_Name

--oldpackage:降级

--force:强制升级

对于内核不要执行升级操作,会导致系统故障;

如果程序配置文件已经被修改,升级后配置文件不会被覆盖,而是将新版命名为filename.rpmnew保存

rpm包查询

rpm {-q|--query} [select-options] [query-options]

-q:查询

[select-options]

-a:所有包

-f:查看指定文件由那个程序生成

-p /PATH/TO/PACKAGE_FILE:针对于未安装的包做查询操作

--whatprovides CAPABILITTY:查询指定的CAPABILITTY由哪个包所提供

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

[query-options]

--changelog:查询rpm包的changelog

-c:查询程序的配置文件

-d:查看程序的文档

-i:查看程序的详细信息

-l:查看指定程序安装后生成的所有文件

--scripts:程序包自带的脚本片段

-R:查看程序包依赖的CAPABILITTY

--provides:查看程序包所提供的CAPABILITTY

常用用法:

rpm -qi:查询程序包的详细信息

rpm -qf:查询文件由那个程序包生成

rpm -qc:查看程序包所有的配置文件

rpm -ql:查看程序包所有的文件列表

rpm -qd:查看程序包所包含的文档

rpm -qpi:查看未安装的指定程序包的详细信息

rpm -qpl:查看未安装的指定程序包的文件列表

rpm -qa | grep package_name:查看指定程序包是否安装

rpm卸载程序包

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...

rpm包校验

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

导入所需要公钥:

rpm --import /PATH/FROM/GPG-PUBKEY-FILE

rpm 数据库重建

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

rpm rebuilddb:重建,无论事先是否存在,都重建数据库。

1.3 yum仓库管理

yum服务器:

yum服务器上存储了诸多软件包,放置于repodata目录下

yum客户端

配置文件:

/etc/yum.list :为数据仓库提供公共配置

/etc/yum.repo.d/*.repo:提供数据仓库的配置

数据仓库配置:

[repositoryID]                     #ID号

name=repo_name                     #仓库名

baseurl=url://path/to/repository/  #repodata的URL

enabled={0|1}                      #该源是否启用,0为关闭,1为启用

gpgcheck={0|1}                     #是否进行合法性和完整性校验,0为不校验,1为校验

gpgkey=URL                         #校验key的URL

enablegroups={0|1}                 #是否基于组来批量管理程序包

failovermethod={roundrobin|priority}#故障转移方式,轮询根据优先级选择,默认为roundrobin,意思为随机。

cost=                               #开销。默认为1000

yum常见命令用法

显示仓库列表:

yum repolist [all|enabled|disabled]:显示本地yum源[所有的|可用的|不可用的]

显示程序包:

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 package1 [package2] [...]:删除软件但保留他的数据和配置文件

yum erase package1 [package2] [...]:删除软件同时删除配置和数据文件

上述两种方法都可以删除软件包且同时删除依赖包

查看指定的特性(可以是某文件)是由哪个程序包所提供

yum provides feature1 [feature2] [...]

yum whatprovides feature1 [feature2] [...]

清理本地缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:包缓存|元数据缓存|过期的缓存|rpmDB|插件|全部缓存

构建缓存:

yum makecache

搜索:

yum search string1 [string2] [...]:已指定的关键字搜索程序名及summary信息

查看指定的包所依赖的CAPABILITTY:

yum deplist package1 [package2] [...]

查看事务历史:

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

安装和升级本地包:

yum localinstall RPMFILES1......:安装

yum localupdate RPMFILES1......:升级

包组管理的相关命令:

yum groupinstall group1 [group2] [...]:安装

yum groupupdate group1 [group2] [...]:升级

yum grouplist [hidden] [groupwildcard]:包组列表,可使用通配符

yum groupremove group1 [group2] [...]:删除

yum groupinfo group1 [group2] [...]:查询包组信息

处理损坏的包的依赖关系

1、yum clean all

2、yum update 如果未恢复继续3

3、yum deplist PACKAGE_NAME:显示包的依赖关系,如果未成功请继续4

4、yum update --skip-broken:忽略坏损的包,继续更新其他包

1.4 yum仓库创建

使用光盘做yum源

先挂载光盘

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

创建配置文件

[CentOS7]

name=

baseurl=file://.......

gpgcheck=

enabled=

yum的命令行选项

--nogpgcheck:禁止进行gpgcheck

-y:自动回答为yes

-q:静默模式

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

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

--noplugins:禁用所有插件

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

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

$arch:平台

$basearch:基础平台

$YUM0-$YUM9:这些将会替换为shell环境中相同的值

创建yum仓库

createrepo [options] <directory>

2、 使用源码安装程序

(1)查看INSTALL、README文件中的安装步骤和注意事项

(2)./configure

此命令的用途:

通过选项传递参数,指定启用特性和安装路径等;执行时会参考用户指定以及Makefile.ini文件生成makfile

检查依赖的外部环境

命令执行完成后查看执行结果,若有未安装的外部依赖环境和程序会有提示,安装即可。

(2)make

此命令用途:

根据makefile文件构建应用程序

(3)make install

安装程序

./configure的相关参数

--help:查看帮助

--prefix=/PATH/TO/SOMEFILE:指定安装路径,默认为/usr/local/

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

--disable-FEATURE:关闭某特性

--enable-FEATURE:开启某特性

--with-PACKAGE:可选包

--without-PACKAGE:不可选包

安装后的配置

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

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

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

(2)导出库文件路径

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

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

使用ldconfig 让系统重新生成缓存

(3)导出头文件

基于链接的方式实现

ln -sv

(4)导出帮助手册

编辑/etc/man.config文件,添加一个MANPATH

时间: 2024-08-25 11:16:06

程序包管理与程序编译安装(第九章)的相关文章

程序包管理之源代码编译安装及rpm源码包安装

一.程序源码编译安装步骤 二.程序路径管理 三.简单源码编译安装示例 四.rpm源码包安装 一.程序源码编译安装步骤 --------------------------------------- 1.cd SOURCE_CODE    #cd到程序源码文件夹 --------------------------------------- 2../configure    #检查编译环境,对程序定制编译配置,编译前读一读README,INSTALL #常用配置参数:--prefix=安装路径,-

linux程序包管理与源码安装

一.RPM包简介: linux之所以那么强大,除了linux强大的内核,还有很大一部分取决于linux的软件包,假想没有软件包,就一个内核在运行,人类需要和内核打交道是多么痛苦,但是聪明的人类发明了bash,通过bash,人就可以使用高级语言,和机器沟通,这其中的bash起始也是一个软件包,当然linux除了bash还有各式各样的包,帮助我们完成各种任务,这其中便涉及到程序的包管理. rpm包管理器(原名redhat package manager,后成为行业标准,命名为rpm package

Linux程序包管理--源码编译的原理和基本方法

Linux中使用rpm格式的程序文件包来安装是比较方便的方法, 但是有一部分程序文件包没有rpm包格式, 这时就需要用户自己手工编译源码包来进行安装. 文本主要讲解源码编译的原理和基本操作过程. 源码包命名方式 name - VERSION . tar . gz 其中: VERSION = major . minor . release major表示主版本号, 经过比较大的改进 minor表示次版本号, 改进比较小 release表示对一些bug进行修复 源码包编译过程 源码包是指经过程序员编

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

linux下yum程序包管理及源码安装

1.yum仓库中的repodata目录中元数据文件: primary.xml.gz:代表所有RPM包的列表和依赖关系以及每个RPM安装生成的文件列表: filelists.xml.gz:代表当前仓库中所有RPM包的所有文件列表: other.xml.gz:代表额外信息,RPM包的修改日志: repomd.xml记录的是上面三个文件的时间戳和校验和: comps*.xml: RPM包分组信息 2.yum定义repo文件 [Repo_ID] name=Description baseurl= ftp

Linux程序包管理之yum源安装

yum源安装是我们工作中常用的一种方式,它是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装. 在CentOS7里面还有一种更加新颖的安装方式(dnf安装),本篇主要讲解yum安装.在yum源安装之前我们必须对yum命令掌握.下面就来谈谈yum命令的用法和yum源安装. 一.yum命令的用法   

程序包管理的前端工具yum、程序包管理器编译安装、sed命令

下面介绍的是程序包管理的前端工具yum.程序包管理器编译安装.sed命令. 一.Linux程序包管理:程序包管理的[前端工具] 1.yum软件包仓库简介 CentOS系的管理工具有yum和dnf.yum是一款发行版的Linux,其使用的默认程序包管理工具为rpm. URL是yum定位软件包仓库和仓库中程序文件的主要标识方式,表示如下: 例如:schema://[[email protected]]hostname/PATH/TO/DOCUMENT[paramers][methord] (例子中的

#12 程序包管理与rpm命令的使用

Linux的程序包管理: 程序:指令+数据 程序:算法+数据结构 应用程序的存在形式: 1.源代码:包含了整个应用程序的编程语言的所有代码的文本文件: 2.二进制:将源代码经过一系列的转换操作之后得到的可以直接执行的文件 使用源代码安装应用程序: 预处理(预处理器) --> 编译(编译器) --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件 POSIX:POS,Portable Operating System,可移植操作系统 API:Applic

RHEL程序包管理

RHEL程序包管理 YUM : Yellowdog UpdateModifier RPM : RPM is PackageManager 一.程序包管理 1.程序包的命名格式: 程序包的命名经过多个过程,最初状态是由程序员编写后以program_name-VERSION的形式打包共享的.编译之后会加上相应的适用硬件架构平台ARCH. program name-VERSION.tar.gz 编译:--> 归档压缩 programname-VERSION-ARCH.tar.gz 包管理器:-->