Write the Code. Change the World.

分类目录
1月 29

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器 已被 DNF 包管理器 取代。这些问题包括性能差、内存占用过多、依赖解析速度变慢等。

DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。

Yum 主要是用 Python 编写的,它有自己的应对依赖解析的方法。它的 API 没有完整的文档,它的扩展系统只允许 Python 插件。

Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。

为什么他们要建立一个新的工具,而不是修复现有的问题呢?

Ales Kozamblak 解释说,这个修复在技术上是不可行的,而且 Yum 团队还没有准备好立即接受修改。

另外,最大的挑战是,Yum 有 56000 行代码,但 DNF 只有 29000 行代码。

所以除了分叉,没有办法解决。

不过 Yum 的运行情况还算可以。

编号 DNF(Dandified YUM) YUM(Yellowdog Updater, Modified)
1 DNF 使用 libsolv 来解析依赖关系,由 SUSE 开发和维护 YUM 使用公开的 API 来解析依赖关系
2 API 有完整的文档 API 没有完整的文档
3 由 C、C++、Python 编写的 只用 Python 编写
4 DNF 目前在 Fedora、RHEL 8、CentOS 8、OEL 8 和 Mageia 6/7 中使用 YUM 目前在 RHEL 6/7、CentOS 6/7、OEL 6/7 中使用
5 DNF 支持各种扩展 Yum 只支持基于 Python 的扩展
6 API 有良好的文档,因此很容易创建新的功能 因为 API 没有正确的文档化,所以创建新功能非常困难
7 DNF 在同步存储库的元数据时,使用的内存较少 在同步存储库的元数据时,YUM 使用了过多的内存
8 DNF 使用满足性算法来解决依赖关系解析(它是用字典的方法来存储和检索包和依赖信息) 由于使用公开 API 的原因,Yum 依赖性解析变得迟钝
9 从内存使用量和版本库元数据的依赖性解析来看,性能都不错 总的来说,在很多因素的影响下,表现不佳
10 DNF 更新:在 DNF 更新过程中,如果包中包含不相关的依赖,则不会更新 YUM 将在没有验证的情况下更新软件包
11 如果启用的存储库没有响应,DNF 将跳过它,并继续使用可用的存储库处理事务 如果有存储库不可用,YUM 会立即停止
12 dnf updatednf upgrade 是等价的 在 Yum 中则不同
13 安装包的依赖关系不更新 Yum 为这种行为提供了一个选项
14 清理删除的包:当删除一个包时,DNF 会自动删除任何没有被用户明确安装的依赖包 Yum 不会这样做
15 存储库缓存更新计划:默认情况下,系统启动后 10 分钟后,DNF 每小时会对配置的存储库检查一次更新。这个动作由系统定时器单元 dnf-makecache.timer 控制 Yum 也会这样做
16 内核包不受 DNF 保护。不像 Yum,你可以删除所有的内核包,包括运行中的内核包 Yum 不允许你删除运行中的内核
17 libsolv:用于解包和读取资源库。hawkey: 为 libsolv 提供简化的 C 和 Python API 库。librepo: 提供 C 和 Python(类似 libcURL)API 的库,用于下载 Linux 存储库元数据和软件包。libcomps: 是 yum.comps 库的替代品。它是用纯 C 语言编写的库,有 Python 2 和 Python 3 的绑定。 Yum 不使用单独的库来执行这些功能
18 DNF 包含 29000 行代码 Yum 包含 56000 行代码
19 DNF 由 Ales Kozumplik 开发 YUM 由 Zdenek Pavlas、Jan Silhan 和团队成员开发

文章来源

https://linux.cn/article-12161-1.html

相关文章

https://blog.csdn.net/xaosky/article/details/123034396

1月 29

