标签 DNF 下的文章

Ubuntu 17.04 (Zesty Zapus) 将使用交换文件来代替 Swap 分区

Canonical 的软件工程师 Dimitri John Ledkov 最近宣布即将发布的 Ubuntu Linux 系统安装时将丢弃 Swap 分区方式,改为交换文件方式。

对我们中的大多数使用带 SSD 或 NVMe 闪盘及内存充足的人来说,这不是什么大新闻。不过那些想要将 Ubuntu 后续版本安装在 10 多年前 PC 上的人们来说,可能会对此感兴趣。

多年前,全新安装 GNU/Linux 时创建 Swap 分区是强制要求的,但随着科技进步而发生了变化。现在即使最廉价的电脑也至少 4G 内存,对于办公和基本计算来说已经足够。

如今如果您个人电脑有 2GB 到 4GB 物理内存,就不需要 Swap 分区。 即使你创建了一个,也可能根本用不上,这也是 Canonical 决定 Ubuntu 新安装时放弃 Swap 分区的原因。

Canonical 目前在开发 Ubuntu 17.04 ,也称为 Zesty Zapus, 预计 2017 年 4 月 13 日发布。

“从 17.04 Zesty Zapus 版本之后,非 LVM 的安装将默认使用交换文件而不是创建 Swap 分区,” Dimitri John Ledkov 说到。 “另外,交换文件的大小可以有很大差异。” Canonical 确保用户可以完全控制他们的安装,如果他们不想使用 Swap,可以将参数值设为 0。不过,这些改变不适用于使用 LVM 选项安装 Ubuntu。

改变将在 Ubuntu 17.04 (Zesty Zapus) 及以后版本中进行。

Fedora 项目组发布 DNF 2.0.0 包管理器

DNF-PLUGINS-CORE 1.0.0 也一并发布。

Fedora 开发人员 Michael Mráka 于 2016 年 12 月 20 日宣布,Fedora Linux 上 DNF 2.0.0 包管理器正式发布。

经历两个半月的开发之后,DNF 2.0.0 和 DNF-PLUGINS-CORE 1.0.0 进入 Fedora 25 的稳定仓库, 为用户基于 RPM 的 Linux 版本提供下一代包管理系统和插件。

不过,DNF 2.0.0 与 DNF-1 系列尚不完全兼容。因此,建议在尝试更新到 DNF 2.0 前,阅读下 DNF-1 和 DNF-2 的不兼容列表

KDE 发布管理 Systemd 和 用户单元的图形化工具:SystemdGenie

KDE 开发人员 Ragnar Thomsen 高兴的宣布,一个用于 KDE Plasma 桌面上的称为 SystemdGenie 的新工具,现已可用。它用于帮助管理 systemd 和 用户单元 user unit 。从下面截图中可以看到,SystemdGenie 是一个全功能的应用,为想要对systemd及用户单元,以及 logind 会话完全控制的高级用户开发。目前,该工具大部分功能与 systemd-kcm 相同。

SystemdGenie 的第一个开发发布版本为 0.99.0, 这是一个预发布版本,可能会有 bug 存在。试用过程中如发现任何问题,请向开发团队报告。

KDE 分区管理器 3.0.0 支持 LVM on LUKS 和 LUKS on LVM 配置

KDE 开发人员 Andrius Štikonas 最近宣布 KDE 分区管理器的一个新的里程碑版本发布,用于 KDE Plasma 桌面的开源分区编辑工具。

作为一个大的发布版本,KDE Partition Manager 3.0 包含了一些令人兴奋的新功能,例如支持 LVM on LUKS 和 LUKS on LVM 配置, 还支持 LVM Logical Volumes (LV)大小更改。

详情请参见 Andrius Štikonas 的发布公告

Wine-Staging 2.0 让 Linux 用户可以玩 Doom 2016,并带 Vulkan 支持

RC2版本目前在公测中。

2016 年 12 月 21 日,Wine-Stating 项目开发团队宣布 Wine-Stating 2.0 的 RC2 版本现已可用。

除了支持 DOOM 2016 with Vulkan 外,此版本还有其他新功能,例如对 Mono 引擎进行了大量 bug 修复,并更新了补丁包。可以从这里下载 Wine-Staging 2.0 RC2 ,尤其是如果你梦想在你的 GNU/Linux 系统上玩 DOOM 2016 的话。

Linux 4.8 内核发布

Linux 4.8 内核发布

