一、yum安装使用:
yum: 解决 rpm 依赖的问题
1 、Yum:rpm的前端程序,用来解决软件包相关依赖性。
2、yum repository:yum仓库,存储了众多rpm包,以及包的相关的元数据文件
(放置于特定目录repodata下)
3、yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID] 仓库ID
name=Some name for this repository 仓库名
baseurl=url:// 仓库路径
enabled={1|0} 是都启用此仓库,0表示不启用,1表示启用
gpgcheck={1|0} 是否开启包校验,1表示开启,0不开启
gpgkey=URL 校验文件的路径
配置好的文件后,做更新准备
yum clean all 清理本地缓存
yum makecache 构建本地缓存
4、yum-config-manager的使用:
(1)yum-config-manager的安装:
A、该命令在最小化安装的系统上是没有的,需要安装yum-utils-1.1.31-34.el7.noarch.rpm这个RPM包,如果是光盘安装,需要另外安装两个依赖包:python-chardet.noarch 0:2.2.1-1.el7_1 、python-kitchen.noarch 0:1.1.1-5.el7;也可以通过网络安装或者本地的YUM仓库安装,命令为:yum localinstall yum-utils-1.1.31-34.el7.noarch.rpm;
B、如果是yum安装,直接执行# yum install yum-utils -y
(2)yum-config-manager的选项使用:
yum-config-manager –add-repo=“仓库路径” #添加仓库
yum-config-manager –disable “仓库名" #禁用仓库
yum-config-manager –enable “仓库名” #启用仓库
5、yum的命令使用:
(1) yum repolist (显示仓库列表)
(2)yum list (显示仓库的所有程序包)或者yum list all (显示仓库的所有程序包和系统已安装的程序包)
(3) yum install (程序安装);yum reinstall(程序重新安装)
(4)yum update (程序升级);yum downgrade (程序降级)
(5)yum check-update (检查可升级)
(6)yum remove (卸载程序)
(7)yum info (查看程序的详细信息)
(8)yum provides (查看程序包由哪些程序提供)
(9)yum search (搜索程序包名,属于模糊搜索)
(10)yum replist (查看程序的依赖程序)
(11)yum history (查看yum安装的历史)
(12)yum history info 6
(13)yum history undo 7 (相当于把历史文件里面的卸载步骤给取消,即为安装。)
yum的命令行选项:只能单一次安装,不能够同时启动多个安装命令
–nogpgcheck:禁止进行gpgcheck
-y: 自动回答为“yes”
-q:静默模式
–disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件
二、本地包和包组的使用:
1、安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] […]
(用install替代)
yum localupdate rpmfile1 [rpmfile2] […]
(用update替代)
2、包组管理的相关命令:
yum groupinstall group1 [group2] […] 安装包组
yum groupupdate group1 [group2] […] 升级包组
yum grouplist [hidden] [groupwildcard] […] 查看包组情况(含安装与未安装)[hidden]为查看隐藏包组
yum groupremove group1 [group2] […] 删除包组
yum groupinfo group1 […] 包组信息页内容查看
三、如何使用本地光盘作为YUM仓库:
1、光盘挂载:
mount /dev/cd0 /mnt/cd0 (手动挂载,机器重启就丢失)
Centos6上autofs自动挂载:/misc/cd (访问即刻挂载上去)
2、创建本地配置文件:
[cd](自己命名)
此处,建议优先使用这路径:baseurl=file:///misc/cd
gpgcheck=0
3、创建yum仓库:
createrepo [options] <directory>
二、程序包编译
1、程序包编译安装:
(1)Application-VERSION-release.src.rpm–> 安装后,
使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
(2)源代码–>预处理–>编译–>汇编–>链接–>执行
?源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系
C、C++:make (项目管理器,configure –>
Makefile.in –> makefile)
c/c++编译器: gcc
java: maven
(3) 开发工具:
编译C源代码:
准备:提供开发工具及开发环境
开发工具:make, gcc等
开发环境:开发库,头文件
glibc:标准库
实现:通过“包组”提供开发组件
(这里提供的是全部安装,若无需求可自行单个安装)
CentOS 6:
Development Tools
Server Platform Development
CentOS 7:
Development Tools
Development and Creative Workstation
(4)安装步骤:(以下三个步骤必须在解压的源码目录下执行)
第一步:configure脚本
选项:指定安装位置、指定启用的特性
–help: 获取其支持使用的选项
选项分类:
安装路径设定:
–prefix=/PATH: 指定默认安装位置,默认为/usr/local/
–sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
Optional Features: 可选特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可选包,
–with-PACKAGE[=ARG],依赖包
–without-PACKAGE,禁用依赖关系
通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
autoconf: 生成configure脚本
automake:生成Makefile.in
注意:安装前查看INSTALL,README
第二步:make 根据makefile文件,构建应用程序
第三步:make install 复制文件到相应路径
安装向导:
(1)先从本地ftp服务器上下载源码包
(2)使用命令#tar xvf httpd-2.2.29.tar.bz2
(3)解压完成后,进入源码解压目录下
(4)执行前,先ls看看/usr/local目录下是否存在同名的目录;执行命令# ./configure
–prefix=/usr/local/httpd –sysconfdir=/etc/httpd,
指定了安装的目录和配置文件存放目录
(5)生成了Makefile文件,并没有报错,这说明前面的步骤正确。
(6)至此,可以开始编译;#make 和 make install 可以分开执行。
(7)完美编译安装完成
DNF
新一代的RPM软件包管理器
补充说明
DNF 是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。
DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。你可以在这里获得关于 DNF 的更多知识:《 DNF 代替 YUM ,你所不知道的缘由》
DNF 的最新稳定发行版版本号是 1.0,发行日期是2015年5月11日。 这一版本的额 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Python 编写,发行许可为GPL v2.
安装 DNF 包管理器
DNF 并未默认安装在 RHEL 或 CentOS 7系统中,但是 Fedora 22 已经默认使用 DNF .
1、为了安装 DNF ,您必须先安装并启用 epel-release 依赖。
在系统中执行以下命令:
yum install epel-release
或者
yum install epel-release -y
其实这里并没有强制使用”-y”的理由,相反的,在不使用”-y”的情况下,用户可以在安装过程中查看到底有哪些东西被安装进了系统。但对于没有这个需求的用户,您可以在 YUM 中使用”-y”参数来自动安装所有东西。
2、使用 epel-release 依赖中的 YUM 命令来安装 DNF 包。在系统中执行以下命令:
yum install dnf
然后, DNF 包管理器就被成功的安装到你的系统中了。接下来,是时候开始我们的教程了!在这个教程中,您将会学到27个用于 DNF 包管理器的命令。使用这些命令,你可以方便有效的管理您系统中的 RPM 软件包。现在,让我们开始学习 DNF 包管理器的27条常用命令吧!
查看 DNF 包管理器版本
用处:该命令用于查看安装在您系统中的 DNF 包管理器的版本
dnf –version
!Check-DNF-Version
查看系统中可用的 DNF 软件库
用处:该命令用于显示系统中可用的 DNF 软件库
dnf repolist
查看系统中可用和不可用的所有的 DNF 软件库
用处:该命令用于显示系统中可用和不可用的所有的 DNF 软件库
dnf repolist all
列出所有 RPM 包
用处:该命令用于列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
dnf list
列出所有安装了的 RPM 包
用处:该命令用于列出所有安装了的 RPM 包
dnf list installed
列出所有可供安装的 RPM 包
用处:该命令用于列出来自所有可用软件库的可供安装的软件包
dnf list available
搜索软件库中的 RPM 包
用处:当你不知道你想要安装的软件的准确名称时,你可以用该命令来搜索软件包。你需要在”search”参数后面键入软件的部分名称来搜索。(在本例中我们使用”nano”)
dnf search nano
查找某一文件的提供者
用处:当你想要查看是哪个软件包提供了系统中的某一文件时,你可以使用这条命令。(在本例中,我们将查找”/bin/bash”这个文件的提供者)
dnf provides /bin/bash
查看软件包详情
用处:当你想在安装某一个软件包之前查看它的详细信息时,这条命令可以帮到你。(在本例中,我们将查看”nano”这一软件包的详细信息)
dnf info nano
安装软件包
用处:使用该命令,系统将会自动安装对应的软件及其所需的所有依赖(在本例中,我们将用该命令安装nano软件)
dnf install nano
升级软件包
用处:该命令用于升级制定软件包(在本例中,我们将用命令升级”systemd”这一软件包)
dnf update systemd
检查系统软件包的更新
用处:该命令用于检查系统中所有软件包的更新
dnf check-update
升级所有系统软件包
用处:该命令用于升级系统中所有有可用升级的软件包
dnf update 或 dnf upgrade
删除软件包
用处:删除系统中指定的软件包(在本例中我们将使用命令删除”nano”这一软件包)
dnf remove nano 或 dnf erase nano
删除无用孤立的软件包
用处:当没有软件再依赖它们时,某一些用于解决特定软件依赖的软件包将会变得没有存在的意义,该命令就是用来自动移除这些没用的孤立软件包。
dnf autoremove
删除缓存的无用软件包
用处:在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。
dnf clean all
获取有关某条命令的使用帮助
用处:该命令用于获取有关某条命令的使用帮助(包括可用于该命令的参数和该命令的用途说明)(本例中我们将使用命令获取有关命令”clean”的使用帮助)
dnf help clean
查看所有的 DNF 命令及其用途
用处:该命令用于列出所有的 DNF 命令及其用途
dnf help
查看 DNF 命令的执行历史
用处:您可以使用该命令来查看您系统上 DNF 命令的执行历史。通过这个手段您可以知道在自您使用 DNF 开始有什么软件被安装和卸载。
dnf history
查看所有的软件包组
用处:该命令用于列出所有的软件包组
dnf grouplist
安装一个软件包组
用处:该命令用于安装一个软件包组(本例中,我们将用命令安装”Educational Software”这个软件包组)
dnf groupinstall ‘Educational Software’
升级一个软件包组中的软件包
用处:该命令用于升级一个软件包组中的软件包(本例中,我们将用命令升级”Educational Software”这个软件包组中的软件)
dnf groupupdate ‘Educational Software’
删除一个软件包组
用处:该命令用于删除一个软件包组(本例中,我们将用命令删除”Educational Software”这个软件包组)
dnf groupremove ‘Educational Software’
从特定的软件包库安装特定的软件
用处:该命令用于从特定的软件包库安装特定的软件(本例中我们将使用命令从软件包库 epel 中安装 phpmyadmin 软件包)
dnf –enablerepo=epel install phpmyadmin
更新软件包到最新的稳定发行版
用处:该命令可以通过所有可用的软件源将已经安装的所有软件包更新到最新的稳定发行版
dnf distro-sync
重新安装特定软件包
用处:该命令用于重新安装特定软件包(本例中,我们将使用命令重新安装”nano”这个软件包)
dnf reinstall nano
回滚某个特定软件的版本
用处:该命令用于降低特定软件包的版本(如果可能的话)(本例中,我们将使用命令降低”acpid”这个软件包的版本)
dnf downgrade acpid
样例输出:
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.
总结
DNF 包管理器作为 YUM 包管理器的升级替代品,它能自动完成更多的操作。但在我看来,正因如此,所以 DNF 包管理器不会太受那些经验老道的 Linux 系统管理者的欢迎。举例如下:
在 DNF 中没有 –skip-broken 命令,并且没有替代命令供选择。
在 DNF 中没有判断哪个包提供了指定依赖的 resolvedep 命令。
在 DNF 中没有用来列出某个软件依赖包的 deplist 命令。
当你在 DNF 中排除了某个软件库,那么该操作将会影响到你之后所有的操作,不像在 YUM 下那样,你的排除操作只会咋升级和安装软件时才起作用。