想做一个完整的项目。服务器是不可缺少的一部分。服务器选什么环境呢,用的比较多的是 centos 和 ubuntu。阿里云基于龙蜥操作系统(Anolis OS)打造的阿里云第三代发行版操作系统 Alibaba Cloud Linux 3(以下简称 Alinux 3) 的 CIS 安全基线(Alinux 3 CIS benchmark v1.0.0 版本)正式完成了 CIS 认证。 Alinux 3 全面兼容 RHEL / CentOS 8 生态。随着 CentOS 8 的停服,使用 Alibaba Cloud Linux 3 来替代 CentOS 也成为部分企业的选择。这里就用 Alibaba Cloud Linux 3 吧。

选配购买好服务器后。在阿里云控制台设置好密码和常用安全组,就可以通过 ssh 进入操作系统了。

常规操作

https://help.aliyun.com/document_detail/416274.html

# 安全更新提醒
dnf upgrade-minimal --security

# 查看服务器环境
lsb_release -a

# 结果如下
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description:    Alibaba Cloud Linux release 3 (Soaring Falcon)
Release:    3
Codename:   SoaringFalcon

# 更新 yum 源
yum update

Alibaba Cloud Linux release 3 中 yum 指向了 dnf-3

dnf 和 yun 的区别

相关文章

https://zhuanlan.zhihu.com/p/438572784

https://baijiahao.baidu.com/s?id=1725178032789531647&wfr=spider&for=pc

12月 29

mysql 5.7 之后,默认 only_full_group_by 生效。也就是 select 的字段和 group by 的字段一样,额外的聚合函数除外。这样一来,很影响我们数据输出的需要。比如我想知道上海市每个区有多少家店,要展示区名字,店名字,区号。数据库里边存储的字段有店名、区号、区名字等。这个时候 only_full_group_by 严格模式下,直接请求就会有错误。这里是,可以有两种方法来解决。一是关掉 only_full_group_by 模式。二是使用 ANY_VALUE 函数。不错就是使用 ANY_VALUE 函数。

解决方法

个人喜欢使用 ANY_VALUE 来搞定。

SELECT COUNT(*) AS count, 区号, ANY_VALUE(区名字), ANY_VALUE(店名字) FROM 店表 GROUP BY 区号;
11月 06

不想用 sftp,就自己装个 ftp。

阿里云这片文章就够了

vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。

https://help.aliyun.com/document_detail/182263.html

背景信息

FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:

  • 主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
  • 被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

FTP支持以下三种认证模式:

  • 匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
  • 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
  • 虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。

    这里主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。

操作一波

1.1 安装

yum install  vsftpd

2.1 开启服务

systemctl start vsftpd

3.1 设置开机启动

  1. 先查看是否开机启动:
systemctl list-unit-files | grep vsftpd
  1. 我的系统显示这样:
systemctl list-unit-files | grep vsftpd
vsftpd.service                              disabled
vsftpd@.service                            indirect
vsftpd.target                               disabled

这里是未开通。

  1. 开启自启。
chkconfig vsftpd on
  1. 查看 ftp 服务监听的端口
netstat -antup | grep ftp

4.1 配置 vsftpd

为保证数据安全,本文主要介绍被动模式下,使用本地用户访问FTP服务器的配置方法。

# 创建用户 ftplin
adduser ftplin

# 给 ftplin 设置密码
passwd ftplin

# 创建一个供 ftp 使用的目录
mkdir /var/ftp/lin

# 创建一个测试文件
vim /var/ftp/lin/test.txt
# 填入 hello 保存退出

# 给 /var/ftp/lin 设置所有者
chown -R ftplin:ftplin /var/ftp/lin

再去修改 vsftpd.conf 配置文件:

vim /etc/vsftpd/vsftpd.conf

4.1 修改配置文件

vim /etc/vsftpd/vsftpd.conf

按照以下要求修改

注意 修改和添加配置文件内的信息时,请注意格式问题。例如,添加多余的空格会造成无法重启服务的结果。

#除下面提及的参数,其他参数保持默认值即可。

#修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES

#在行首添加#注释掉以下参数:
#关闭监听IPv6 sockets。
#listen_ipv6=YES

#在配置文件的末尾添加下列参数:
#设置本地用户登录后所在目录。
local_root=/var/ftp/test
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式。
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例的公网IP。
pasv_address=FTP服务器公网IP地址
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=port number
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=port number