10 月 2 日,经过了两个月的开发,发布了 8 个 RC 版本后,Linus Torvalds 宣布 Linux 4.8 内核正式发布。Linux 4.8 内核会很快随着各个发行版的更新推送给 Linux 用户们,而即将发布的 Ubuntu 16.10 应该是第一个使用最新的 4.8 内核的主流发行版。

此外随着 4.8 的发布,同时也开启了 4.9 的合并窗口——宣告了 4.9 的开发开始。

不过,两天后,Linus 为新发布的 4.8 内核中包含的 bug 进行了道歉。该 bug 由内核开发者 Andrew Morton 引入到 4.8 发布前的最后一个 RC 版本当中,当编译这部分代码时会导致问题,从而编译出来的是一个死内核。显然, 为了应对这个问题,4.8.1 会很快发布。

Ubuntu 16.10 终于支持可选 Unity 8 会话了

可选的 Unity 8 会话

即将在下周发布的 Ubuntu 16.10 发布了最后一个 Beta 版本,在这个版本中,Canonical 之前就说的要把 Unity 8 会话作为可选会话的承诺终于实现了。不过目前 Unity 8 仍然是一个试验性的会话,所以,仅供体验尝鲜。

此外,如上面说的,在这个最终 Beta 版本中,也使用了 Linux 4.8 内核。

DNF 达到 2.0 里程碑

Fedora Linux 的 dnf 软件包管理器发布了 2.0.0 版本,它出现在了 Fedora 的开发版本 Fedora Rawhide 之中,结束了 dnf 1.1 系列。

你可以看看 dnf 2.0.0 的发布公告,但是由于和 1.x 的部分不兼容性,所以看起来不大可能会出现在 Fedora 25 之中。

此外,最近两天 Fedora 24 的 dnf 更新出现了严重错误,在该问题解决前,请勿在桌面环境中执行 dnf update 命令。详见:Fedora 24 的用户,千万不要在桌面里运行 dnf update

KDE 5.8 LTS 发布

在 KDE 赢来 20 周年之际,KDE 开发团队宣布了 KDE 5.8 LTS 正式发布,这是官方认可的第一个长期支持版本,会一直支持到 2018 年。详见: KDE 庆祝 20 岁生日,发布了首个 LTS 版本: KDE 5.8

前几天,Fedora 项目组的 Adam Williamson 发布一则服务公告(PSA),提醒 Fedora 社区在内部更新过程中出现了严重问题!

许多 Fedora 24 的用户报告称,从 4 日起,当他们在桌面中运行 dnf update 命令,通过官方软件仓库更新软件时会遇到 “duplicated packages” 和 “kernel updates not working” 等错误。

经过一些调查,Williamson 得出结论在 dnf update 过程中存在一个 bug,会导致图形界面,比如 GNOME 或 KDE,甚至整个 X Window 系统(X11)崩溃,但是这与用户的硬件配置和安装的软件有关。

“当崩溃发生时,更新进程会被杀死以至于不能完整结束,这就是为什么会得到 ‘duplicated packages’ 或其它的奇怪错误的原因”,Adam Williamson 说,“我在努力和报告者配合调查原因,希望能够解决它,但是,此刻,不要在桌面里面运行 dnf update !

所以,如果你正在使用 Fedora 24 操作系统,当你在使用 KDE、GNOME、Xfce 等桌面环境时,千万不要执行 dnf update 命令。你可以通过按下 Ctrl+Alt+F3 切换到文本模式来执行它,或者使用离线更新系统。

截止到现在,该 bug 仍无修复完成的通知。

一个 Linux 新用户应该知道他或她的进步源自于对 Linux 发行版的使用,而 Linux 发行版有好几种,并以不同的方式管理软件包。

在 Linux 中,包管理器非常重要,知道如何使用多种包管理器可以让你像一个高手一样活得很舒适,从在仓库下载软件、安装软件,到更新软件、处理依赖和删除软件是非常重要的,这也是Linux 系统管理的一个重要部分。

最好的Linux包管理器

成为一个 Linux 高手的一个标志是了解主要的 Linux 发行版如何处理包,在这篇文章中,我们应该看一些你在 Linux 上能找到的最佳的包管理器,

在这里,我们的主要重点是关于一些最佳包管理器的相关信息,但不是如何使用它们,这些留给你亲自发现。但我会提供一些有意义的链接,使用指南或更多。

1. DPKG - Debian 包管理系统 Debian Package Management System

