9-2 yum,dnf和apt
yum,
CentOS: yum, dnf
YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
- yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
- 文件服务器:
yum配置文件
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:意为随机挑选,默认值
- priority:按顺序访问
- cost= 默认为1000
yum仓库
yum的repo配置文件中可用的变量:
- $releasever: 当前OS的发行版的主版本号
- $arch: 平台,i386,i486,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
yum源
阿里云repo文件:
CentOS系统的yum源:
- 阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
- 清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
EPEL的yum源:
阿里巴巴开源软件:
yum-config-manager
- 生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo
yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/7/ - yum-config-manager --disable “仓库名" 禁用仓库
- yum-config-manager --enable “仓库名” 启用仓库
yum命令
yum命令的用法:
- yum [options] [command] [package ...]
显示仓库列表:
- yum repolist [all|enabled|disabled]
显示程序包:
- yum list
- 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 | erase package1 [package2] [...]
升级程序包:
- yum update [package1] [package2] [...]
- yum downgrade package1 [package2] [...] (降级)
检查可用升级:
- yum check-update
卸载程序包:
- yum remove | erase package1 [package2] [...]
查看程序包information:
- yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
- yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
- 清除/var/cache/yum/$basearch/$releasever缓存
- yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
- yum makecache
搜索:
- yum search string1 [string2] [...]
- 以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
- yum deplist package1 [package2] [...]
查看yum事务历史:
- yum history [info|list|packages-list|packages-info|
- summary|addon-info|redo|undo|
- rollback|new|sync|stats]
- yum history
- yum history info 6
- yum history undo 6
日志 :
- /var/log/yum.log
安装及升级本地程序包:
包组管理的相关命令:
- yum groupinstall group1 [group2] [...]
- yum groupupdate group1 [group2] [...]
- yum grouplist [hidden] [groupwildcard] [...]
- yum groupremove group1 [group2] [...]
- yum groupinfo group1 [...]
yum的命令行选项:
- --nogpgcheck:禁止进行gpg check
- -y: 自动回答为“yes”
- -q:静默模式
- --disablerepo=repoidglob:临时禁用此处指定的repo
- --enablerepo=repoidglob:临时启用此处指定的repo
- --noplugins:禁用所有插件
系统仓库yum库
系统安装光盘作为本地yum仓库:
- 挂载光盘至某目录,例如/mnt/cdrom
- mount /dev/cdrom /mnt/cdrom
- 创建配置文件
- [CentOS7]
name=
baseurl=
gpgcheck=
enabled=
- [CentOS7]
创建yum仓库:
- createrepo [options]
DNF(DaNdiFied)
DNF 介绍:新一代的RPM软件包管理器。DNF 发行日期是2015年5月11日,DNF 包管理器采用Python 编写,发行许可为GPL v2,首先出现在Fedora 18 发行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等
下载安装所需软件包,或者利用extras仓库安装:
- wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
- wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-0.6.4-2.sdl7.noarch.rpm
- wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
- wget https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/python2-libcomps-0.1.8-12.el7.x86_64.rpm
- wget https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/libcomps-0.1.8-12.el7.x86_64.rpm
配置文件:
- /etc/dnf/dnf.conf
仓库文件:
- /etc/yum.repos.d/ *.repo
日志:
- /var/log/dnf.rpm.log,/var/log/dnf.log
DNF使用:
- 帮助:
- man dnf
- dnf 用法:与yum一致
- dnf [options] [...]
- dnf --version
- dnf repolist
- dnf install httpd
- dnf remove httpd
- dnf clean all
- dnf makecache
- dnf list installed
- dnf list available
- dnf search nano
- dnf history undo 1
程序包编译
程序包编译安装:
- Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
- 源代码-->预处理-->编译-->汇编-->链接-->执行
- 源代码组织格式:
- 多文件:文件中的代码之间,很可能存在跨文件依赖关系
- C、C++:make 项目管理器
- configure脚本 --> Makefile.in --> Makefile
- java: maven
编译安装:
- C语言源代码编译安装三步骤:
- ./configure
- 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
- 检查依赖到的外部环境,如依赖的软件包
- make 根据Makefile文件,构建应用程序
- make install 复制文件到相应路径
- ./configure
- 开发工具:
- autoconf: 生成configure脚本
- automake:生成Makefile.in
注意:安装前查看README,INSTALL
- 开源程序源代码的获取:
- 官方自建站点:
- apache.org (ASF:Apache Software Foundation)
- mariadb.org
- ...
- 代码托管:
- SourceForge.net
- Github.com
- code.google.com
- 官方自建站点:
c/c++编译器: gcc (GNU C Complier)
- 编译C源代码:
- 准备:提供开发工具及开发环境
- 开发工具:make, gcc等
- 开发环境:开发库,头文件
- glibc:标准库
- 实现:通过“包组”提供开发组件
- Development Tools
- Server Platform Development
- 生产实践:基于最小化安装的系统建议安装下面相关包
- yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc bzip2 zip unzip nfs-utils
- 准备:提供开发工具及开发环境
- 第一步:configure脚本
- 选项:指定安装位置、指定启用的特性
- --help: 获取其支持使用的选项
- 选项分类:
- 安装路径设定:
- --prefix=/PATH:指定默认安装位置,默认为/usr/local/
- --sysconfdir=/PATH:配置文件安装位置
- System types:支持交叉编译
- Optional Features: 可选特性
- --disable-FEATURE
- --enable-FEATURE[=ARG]
- Optional Packages: 可选包
- --with-PACKAGE[=ARG] 依赖包
- --without-PACKAGE 禁用依赖关系
- 注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION
- 第二步:make
第三步:make install
安装后的配置:
- 二进制程序目录导入至PATH环境变量中
- 编辑文件/etc/profile.d/NAME.sh
- export PATH=/PATH/TO/BIN:$PATH
- 编辑文件/etc/profile.d/NAME.sh
- 导入帮助手册
- 编辑/etc/man.config|man_db.conf文件
- 添加一个MANPATH
- 编辑/etc/man.config|man_db.conf文件
ubuntu软件管理
Debian软件包通常为预编译的二进制格式的扩展名“.deb”,类似rpm文件,因此安装快速,无需编译软件。包文件包括特定功能或软件所必需的文件、元数据和指令
dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项
APT:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu的系统,基于客户/服务器架构
APT工作原理:在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在文件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于 /var/cache/apt/,而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已安装、未安装或是可以升级的
dpkg常见用法:
- man dpkg
- dpkg -i package.deb 安装包
- dpkg -r package 删除包,不建议,不自动卸载依赖于它的包
- dpkg -P package 删除包(包括配置文件)
- dpkg -l 列出当前已安装的包,类似rpm -qa
- dpkg -l package 显示该包的简要说明,类似rpm –qi
- dpkg -L package 列出该包中所包含的文件,类似rpm –ql
- dpkg -S 搜索包含pattern的包,类似rpm –qf
- dpkg -s package 列出该包的状态,包括详细信息,类似rpm –qi
- dpkg --configure package 配置包,-a 使用,配置所有没有配置的软件包
- dpkg -c package.deb 列出 deb 包的内容,类似rpm –qpl
- dpkg --unpack package.deb 解开 deb 包的内容
dpkg示例:
- 列出系统上安装的所有软件包
- dpkg -l
- 列出软件包安装的文件
- dpkg -L bash
- 查看/bin/bash来自于哪个软件包
- dpkg -S /bin/bash
- 安装本地的 .deb 文件
- dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb
- 卸载软件包
- dpkg -r zip
- 注意:一般建议不要使用dpkg卸载软件包。因为删除包时,其它依赖它的包不会卸载,并且可能无法再正常运行
Debian 使用APT工具来管理包系统,它与 apt 命令不同。在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUI 兼顾的工具是 aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令中
在 2014 年apt 命令发布第一个稳定版,Ubuntu 16.04 引入新特性之一便是 apt 命令,apt 命令解决了命令过于分散的问题,它包括 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,提供管理软件包所需的必要选项
apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合
apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。此外,启用的几个特性也非常有帮助。例如:可以在使用 apt 命令安装或删除程序时看到进度条,apt 还会在更新存储库数据库时提示用户可升级的软件包个数
apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即可用 apt 替换部分 apt-get 系列命令,但不是全部
查看帮助:apt help
apt与apt-get命令对比:
- apt 命令 被取代的命令 命令的功能
- apt install apt-get install 安装软件包
- apt remove apt-get remove 移除软件包
- apt purge apt-get purge 移除软件包及配置文件
- apt update apt-get update 刷新存储库索引
- apt upgrade apt-get upgrade 升级所有可升级的软件包
- apt autoremove apt-get autoremove 自动删除不需要的包
- apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
- apt search apt-cache search 搜索应用程序
- apt show apt-cache show 显示安装细节
apt 特有的命令
- apt list 列出包含条件的包(已安装,可升级等)
- apt edit-sources 编辑源列表
APT包索引来自/etc/apt/sources.list文件和/etc/apt/sources.list.d目录中定义的存储库的可用包的数据库。要使用存储库中所做的最新更改来更新本地程序包索引
apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文件中
apt示例:
- 安装包:
- apt install tree zip
- 删除包:
- apt remove tree zip
- 说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用
- 更新包索引:
- apt update
- 升级包:要升级系统,请首先更新软件包索引,再升级
- apt upgrade
9-2 yum,dnf和apt的更多相关文章
- ansible通过yum/dnf模块给受控机安装软件(ansible2.9.5)
一,使用yum/dnf模块要注意的地方: 使用dnf软件安装/卸载时,需要有root权限, 所以要使用become参数 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnb ...
- CentOS8 yum/dnf 配置国内源
CentOS8 yum/dnf 配置国内源(临时) CentOS 8更改了软件包的安装程序,取消了 yum 的配置方法,改而使用了dnf 作为安装程序.虽然改变了软件包的安装方式,但是 dnf 还是能 ...
- yum/dnf/rpm 等 查看rpm 包安装路径 (fedora 中 pygtk 包内容安装到哪里了)
有时候我们 使用 包管理工具,安装很方便,但我们还要能知道它们安装了什么文件,都把这些文件安装到哪里了? 我们以探究 pygtk 为例 在 fedora 28 之中 查找 pygtk: ➜ ~ rpm ...
- guestfs-python 手册
Help on module guestfs: NAME guestfs - Python bindings for libguestfs FILE /usr/lib64/python2.7/site ...
- yum或apt基本源设置指南
关于: 管理Linux服务器的运维或开发人员经常需要安装软件,最常用方式应该是通过Linux系统提供的包管理工具来在线安装,比如centos的yum,ubuntu或debian的apt-get.当然这 ...
- 关于Ubuntu下apt的一些用法及和yum的比较
Fedora和Red Hat有yum安装软件,Ubuntu有apt工具. apt简单的来说,就是给Ubuntu安装软件的一种命令方式. 一.apt的相关文件 /etc/apt/sources.list ...
- yum 与 apt 的对比
一.概念 使用yum/apt之前,你很可能会遇到配置源(ubuntu下一般内置的就比较好,所以可能很少人手动配置),那这个源是什么呢,就是告诉apt/yum,安装软件的时候你要从哪里下载.比如你使用1 ...
- yum与apt命令比较,yum安装出现No package vim available解决办法
yum (Yellowdog Updater Modified)是一个集与查找,安装,更新和删除程序的Linux软件.它运行在RPM包兼容的Linux发行版本上,如:RedHat, Fedora, S ...
- ubuntn下 apt的用法和yum的比较(转)
centos有yum安装软件,Ubuntu有apt工具. apt简单的来说,就是给Ubuntu安装软件的一种命令方式. 一.apt的相关文件 /etc/apt/sources.list 设置软件包的获 ...
随机推荐
- Vue入门(一)——环境搭建
1.参考该教程装vue脚手架和创建工程 https://segmentfault.com/a/1190000008922234 附:在每个工程下cmd,执行npm install,此时工程下会多一个n ...
- P5650 基础字符串练习题
设定'0'权值为1,设定'1'权值为-1 然后就是最大子段和 #include <cstdio> #include <algorithm> #include <cstri ...
- Python 读取txt文件,排序并写回文件
# 'C:\Users\SAM\Desktop\数据竞赛\个人征信_1108\个人征信\train\bank_detail_train.txt'# 反斜杠的写法会报编码错误f=open('C:/Use ...
- ubuntu nginx 启动多个Django项目
1.将 /etc/nginx/sites-enabled/ 目录下的nginx默认配置文件default,重命名,例如:default1 2.给每个Django项目添加nginx.conf配置文件,建 ...
- 【转】css样式的书写顺序及原理——很重要!
记得刚开始学习前端的时候,每次写css样式都是用到什么就在样式表后添加什么,完全没有考虑到样式属性的书写顺序对网页加载代码的影响.后来逐渐才知道正确的样式顺序不仅易于查看,并且也属于css样式优化的一 ...
- triggerHandler(type, [data])
triggerHandler(type, [data]) 概述 这个特别的方法将会触发指定的事件类型上所有绑定的处理函数.但不会执行浏览器默认动作,也不会产生事件冒泡. 大理石平台价格 这个方法的行为 ...
- [Luogu] trip
https://www.luogu.org/problemnew/show/T28848#sub #include <iostream> #include <cstdio> u ...
- 转:后置处理器JSON Extractor 提取json的多个值
json串 []表示对象组成的数组,{}表示对象. 对象里包含多个 "属性":属性值.属性值可以是值,或数组,或对象. JSON Extractor使用json path表达式匹配 ...
- 简易的学生成绩管理系统(C++实现)
最近浅显的学习了C++的基础知识,想来练练手,于是就用单链表写了最经典的小项目,存粹学习,所以就在控制台下写了,写的有点简陋,码了大概400多行. 下面上代码: #include <cstdli ...
- [笔记]C++声明返回数组指针的函数
数组指针的声明:type (*name)[size]; 由于数组不能拷贝,所以函数不能返回数组.但是函数可以返回指针和引用,所以函数可以返回数组指针或引用. 和数组指针的声明类似: type (*fu ...