创建chroot_list文件,并在文件中写入例外用户名单。

# 输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。及时没有例外用户,该文件也必须创建,内容为空。
# 个人建议该文件为空最好,不必去访问其他目录,世界一片安静多好呀。
vim /etc/vsftpd/chroot_list

重启服务

systemctl restart vsftpd.service

到此为止, ftp 的配置已经完了。但阿里云还得配置安全组。21 端口入方向必须打开以及上边配置的访问的最小到最大端口也要配置。

设置安全组

规则方向 授权策略 协议类型 端口范围 授权对象
入方向 允许 TCP 21/21 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。允许所有客户端访问时,授权对象为0.0.0.0/0。
入方向 允许 TCP pasv_min_port/pasv_max_port。例如:50000/50010 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。允许所有客户端访问时,授权对象为0.0.0.0/0。

可以测试了

使用 ftp 工具。比如 win 的 ftpx, mac 的 forklift 。输入公网 ip 地址,选择 ftp 连接方式(端口号不用管),填入用户名和密码。点击连接。是不是马上就好了,并进入到指定的目录了哈。

8月 25

vim /> 新买的云,状的是centos8系统,使用起来发现文件内中文乱码。这个得解决。

一步一步往下走

查看你的语言是什么

echo $LANG

# 结果
zh_CN.UTF-8

**继续 **

localectl status

# 结果
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us

发现系统缺少中文包。弄起来。

yum search Chinese

# 结果
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 3:04:20 ago on Thu Aug 25 10:58:01 2022.
========================================== Name & Summary Matched: chinese ===========================================
ibus-table-chinese.noarch : Chinese input tables for IBus
=============================================== Name Matched: chinese ================================================
ibus-table-chinese-array.noarch : Array input methods
ibus-table-chinese-cangjie.noarch : Cangjie based input methods
ibus-table-chinese-cantonese.noarch : Cantonese input methods
ibus-table-chinese-easy.noarch : Easy input method
ibus-table-chinese-erbi.noarch : Erbi input method
ibus-table-chinese-quick.noarch : Quick-to-learn input methods
ibus-table-chinese-scj.noarch : Smart Cangjie
ibus-table-chinese-stroke5.noarch : Stroke 5 input method
ibus-table-chinese-wu.noarch : Wu pronunciation input method
ibus-table-chinese-wubi-haifeng.noarch : Haifeng Wubi input method
ibus-table-chinese-wubi-jidian.noarch : Jidian Wubi 86 input method, JiShuang 6.0
ibus-table-chinese-yong.noarch : YongMa input method
============================================== Summary Matched: chinese ==============================================
autocorr-zh.noarch : Chinese auto-correction rules
langpacks-zh_CN.noarch : Simplified Chinese langpacks meta-package
langpacks-zh_TW.noarch : Traditional Chinese langpacks meta-package
texlive-arphic.noarch : Arphic (Chinese) font packages
wqy-microhei-fonts.noarch : Compact Chinese fonts derived from Droid

那么,就装个中文包。

dnf install langpacks-zh_CN.noarch

修改本地语言环境。

vim /etc/locale.conf

# 填入
LANG=zh_CN.UTF-8

# 使生效
source /etc/locale.conf
6月 17

在做 go 测试的时候,经常会有端口被使用,而没停止。停掉该进程就很有必要。

操作一波

# 以 3000 端口为例
lsof -i:3000

# 通过 lsof 命令找到 pid ,杀掉 pid
kill -9 xxxx
5月 15

强迫症。不喜欢开机自启动向日葵。那么就关掉向日葵自启动吧。这里是 mac

操作

打开终端,编辑下边这些文件,将 Disabled 的值改为 即可。

cd /Library/LaunchAgents/
sudo vim com.oray.sunlogin.agent.plist
sudo vim com.oray.sunlogin.startup.plist

cd /Library/LaunchDaemons
sudo vim com.oray.sunlogin.helper.plist
sudo vim com.oray.sunlogin.plist