Dpkg 是 Debian Linux 家族的基础包管理系统,它用于安装、删除、存储和提供.deb包的信息。

这是一个低层面的工具,并且有多个前端工具可以帮助用户从远程的仓库获取包,或处理复杂的包关系的工具,包括如下:

APT ( 高级打包工具 Advanced Packaging Tool )

这个是一个 dpkg 包管理系统的前端工具,它是一个非常受欢迎的、自由而强大的,有用的命令行包管理器系统。

Debian 及其衍生版,例如 Ubuntu 和 Linux Mint 的用户应该非常熟悉这个包管理工具。

想要了解它是如何工作的,你可以去看看下面这些 HOW TO 指南:

Aptitude 包管理器

这个也是 Debian Linux 家族一个非常出名的命令行前端包管理工具,它工作方式类似 APT ,它们之间有很多可以比较的地方,不过,你应该两个都试试才知道哪个工作的更好。

它最初为 Debian 及其衍生版设计的,但是现在它的功能延伸到 RHEL 家族。你可以参考这个指南了解更多关于 APT 和 Aptitude。

Synaptic 包管理器

Synaptic是一个基于GTK+的APT的可视化包管理器,对于一些不想使用命令行的用户,它非常好用。

2. RPM - 红帽包管理器 Red Hat Package Manager

这个是红帽创建的 Linux 基本标准(LSB)打包格式和基础包管理系统。基于这个底层系统,有多个前端包管理工具可供你使用,但我们应该只看那些最好的,那就是:

