1. DNF (DaNdiFied)—{/etc/dnf/dnf.conf, /etc/yum.repos.d/ *.repo, /var/log/dnf.rpm.log}

1. DNF (DaNdiFied)—{/etc/dnf/dnf.conf, /etc/yum.repos.d/ *.repo, /var/log/dnf.rpm.log}

DNF 介绍:新一代的RPM软件包管理器。 DNF 发行日期是2015年5月11日,DNF 包管理器采用Python 编写,发行许可为GPL v2,首先出现在Fedora 18发行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等

测试

1.1. 安装所需软件包

  1. 直接配置好epel以及extra,以及update的yum源之后,使用yum安装dnf即可:
    yum install dnf -y

  2. 手动下载dnf(此方法不如直接安装DNF好用)

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 还有两个可在yum源中找到: libcomps-0.1.8-3.el7.x86_64.rpm python2-libcomps-0.1.8-3.el7.x86_64.rpm yum install python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf- 0.6.4-2.sdl7.noarch.rpm
  • 注意安装前需要的包可以在阿里镜像extra中找到,需要配置yum源
[aliyunextra] name=aliyun yum extra repertory baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1
  • 如果配置了extra还有epel源 ,以及光盘os源,直接就可以用yum dnf的方式来安装dnf。

1.2. DNF配置文件

/etc/dnf/dnf.conf

1.3. DNF仓库文件

/etc/yum.repos.d/ *.repo

1.4. DNF日志

/var/log/dnf.rpm.log
  • 注意wget命令会自动网络下载后面所跟的网址文件,安装dnf包的时候需要用yum安装相关的依赖包,同时注意需要开启epel源。

1.5. DNF使用

帮助:man dnf dnf 用法:与yum一致 dnf [options] \<\command\> [\<\arguments\>...] dnf --version dnf repolist dnf clean all dnf makecache dnf list installed dnf list available dnf search nano dnf history dnf history undo 1

2. 程序包编译

2.1. 程序包编译安装:

Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
源代码–>预处理–>编译–>汇编–>链接–>执行

2.2. 源代码组织格式:

多文件:文件中的代码之间,很可能存在跨文件依赖关系
C、 C++:make 项目管理器
configure脚本 –> Makefile.in –> Makefile
java: maven

3. 编译安装基础

3.1. C语言源代码编译安装三步骤:

  1. /configure
    (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的
    指定以及Makefile.in文件生成Makefile
    (2) 检查依赖到的外部环境,如依赖的软件包
  2. make 根据Makefile文件,构建应用程序
  3. make install 复制文件到相应路径

3.2. 开发工具:

autoconf: 生成configure脚本 automake:生成Makefile.in
  • 注意:安装前查看INSTALL,README两个文件

3.3. 开源程序源代码的获取:

官方自建站点: apache.org (ASF:Apache Software Foundation) mariadb.org 代码托管: SourceForge.net Github.com code.google.com

3.4. c/c++编译器: gcc (GNU C Complier)

例子:直接用gcc hello.c -o hello(默认生成a.out名字) , 然后执行hello文件即可

4. 编译C源代码:

4.1. 准备:提供开发工具及开发环境

开发工具:make, gcc等
开发环境:开发库,头文件
glibc:标准库

4.2. 实现:通过“包组”提供开发组件

Development Tools
Server Platform Development

4.3. 生产实践:(基于最小化安装的系统)

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 zip unzip nfs-utils

4.3.1. 第一步:configure脚本

4.3.1.1. 选项:指定安装位置、指定启用的特性

--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.即出现需要依赖的包的时候,用yum install 包-devel 来安装

4.3.2. 第二步:make

  • 注意如果上一步有问题或者这一步有问题,先用yum搜索缺失的文件或者devel包,安装好之后再进行编译。如果失败,可以删除掉包解压后的目录重新从第一步开始执行,或者用make clean 命令清除一下构建的程序文件。这两个方法都尝试一下直到成功。
  • 同时注意,DNF现在完善了,老版本的时候,只有yum搜索包和文件的命令可以搜索到,也只有yum才有deplist选项,dnf不行且没有deplist参数,但是现在也都有了,也都可以使用了
  • make -j #(CPU数量) 加快编译速度。

4.3.3. 第三步:make install

4.4. 安装后的配置:

  1. 二进制程序目录导入至PATH环境变量中
    • 编辑文件/etc/profile.d/NAME.sh
    • export PATH=/PATH/TO/BIN:$PATH
  2. 导入帮助手册
    1. 编辑/etc/man.config|man_db.conf文件
    2. 或者添加一个MANPATH ,用这个方法比较好(可以看装机配置章节或者下面博客)。

4.5. 编译安装注意点:

  1. 安装路径需要更改,删除等操作的时候比较方便(因为无法用yum等命令删除,因此需要手动删除,编译安装放在一个文件夹内则方便删除)命令为:./configure –prefix=/data/app/name ,(还可更详细的路径查看帮助文档./configure –help),用configure脚本利用makefile.in制作makefile文件,里面包含了各种信息,就比如上面的安装路径,还有启用不启用什么命令等等。
  2. 交叉编译就是编译的和运行的不是同一台主机,当前主机编译,另一台主机运行
  3. configure中出现缺失的包的时候,一般后面要加上 ‘包名-devel’,代表着开发相关的包。
  4. httpd最新版的编译安装脚本查看脚本部分,注意可以把脚本直接放在内网网络路径上然后其他机器直接引用安装即可。 -** 脚本共享到内网上之后的安装命令是 curl http://ip地址/httpdinstall.sh(自己命名的sh文件) | bash** ,安装下载的最新版安装包也可以放到自己的内网网址上,然后写入脚本(或者直接外网上下载,不过如果外网不连通的情况下会失效,因此放在内网最好)
  5. 注意用echo (单引号)’PATH=#####:$PATH’ > /etc/profile.d/newfilename.sh , 来添加自己编译的软件的二进制文件目录时 ,重定向要重定向到新的文件里面。

4.6. 重要点:

开机之后profile.d中的sh的执行顺序应该是按照文件名的字符排序来执行。也就是按照ls查看文件目录的时候的默认排序执行(ls -1从上到下)。因此,最好还是不要把PATH写在多个文件里面,最好只写一个文件里

最后修改日期: 2021年7月7日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。