关键词:
在linux的使用过程中我们难免需要下载文件,但下载的文件多数是以包的形式,所以我们就需要知道如何去管理这些包
在Centos系统上系统自带有rpm命令来管理程序包,可以对这些包进行安装、卸载、升级、查询、校验、数据库维护等操作,除了rpm,我们常用的还有yum,dnf等包管理工具
一.rpm
1. rpm的安装功能
格式:rpm -i|--install [install-options] PACKAGE_FILE…
rpm -i 安装
-iv 显示安装过程
-ivv 显示安装详细过程
-ivh 显示过程及安装进度百分比
--test 仅测试,并不真正安装
--nodeps 在安装或卸载时忽略依赖性
--replacepkgs重复安装已安装过的包,文件覆盖
--replacefiles将要安装包的部分文件与其他已安装的包文件冲突,可继续安装,文件不覆盖
--oldpackage 已安装过新版本,现在装旧版本
--force 等同于 --replacepkgs, --replacefiles, and --oldpackage.
--noscripts 安装时不执行包中自带的脚本
--force: 强制安装
2. rpm的升级功能
格式:rpm -U|--upgrade [install-options] PACKAGE_FILE...
rpm -F|--freshen [install-options] PACKAGE_FILE...
rpm -U(upgrade)vh:有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”
-F(freshen)vh:有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作
rpm的升级操作实质上是安装新的包,并把原来安装的文件进行删除操作,所以在对内核进行升级时建议使用ivh选项,在安装新的内核的同时保留原来的内核,以防止出现升级后原来内核被删除,升级的内核无法使用的情况
3. rpm的包查询功能
格式:rpm -q|--query [select-options] [query-options]
rpm -q 查询指定包是否安装
-qa: 查询所有包
-qi:查询指定包的详细信息
-ql: 打印包安装的文件列表
-qf: 查看指定的文件由哪个程序包安装生成
-qp:针对尚未安装的程序包文件做查询操作
-q --provides: 查看指定包提供了哪些CAPABILITY -a --provides 查看所有CAPABILITY
-q --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供也可以与-f 相同查看文件由哪个程序包安装生成
-q --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
-q --changelog:查看rpm包的changelog
-q --scripts:查看程序包自带的脚本
4. rpm的包卸载功能
rpm -e|--erase [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
一般情况下使用rpm -e 包名就可以卸载一个包了
--nodeps 忽略依赖关系
--test 测试卸载
--allmatches 表示如果一个程序包同时安装多个版本,则次选项一次全部卸载之
5. 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文件的 mtime
P capabilities differ
rpm -K|checksig rpmfile 检查包的完整性和签名
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
二.yum
yum: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具。yum将大量rpm包及其相关的元数据文件存放到一个仓库中,在我们安装一个包时,自动搜索仓库数据,并将这个包所依赖的包一同安装。
1.yum常用命令:
格式:yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled] all全部;enabled激活的仓库(默认);disabled未激活的仓库
显示程序包:
yum list 等同yum list all列出全部程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list available|installed|updates [glob_exp1] [...]; available可用的;installed已安装的;updates可更新的
显示的结果: base 未安装的包,来自于base
epel 未安装的包,来自于epel
@base 该包已经安装,且是从base安装的
@anaconda 该包已经安装,且是从操作系统的安装程序anaconda安装的
安装程序包:
yum install package1 [package2] [...] (-y 自动应答为yes)
yum reinstall package1 [package2] [...] (重新安装)
升级程序包:
yum update [package1] [package2] [...]
yum downgrade [package1] [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包
yum remove | erase [package1] [package2] [...]
查看程序包information:
yum info [package]
查看指定的特性(可以是某文件)是由哪个程序包所提供,可以是未安装的包:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]默认all
构建缓存:
yum makecac()
搜索以指定的关键字搜索程序包名及summary信息可以模糊搜索:
yum search string1 [string2] [...]
查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
查看yum事务历史:
yum history 显示所有的yum历史
yum history [info|list|packages-list|packages-info|
info # 查看某条历史的详细信息,#代表数字用来指定某条历史
redo # 重做某条历史
undo # 撤消某条历史
日志 :/var/log/yum.l
包组管理的相关命令:
yum groupinstall group1 [group2] [...] 安装包组
yum groupupdate group1 [group2] [...] 升级包组
yum grouplist [hidden] [groupwildcard] [...] 列出包所有组
yum groupremove group1 [group2] [...] 删除包组
yum groupinfo group1 [...] 查看指定包组中含有那些包
2. yum仓库的配置
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID] 仓库的真实名字不可重复
name=Some name for this repository 仓库的描述,可以不写,将会用repoid当作name
baseurl=url://path/to/repository/ 仓库路径
enabled=1|0 激活或禁用仓库,若不写该行,则默认启用
gpgcheck=1|0 是否在安装包是检测gpg签名,默认检测,即为1
gpgkey=URL 指定gpg key的路径
enablegroups=1|0
failovermethod=roundrobin|priority
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
三. dnf
dnf是新一代的RPM软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,他取代了YUM,正式成为 Fedora 22 的包管理器。DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。
DNF 发行日期是2015年5月11日。 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Pathon 编写,发行许可为GPL v2
dnf的安装可直接使用yum install dnf来安装
关于dnf的使用,dnf继承了yum的命令,使用方法同yum相同
linux之网络管理虚拟网卡
Linux之网络管理(2)虚拟网卡在linux中,默认的内核模块中包含了很多与网络相关的组件和工具,来提供对网络的管理和设置。同样,linux中也是支持虚拟网卡的设置,已经多网卡绑定等功能。在网卡不够用的情况下,想用多个不同... 查看详情
建造工具
...内核完全注释0.11修正版V3.0》Linux内核源代码中的tools目录中包含一个生成内核磁盘映像文件的工具程序build.c,该程序将单独编译成可执行文件,在linux/目录下的Makefile文件被调用运行,用于将所有内核编译代码链接和合并成一个... 查看详情
linux下的crontab定时任务工具
...s-ef|grepcron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“crontable”的简写。一、cron服务 cron是一个linux下的定 查看详情
不能在 Linux 的 Matlab 中包含 OpenCV 函数
】不能在Linux的Matlab中包含OpenCV函数【英文标题】:Can\'tincludeOpenCVfunctionsinMatlabinLinux【发布时间】:2014-10-2518:12:39【问题描述】:我有一个.cpp,我正在尝试在Ubuntu14.04中使用MATLABR2011a进行混合。该文件使用了一些OpenCV函数并导入... 查看详情
linux输出文件中包含某个字符串的行数(代码片段)
1、linux输出文件中包含某个字符串的行数命令:grep‘需要查询的字符串’文件名[root@localhostxz]$grep'WARN'test.log 查看详情
在 linux 下的 c++ 程序中包含 amp.h 库
】在linux下的c++程序中包含amp.h库【英文标题】:includetheamp.hlibinac++programmunderlinux【发布时间】:2016-11-2508:57:34【问题描述】:我想在我在Linux上编程和运行的c++程序中使用amp.h库;所以我尝试将amp.h库包含在一个空的.cpp文件中,... 查看详情
linux软件管理方式(代码片段)
...RPM包命令#rpm-Uvhpackage.rpm卸载RPM包命令rpm-evpackage查询RPM包中包含的文件列表命令rpm-qlppackage查询RPM包中包含的内容信息命令#rpm-qippackage查询系统 查看详情
在 iOS 的工具栏中包含 UISearchBar
】在iOS的工具栏中包含UISearchBar【英文标题】:IncludingUISearchBarintoolbariniOS【发布时间】:2013-02-2510:48:52【问题描述】:我正在尝试将UISearchBar放在.xib文件中的工具栏上。我可以将搜索栏拖放到工具栏上,但它显示以下错误。Contro... 查看详情
WordPress 是不是在管理页面中包含 jQuery?
】WordPress是不是在管理页面中包含jQuery?【英文标题】:DoesWordPressincludejQueryinadminpages?WordPress是否在管理页面中包含jQuery?【发布时间】:2015-02-0608:17:54【问题描述】:我正在为WordPress开发一个插件。对于插件的设置页面,假设... 查看详情
C# 在工具箱中包含派生控件
】C#在工具箱中包含派生控件【英文标题】:C#IncludeDerivedControlinToolbox【发布时间】:2010-09-0604:16:29【问题描述】:这是参考我的另一个问题AutoClearingTextbox。如果我选择从TextBox派生一个新的TextBox控件,而不是实现一个只包含我... 查看详情
批量重命名文件以在 linux 中包含文件夹/目录名称
】批量重命名文件以在linux中包含文件夹/目录名称【英文标题】:Batchrenamefilestoincludefolder/directorynameinlinux【发布时间】:2013-10-3019:17:19【问题描述】:我需要一些帮助来完成将文件夹文件按顺序重命名为文件夹名称的脚本。我... 查看详情
Django 模板中包含的 Pygal svg 图表的工具提示问题
】Django模板中包含的Pygalsvg图表的工具提示问题【英文标题】:TooltipissuewithPygalsvgchartincludedinDjangotemplate【发布时间】:2017-04-0522:43:01【问题描述】:我在djangohtml模板文件中包含以下内容:%include\'categories_chart.svg\'%但是,当发出... 查看详情
获取Linux中包含500万个文件的目录所占用的总空间的更快方法
】获取Linux中包含500万个文件的目录所占用的总空间的更快方法【英文标题】:Fasterwaytogetthetotalspacetakenbythedirectorycontaining5millionfilesinlinux【发布时间】:2019-11-1608:59:33【问题描述】:我有一个运行linux的目标板,它的目录中有大... 查看详情
php在管理员菜单中包含分隔符(代码片段)
如何让 Linux g++ 正确编译另一个头文件中包含的头文件?
】如何让Linuxg++正确编译另一个头文件中包含的头文件?【英文标题】:HowtoaskLinuxg++tocorrectlycompileheaderfilescontainedwithinanotherheaderfile?【发布时间】:2015-10-0714:53:27【问题描述】:我有一个关于如何修复以下LinuxMakefile代码的问题:... 查看详情
识别 TFS 2015 发布管理中包含的工作项
】识别TFS2015发布管理中包含的工作项【英文标题】:IdentifyingIncludedWorkitemsinTFS2015ReleaseManagement【发布时间】:2016-06-2015:20:46【问题描述】:我正在尝试了解vNext构建和发布管理的流程,以确定包含哪些工作项。如果我在每次签入... 查看详情
使用 Visual Studio 2010 在 dll 项目中包含 Qt 工具
】使用VisualStudio2010在dll项目中包含Qt工具【英文标题】:IncludingQttoolsinadllprojectwithVisualStudio2010【发布时间】:2013-10-2215:02:42【问题描述】:我正在使用VisualStudio2010创建一个dll项目。可以将QLabel、QPushButton和QImage等QWidgets插入dll项... 查看详情
参考termux中包管理命令的伪装修改的arch版包管理命令
#!/data/data/com.termux/files/usr/bin/shset-e-ushow_help(){echo"Thishelpmessageisuseless,pleasereadthecontentof/bin/pacman"exit1}if[$#=0];thenshow_help;fiCMD="$1"shift1case"$CMD"in-h)show_help;;-Sy)ap 查看详情