YUM ( 黄狗更新器,修改版 Yellowdog Updater, Modified

这个是一个开源、流行的命令行包管理器,它是用户使用 RPM 的界面(之一)。你可以把它和 Debian Linux 系统中的 APT 进行对比,它和 APT 拥有相同的功能。你可以从这个 HOW TO 指南中的例子更加清晰的理解YUM:

DNF( 优美的 Yum Dandified Yum

这个也是一个用于基于 RPM 的发行版的包管理器,Fedora 18 引入了它,它是下一代 YUM。

如果你用 Fedora 22 及更新版本,你肯定知道它是默认的包管理器。这里有一些链接,将为你提供更多关于 DNF 的信息和如何使用它。

3. Pacman 包管理器 – Arch Linux

这个是一个流行的、强大而易用的包管理器,它用于 Arch Linux 和其他的一些小众发行版。它提供了一些其他包管理器提供的基本功能,包括安装、自动解决依赖关系、升级、卸载和降级软件。

但是最大的用处是,它为 Arch 用户创建了一个简单易用的包管理方式。你可以阅读 Pacman 概览,它会解释上面提到的一些功能。

4. Zypper 包管理器 – openSUSE

这个是一个使用 libzypp 库制作的用于 OpenSUSE 系统上的命令行包管理器,它的常用功能包括访问仓库、安装包、解决依赖问题和其他功能。

更重要的是,它也可以支持存储库扩展功能,如模式、补丁和产品。新的 OpenSUSE 用户可以参考下面的链接来掌控它。

5. Portage 包管理器 – Gentoo

这个是 Gentoo 的包管理器,当下不怎么流行的一个发行版,但是这并不阻止它成为 Linux 下最好的软件包管理器之一。

Portage 项目的主要目标是创建一个简单、无故障的包管理系统,包含向后兼容、自动化等功能。

如果希望理解的更清晰,可以看下: Portage 项目页

结束语

正如我在开始时提到的,这个指南的主要意图是给 Linux 用户提供一个最佳软件包管理器的列表,但知道如何使用它们可以通过其后提供的重要的链接,并实际去试试它们。

各个发行版的用户需要学习超出他们的发行版之外的一些东西,才能更好理解上述提到的这些不同的包管理器。


via: http://www.tecmint.com/linux-package-managers/

作者:Ravi Saive 译者:Bestony 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Shilpa Nair 刚于2015年毕业。她之后去了一家位于 Noida,Delhi 的国家新闻电视台,应聘实习生的岗位。在她去年毕业季的时候,常逛 Tecmint 寻求作业上的帮助。从那时开始,她就常去 Tecmint。

Linux Interview Questions on RPM

有关 RPM 方面的 Linux 面试题

所有的问题和回答都是 Shilpa Nair 根据回忆重写的。

“大家好!我是来自 Delhi 的Shilpa Nair。我不久前才顺利毕业,正寻找一个实习的机会。在大学早期的时候,我就对 UNIX 十分喜爱,所以我也希望这个机会能适合我,满足我的兴趣。我被提问了很多问题,大部分都是关于 RedHat 包管理的基础问题。”

下面就是我被问到的问题,和对应的回答。我仅贴出了与 RedHat GNU/Linux 包管理相关的,也是主要被提问的。

1,Linux 里如何查找一个包安装与否?假设你需要确认 ‘nano’ 有没有安装,你怎么做?

回答:为了确认 nano 软件包有没有安装,我们可以使用 rpm 命令,配合 -q 和 -a 选项来查询所有已安装的包

# rpm -qa nano
或
# rpm -qa | grep -i nano

nano-2.3.1-10.el7.x86_64

同时包的名字必须是完整的,不完整的包名会返回到提示符,不打印任何东西,就是说这包(包名字不全)未安装。下面的例子会更好理解些:

我们通常使用 vim 替代 vi 命令。当时如果我们查找安装包 vi/vim 的时候,我们就会看到标准输出上没有任何结果。

# vi
# vim

尽管如此,我们仍然可以像上面一样运行 vi/vim 命令来清楚地知道包有没有安装。只是因为我们不知道它的完整包名才不能找到的。如果我们不确切知道完整的文件名,我们可以使用通配符:

# rpm -qa vim*

vim-minimal-7.4.160-1.el7.x86_64

通过这种方式,我们可以获得任何软件包的信息,安装与否。

2. 你如何使用 rpm 命令安装 XYZ 软件包?

回答:我们可以使用 rpm 命令安装任何的软件包(*.rpm),像下面这样,选项 -i(安装),-v(冗余或者显示额外的信息)和 -h(在安装过程中,打印#号显示进度)。

# rpm -ivh peazip-1.11-1.el6.rf.x86_64.rpm

Preparing...                          ################################# [100%]
Updating / installing...
   1:peazip-1.11-1.el6.rf             ################################# [100%]

如果要升级一个早期版本的包,应加上 -U 选项,选项 -v 和 -h 可以确保我们得到用 # 号表示的冗余输出,这增加了可读性。

3. 你已经安装了一个软件包(假设是 httpd),现在你想看看软件包创建并安装的所有文件和目录,你会怎么做?

回答:使用选项 -l(列出所有文件)和 -q(查询)列出 httpd 软件包安装的所有文件(Linux 哲学:所有的都是文件,包括目录)。

# rpm -ql httpd

/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
...

4. 假如你要移除一个软件包,叫 postfix。你会怎么做?

回答:首先我们需要知道什么包安装了 postfix。查找安装 postfix 的包名后,使用 -e(擦除/卸载软件包)和 -v(冗余输出)两个选项来实现。

# rpm -qa postfix*

postfix-2.10.1-6.el7.x86_64

然后移除 postfix,如下:

# rpm -ev postfix-2.10.1-6.el7.x86_64

Preparing packages...
postfix-2:3.0.1-2.fc22.x86_64

5. 获得一个已安装包的具体信息,如版本,发行号,安装日期,大小,总结和一个简短的描述。

回答:我们通过使用 rpm 的选项 -qi,后面接包名,可以获得关于一个已安装包的具体信息。

举个例子,为了获得 openssh 包的具体信息,我需要做的就是:

# rpm -qi openssh

[root@tecmint tecmint]# rpm -qi openssh
Name        : openssh
Version     : 6.8p1
Release     : 5.fc22
Architecture: x86_64
Install Date: Thursday 28 May 2015 12:34:50 PM IST
Group       : Applications/Internet
Size        : 1542057
License     : BSD
....

6. 假如你不确定一个指定包的配置文件在哪,比如 httpd。你如何找到所有 httpd 提供的配置文件列表和位置。

回答: 我们需要用选项 -c 接包名,这会列出所有配置文件的名字和他们的位置。

# rpm -qc httpd

/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf/httpd.conf
/etc/sysconfig/httpd

相似地,我们可以列出所有相关的文档文件,如下:

# rpm -qd httpd

/usr/share/doc/httpd/ABOUT_APACHE
/usr/share/doc/httpd/CHANGES
/usr/share/doc/httpd/LICENSE
...

我们也可以列出所有相关的证书文件,如下:

# rpm -qL openssh

/usr/share/licenses/openssh/LICENCE

忘了说明上面的选项 -d 和 -L 分别表示 “文档” 和 “证书”,抱歉。

7. 你找到了一个配置文件,位于‘/usr/share/alsa/cards/AACI.conf’,现在你不确定该文件属于哪个包。你如何查找出包的名字?

回答:当一个包被安装后,相关的信息就存储在了数据库里。所以使用选项 -qf(-f 查询包拥有的文件)很容易追踪谁提供了上述的包。

# rpm -qf /usr/share/alsa/cards/AACI.conf
alsa-lib-1.0.28-2.el7.x86_64

类似地,我们可以查找(谁提供的)关于任何子包,文档和证书文件的信息。

8. 你如何使用 rpm 查找最近安装的软件列表?

回答:如刚刚说的,每一样被安装的文件都记录在了数据库里。所以这并不难,通过查询 rpm 的数据库,找到最近安装软件的列表。

我们通过运行下面的命令,使用选项 -last(打印出最近安装的软件)达到目的。

# rpm -qa --last

上面的命令会打印出所有安装的软件,最近安装的软件在列表的顶部。

如果我们关心的是找出特定的包,我们可以使用 grep 命令从列表中匹配包(假设是 sqlite ),简单如下:

# rpm -qa --last | grep -i sqlite

sqlite-3.8.10.2-1.fc22.x86_64                 Thursday 18 June 2015 05:05:43 PM IST

我们也可以获得10个最近安装的软件列表,简单如下:

# rpm -qa --last | head

我们可以重定义一下,输出想要的结果,简单如下:

# rpm -qa --last | head -n 2

上面的命令中,-n 代表数目,后面接一个常数值。该命令是打印2个最近安装的软件的列表。

9. 安装一个包之前,你如果要检查其依赖。你会怎么做?

回答:检查一个 rpm 包(XYZ.rpm)的依赖,我们可以使用选项 -q(查询包),-p(指定包名)和 -R(查询/列出该包依赖的包,嗯,就是依赖)。

# rpm -qpR gedit-3.16.1-1.fc22.i686.rpm 

/bin/sh
/usr/bin/env
glib2(x86-32) >= 2.40.0
gsettings-desktop-schemas
gtk3(x86-32) >= 3.16
gtksourceview3(x86-32) >= 3.16
gvfs
libX11.so.6
...

10. rpm 是不是一个前端的包管理工具呢?

回答不是!rpm 是一个后端管理工具,适用于基于 Linux 发行版的 RPM (此处指 Redhat Package Management)。

YUM,全称 Yellowdog Updater Modified,是一个 RPM 的前端工具。YUM 命令自动完成所有工作,包括解决依赖和其他一切事务。

最近,DNF(YUM命令升级版)在Fedora 22发行版中取代了 YUM。尽管 YUM 仍然可以在 RHEL 和 CentOS 平台使用,我们也可以安装 dnf,与 YUM 命令共存使用。据说 DNF 较于 YUM 有很多提高。

知道更多总是好的,保持自我更新。现在我们移步到前端部分来谈谈。

11. 你如何列出一个系统上面所有可用的仓库列表。

回答:简单地使用下面的命令,我们就可以列出一个系统上所有可用的仓库列表。

# yum repolist
或
# dnf repolist

Last metadata expiration check performed 0:30:03 ago on Mon Jun 22 16:50:00 2015.
repo id       repo name                      status
*fedora       Fedora 22 - x86_64             44,762
ozonos        Repository for Ozon OS         61
*updates      Fedora 22 - x86_64 - Updates   

上面的命令仅会列出可用的仓库。如果你需要列出所有的仓库,不管可用与否,可以这样做。

# yum repolist all
或
# dnf repolist all

Last metadata expiration check performed 0:29:45 ago on Mon Jun 22 16:50:00 2015.
repo id           repo name                       status
*fedora           Fedora 22 - x86_64              enabled: 44,762
fedora-debuginfo  Fedora 22 - x86_64 - Debug      disabled
fedora-source     Fedora 22 - Source              disabled
ozonos            Repository for Ozon OS          enabled:     61
*updates          Fedora 22 - x86_64 - Updates    enabled:  5,018
updates-debuginfo Fedora 22 - x86_64 - Updates - Debug

12. 你如何列出一个系统上所有可用并且安装了的包?

回答:列出一个系统上所有可用的包,我们可以这样做:

# yum list available
或
# dnf list available

ast metadata expiration check performed 0:34:09 ago on Mon Jun 22 16:50:00 2015.
Available Packages
0ad.x86_64                 0.0.18-1.fc22                   fedora 
0ad-data.noarch            0.0.18-1.fc22                   fedora 
0install.x86_64            2.6.1-2.fc21                    fedora 
0xFFFF.x86_64              0.3.9-11.fc22                   fedora 
2048-cli.x86_64            0.9-4.git20141214.723738c.fc22  fedora 
2048-cli-nocurses.x86_64   0.9-4.git20141214.723738c.fc22  fedora 
....

而列出一个系统上所有已安装的包,我们可以这样做。

# yum list installed
或
# dnf list installed

Last metadata expiration check performed 0:34:30 ago on Mon Jun 22 16:50:00 2015.
Installed Packages
GeoIP.x86_64                    1.6.5-1.fc22       @System
GeoIP-GeoLite-data.noarch       2015.05-1.fc22     @System
NetworkManager.x86_64           1:1.0.2-1.fc22     @System
NetworkManager-libnm.x86_64     1:1.0.2-1.fc22     @System
aajohan-comfortaa-fonts.noarch  2.004-4.fc22       @System
....

而要同时满足两个要求的时候,我们可以这样做。

# yum list
或
# dnf list

Last metadata expiration check performed 0:32:56 ago on Mon Jun 22 16:50:00 2015.
Installed Packages
GeoIP.x86_64                    1.6.5-1.fc22       @System
GeoIP-GeoLite-data.noarch       2015.05-1.fc22     @System
NetworkManager.x86_64           1:1.0.2-1.fc22     @System
NetworkManager-libnm.x86_64     1:1.0.2-1.fc22     @System
aajohan-comfortaa-fonts.noarch  2.004-4.fc22       @System
acl.x86_64                      2.2.52-7.fc22      @System
....

13. 你会怎么在一个系统上面使用 YUM 或 DNF 分别安装和升级一个包与一组包?

回答:安装一个包(假设是 nano),我们可以这样做,

  # yum install nano

而安装一组包(假设是 Haskell),我们可以这样做,

  # yum groupinstall 'haskell'

升级一个包(还是 nano),我们可以这样做,

  # yum update nano

而为了升级一组包(还是 haskell),我们可以这样做,

# yum groupupdate 'haskell'

14. 你会如何同步一个系统上面的所有安装软件到稳定发行版?

回答:我们可以一个系统上(假设是 CentOS 或者 Fedora)的所有包到稳定发行版,如下,

 # yum distro-sync      [在 CentOS/ RHEL]
 或
 # dnf distro-sync      [在 Fedora 20之后版本]

似乎来面试之前你做了相当不多的功课,很好!在进一步交谈前,我还想问一两个问题。

15. 你对 YUM 本地仓库熟悉吗?你尝试过建立一个本地 YUM 仓库吗?让我们简单看看你会怎么建立一个本地 YUM 仓库。

回答:首先,感谢你的夸奖。回到问题,我必须承认我对本地 YUM 仓库十分熟悉,并且在我的本地主机上也部署过,作为测试用。

1、 为了建立本地 YUM 仓库,我们需要安装下面三个包:

# yum install deltarpm  python-deltarpm  createrepo

2、 新建一个目录(假设 /home/$USER/rpm),然后复制 RedHat/CentOS DVD 上的 RPM 包到这个文件夹下

# mkdir /home/$USER/rpm
# cp /path/to/rpm/on/DVD/*.rpm /home/$USER/rpm

3、 新建基本的库头文件如下。

# createrepo -v /home/$USER/rpm

4、 在路径 /etc/yum.repo.d 下创建一个 .repo 文件(如 abc.repo):

cd /etc/yum.repos.d && cat << EOF abc.repo
[local-installation]name=yum-local
baseurl=file:///home/$USER/rpm
enabled=1
gpgcheck=0
EOF

重要:用你的用户名替换掉 $USER。

以上就是创建一个本地 YUM 仓库所要做的全部工作。我们现在可以从这里安装软件了,相对快一些,安全一些,并且最重要的是不需要 Internet 连接。

好了!面试过程很愉快。我已经问完了。我会将你推荐给 HR。你是一个年轻且十分聪明的候选者,我们很愿意你加入进来。如果你有任何问题,你可以问我。

:谢谢,这确实是一次愉快的面试,我感到今天非常幸运,可以搞定这次面试...

显然,不会在这里结束。我问了很多问题,比如他们正在做的项目。我会担任什么角色,负责什么,,,balabalabala

小伙伴们,这之后的 3 天会经过 HR 轮,到时候所有问题到时候也会被写成文档。希望我当时表现不错。感谢你们所有的祝福。

谢谢伙伴们和 Tecmint,花时间来编辑我的面试经历。我相信 Tecmint 好伙伴们做了很大的努力,必要要赞一个。当我们与他人分享我们的经历的时候,其他人从我们这里知道了更多,而我们自己则发现了自己的不足。

这增加了我们的信心。如果你最近也有任何类似的面试经历,别自己蔵着。分享出来!让我们所有人都知道。你可以使用如下的表单来与我们分享你的经历。


via: http://www.tecmint.com/linux-rpm-package-management-interview-questions/

作者:Avishek Kumar 译者:wi-cuckoo 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

DNF即Dandified YUM,是基于RPM的Linux发行版的下一代软件包管理工具。它首先在Fedora 18中出现,并且在最近发行的Fedora 22中替代了YUM工具集

DNF致力于改善YUM的瓶颈,即性能、内存占用、依赖解决、速度和许多其他方面。DNF使用RPM、libsolv和hawkey库进行包管理。尽管它并未预装在CentOS和RHEL 7中,但您可以通过yum安装,并同时使用二者。

您也许想阅读更多关于DNF的信息:

最新的DNF稳定版本是2015年5月11日发布的1.0(在写这篇文章之前)。它(以及所有DNF之前版本)主要由Python编写,并以GPL v2许可证发布。

安装DNF

尽管Fedora 22官方已经过渡到了DNF,但DNF并不在RHEL/CentOS 7的默认仓库中。

为了在RHEL/CentOS系统中安装DNF,您需要首先安装和开启epel-release仓库。

# yum install epel-release
或
# yum install epel-release -y

尽管并不建议在使用yum时添上'-y'选项,因为最好还是看看什么将安装在您的系统中。但如果您对此并不在意,则您可以使用'-y'选项以自动化的安装而无需用户干预。

接下来,使用yum命令从epel-realease仓库安装DNF包。

# yum install dnf

在您装完dnf后,我会向您展示27个实用的dnf命令和例子,以便帮您更容易和高效的管理基于RPM包的发行版。

1. 检查DNF版本

检查您的系统上安装的DNF版本。

# dnf --version

检查DNF版本

2. 列出启用的DNF仓库

dnf命令中的'repolist'选项将显示您系统中所有启用的仓库。

# dnf repolist

检查所有开启的仓库

3. 列出所有启用和禁用的DNF仓库

'repolist all'选项将显示您系统中所有启用/禁用的仓库。

# dnf repolist all

列出所有启用/禁用的仓库

4. 用DNF列出所有可用的且已安装的软件包

'dnf list'命令将列出所有仓库中所有可用的软件包和您Linux系统中已安装的软件包。

# dnf list

用DNF列出所有的软件包

5. 用DNF列出所有已安装的软件包

尽管'dnf list'命令将列出所有仓库中所有可用的软件包和已安装的软件包。然而像下面一样使用'list installed'选项将只列出已安装的软件包。

# dnf list installed

列出已安装的软件包

6. 用DNF列出所有可用的软件包

类似的,可以用'list available'选项列出所有开启的仓库中所有可用的软件包。

# dnf list available

用DNF列出可用的软件包

7. 使用DNF查找软件包

如果您不太清楚您想安装的软件包的名字,这种情况下,您可以使用'search'选项来搜索匹配该字符(例如,nano)和字符串的软件包。

# dnf search nano

通过关键字搜索软件包

8. 查看哪个软件包提供了某个文件/子软件包?

dnf的选项'provides'能查找提供了某个文件/子软件包的软件包名。例如,如果您想找找哪个软件包提供了您系统中的'/bin/bash'文件,可以使用下面的命令

# dnf provides /bin/bash

查找提供文件的软件包

9. 使用DNF获得一个软件包的详细信息

如果您想在安装一个软件包前知道它的详细信息,您可以使用'info'来获得一个软件包的详细信息,例如:

# dnf info nano

用DNF查看软件信息

10. 使用DNF安装软件包

想安装一个叫nano的软件包,只需运行下面的命令,它会为nano自动的解决和安装所有的依赖。

# dnf install nano

用DNF安装软件

11. 使用DNF更新一个软件包

您可能只想更新一个特定的包(例如,systemd)并且保留系统内剩余软件包不变。

# dnf update systemd

更新一个软件包

12. 使用DNF检查系统更新

检查系统中安装的所有软件包的更新可以简单的使用如下命令:

# dnf check-update

检查系统更新

13. 使用DNF更新系统中所有的软件包

您可以使用下面的命令来更新整个系统中所有已安装的软件包。

# dnf update
或
# dnf upgrade

更新系统

14. 使用DNF来移除/删除一个软件包

您可以在dnf命令中使用'remove'或'erase'选项来移除任何不想要的软件包。

# dnf remove nano
或
# dnf erase nano

移除系统中的软件

15. 使用DNF移除于依赖无用的软件包(Orphan Packages)

这些为了满足依赖安装的软件包在相应的程序删除后便不再需要了。可以用过下面的命令来将它们删除。

# dnf autoremove

移除无用的依赖包

16. 使用DNF移除缓存的软件包

我们在使用dnf时经常会碰到过期的头部信息和不完整的事务,它们会导致错误。我们可以使用下面的语句清理缓存的软件包和包含远程包信息的头部信息。

# dnf clean all

移除DNF缓存

17. 获得特定DNF命令的帮助

您可能需要特定的DNF命令的帮助(例如,clean),可以通过下面的命令来得到:

# dnf help clean

获得某一命令帮助

18. 列出所有DNF的命令和选项

要显示所有dnf的命令和选项,只需要:

# dnf help

获得命令选项帮助

19. 查看DNF的历史记录

您可以调用'dnf history'来查看已经执行过的dnf命令的列表。这样您便可以知道什么被安装/移除及其时间戳。

# dnf history

查看历史记录

20. 显示所有软件包组

'dnf grouplist'命令可以显示所有可用的或已安装的软件包,如果没有什么输出,则它会列出所有已知的软件包组。

# dnf grouplist

列出所有软件包组

21. 使用DNF安装一个软件包组

要安装一组由许多软件打包在一起的软件包组(例如,Educational Softaware),只需要执行:

# dnf groupinstall 'Educational Software'

安装一个软件包组

22. 更新一个软件包组

可以通过下面的命令来更新一个软件包组(例如,Educational Software):

# dnf groupupdate 'Educational Software'

更新软件包组

23. 移除一个软件包组

可以使用下面的命令来移除一个软件包组(例如,Educational Software):

# dnf groupremove 'Educational Software'

移除软件包组

24. 从某个特定的仓库安装一个软件包

DNF可以从任何特定的仓库(比如 epel)安装一个软件包(例如,phpmyadmin):

# dnf --enablerepo=epel install phpmyadmin

从特定的仓库安装软件

25. 将已安装的软件包同步到稳定发行版

'dnf distro-sync'将同步所有已安装的软件包到所有开启的仓库中最近的稳定版本。如果没有选择软件包,则会同步所有已安装的软件包。

# dnf distro-sync

将包同步至稳定版

26. 重新安装一个软件包

'dnf reinstall nano'命令将重新安装一个已经安装的软件包(例如,nano):

# dnf reinstall nano

重新安装软件包

27. 降级一个软件包

选项'downgrade'将会使一个软件包(例如,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不会按预想的那样降级一个软件包。这已做为一个bug被提交。

结论

DNF是YUM管理器的优秀替代品。它试着自动做许多甚至不推荐有经验的Linux系统管理员做的工作。例如:

  • --skip-broken不被DNF识别,并且DNF中没有其替代命令。
  • 尽管您可能会运行dnf provides,但再也没有'resolvedep'命令了。
  • 没有'deplist'命令用来发现软件包依赖。
  • 您排除一个仓库意味着在所有操作上排除该仓库,而在yum中,排除一个仓库只在安装和升级等时刻排除他们。

许多Linux用户对于Linux生态系统的走向不甚满意。首先Systemd替换了init系统v,现在DNF将于不久后替换YUM,首先是Fedora 22,接下来是RHEL和CentOS。

您怎么看呢?是不是发行版和整个Linux生态系统并不注重用户并且在朝着与用户愿望相悖的方向前进呢?IT行业里有这样一句话 - “如果没有坏,为什么要修呢?”,System V和YUM都没有坏。

上面便是这篇文章的全部了。请在下方留言以让我了解您的宝贵想法。点赞和分享以帮助我们传播。谢谢!


via: http://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/

作者:Avishek Kumar 译者:wwy-hust 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出