Ubuntu源码编译samba

概述

本人最近研究samba的源码,但是在源码编译的时候,本以为直接config,make,make install。没想到编译过程中碰到很多麻烦,主要是各种依赖问题。
基于此,本文把samba编译的详细过程记录下来,以供再次研究借鉴。

软件环境

本文描述到的版本都是比较新的,不同的版本操作会有差异,比如早期samba用python2现在是python3,对应依赖的环境不一样的。

1、Ubuntu:版本23.10,下载地址:https://releases.ubuntu.com/23.10.1/ubuntu-23.10.1-desktop-amd64.iso?_ga=2.172672484.632513974.1697782264-614902196.1697782264
2、Samba源码:版本4.19.2,下载地址:https://download.samba.org/pub/samba/samba-4.19.2.tar.gz
3、辅助源码包nettle :版本3.9,下载地址:https://ftp.gnu.org/gnu/nettle/nettle-3.9.tar.gz
4、辅助源码包gnutls:版本3.7.10,下载地址:https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz

编译准备

ubuntu23.10是新安装的,下载的测试包放在目录:/home/shen/testCompileSamba

1、为了快速下载更新依赖包,我选择更新镜像源,如果认为有必要可以参考另外一篇文章:https://blog.csdn.net/shenweihong/article/details/133973517?spm=1001.2014.3001.5501
2、一些基本的命令
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential make gcc vim
嘿嘿,这里镜像源作用体现了,不换要二三十分钟,换了两三分钟。
3、下载解压需要的包
cd /home/shen/testCompileSamba
下载
wget https://download.samba.org/pub/samba/samba-4.19.2.tar.gz
wget https://ftp.gnu.org/gnu/nettle/nettle-3.9.tar.gz
wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.10.tar.xz
解压
tar -xvf samba-4.19.2.tar.gz
tar -xvf nettle-3.9.tar.gz
tar -xvf gnutls-3.7.10.tar.xz

初步配置

进入samba源码
cd /home/shen/testCompileSamba/samba-4.19.2/
配置命令:
./configure --enable-debug --with-ads --with-systemd --with-winbind
报错
在这里插入图片描述
cat /home/shen/testCompileSamba/samba-4.19.2/bin/config.log,看最后几行:
在这里插入图片描述
安装命令解决:sudo apt-get install python-dev-is-python3
重新再配置
./configure --enable-debug --with-ads --with-systemd --with-winbind
在这里插入图片描述
cat /home/shen/testCompileSamba/samba-4.19.2/bin/config.log,看最后几行:
在这里插入图片描述
这是缺少程序gnutls
本人用了很多apt-get install都未能解决,很麻烦,因此就用到了源码nettle-3.9.tar.gz和gnutls-3.7.10.tar.xz

安装gnutls

进入gnutls源码
cd /home/shen/testCompileSamba/gnutls-3.7.10/
配置命令
./configure
报错:*** Libnettle 3.6 was not found.
还需要依赖nettle包

进入nettle源码
cd /home/shen/testCompileSamba/nettle-3.9
配置命令
./configure
成功
make
报错:m4 ./m4-utils.m4 ./asm.m4 config.m4 machine.m4 aes-decrypt-internal.asm >aes-decrypt-internal.s
/bin/sh: 1: m4: not found
命令:sudo apt-get install m4
再make
成功
查看命令 ls | grep .so
camellia-absorb.c
camellia-absorb.o
camellia-absorb.o.d
libnettle.so
少了libhogweed.so,后面用到没有会报错,还需要调整
命令:sudo apt-get install libgmp-dev
然后
./configure
make
ls | grep .so查看
camellia-absorb.c
camellia-absorb.o
camellia-absorb.o.d
libhogweed.so
libnettle.so
这就有了
命令sudo make install

回到gnutls源码
cd /home/shen/testCompileSamba/gnutls-3.7.10/
./configure
还是报错:*** Libnettle 3.6 was not found.
这是我当时很纠结的地方,明明已经安装了nettle,还是包这个包没有

查看/usr/local/lib64/是否有刚刚编译库文件
命令:ls /usr/local/lib64/
libhogweed.a libhogweed.so libhogweed.so.6 libhogweed.so.6.7 libnettle.a libnettle.so libnettle.so.8 libnettle.so.8.7 pkgconfig
应该没错
sudo mkdir /usr/lib/pkgconfig/
sudo ln -s /usr/local/lib64/pkgconfig/nettle.pc /usr/lib/pkgconfig/nettle.pc
sudo ln -s /usr/local/lib64/pkgconfig/hogweed.pc /usr/lib/pkgconfig/hogweed.pc

复制lib64中nettle库到lib(我偷懒全部复制):sudo cp -r /usr/local/lib64/* /usr/local/lib/

下面这几个命令是尝试的,不知道是否有必要
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install -y gnutls-bin
sudo apt-get install libffi-dev

尝试其他各种发现下面这个命令起作用
sudo apt-get install pkg-config
继续./configure
报错
在这里插入图片描述
安装依赖包命令:sudo apt-get install libtasn1-6-dev
继续./configure
报错
在这里插入图片描述

安装依赖包命令:sudo apt-get install libunistring-dev
继续./configure
报错
在这里插入图片描述
这个错表示p11-kit不存在,或者版本低于0.23.1,但是我这里明明有了更新版本0.25.0,如下图
在这里插入图片描述

我猜可能是没有特定的版本,很久都没解决,并且不需要pkcs11,直接跳过去
配置命令改成:./configure --without-p11-kit
通过了

make
sudo make install
gnutls编译好了

继续配置samba

cd /home/shen/testCompileSamba/samba-4.19.2
./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
在这里插入图片描述
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
在这里插入图片描述
sudo apt-get install flex
类似的后面根据提示安装依赖
sudo apt-get install bison
sudo apt-get install libgpgme11-dev
sudo apt-get install libjansson-dev
sudo apt-get install libarchive-dev
sudo apt-get install libacl1-dev
sudo apt-get install libldap2-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错
在这里插入图片描述
依赖命令:sudo apt-get -y install libparse-yapp-perl

继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错
在这里插入图片描述
依赖命令:sudo apt-get install libpam0g-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
在这里插入图片描述
依赖命令:sudo apt-get install libdbus-1-dev
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
在这里插入图片描述
依赖命令:sudo apt-get install python3-markdown
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
报错:
在这里插入图片描述

依赖命令:sudo apt-get install python3-dnspython
继续配置:./configure --enable-debug --with-ads --with-systemd --with-winbind
通过

编译

make
报错
在这里插入图片描述
依赖命令:apt-get install libpopt-dev
再make
没有报错,后面的运行估计会很麻烦,本文就介绍到这里吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题 day50:10-20

1.存在重复元素 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 方法一:集合去重 #方法一:集合去重 def containsDuplicate(nums):return len(n…

AWS SAA-C03考试知识点整理

S3: 不用于数据库功能 分类: S3 Standard :以便频繁访问 S3 Standard-IA 或 S3 One Zone-IA : 不经常访问的数据 Glacier: 最低的成本归档数据 S3 Intelligent-Tiering智能分层 :存储具有不断变化或未知访问…

KubeSphere一键安装部署K8S集群(单master节点)-亲测过

1. 基础环境优化 hostnamectl set-hostname master1 && bash hostnamectl set-hostname node1 && bash hostnamectl set-hostname node2 && bashcat >> /etc/hosts << EOF 192.168.0.34 master1 192.168.0.45 node1 192.168.0.209…

从零开始,学好 Python 从大一新生自我介绍开始

从零开始&#xff0c;学好 Python 从大一新生自我介绍开始 大家好&#xff0c;我叫xxx,今年18岁&#xff0c;刚刚入学不久。我决定从零开始系统学习Python编程语言。 Python是一种解释型、交互式和脚本编程语言。它由荷兰人Guido van Rossum在1991年左右创立&#xff0c;语法简…

Python学习第2天-安装pycharm

文章目录 前言一、下载二、安装1.选择安装目录2.安装配置 总结 前言 好用的工具可以极大地提高生产力&#xff0c;开发Python推荐使用jetbrains全家桶的pycharm。 一、下载 通过官网下载安装包。 二、安装 1.选择安装目录 2.安装配置 一路Next&#xff0c;安装完成 总结 …

模拟最终成绩计算过程

首先输入大于2的整数作为评委人数,然后依次输入每个评委的打分,要求每个分数介于0~100.输入完所有评委打分之后,去掉一个最高分,去掉一个最低分,剩余分数的平均分即为该选手的最终得分 (1) while True:try:n int(input(请输入评委人数:))assert n > 2# 跳出循环breakexce…

快速排序原理JAVA和Scala实现-函数式编程的简洁演示

快速排序原理JAVA和Scala实现-函数式编程的简洁演示 目录 快速排序原理JAVA和Scala实现-函数式编程的简洁演示 C语言快速排序实现 Java 快速排序实现 Scala 快速排序实现 本文章向大家介绍快速排序原理JAVA和Scala实现-函数式编程的简洁演示&#xff0c;主要内容包括C语言…

在Ubuntu上安装和挂载NFS

在Ubuntu上安装和挂载NFS可以按照以下步骤进行&#xff1a; 安装NFS客户端工具&#xff1a;在Ubuntu上&#xff0c;可以使用以下命令安装NFS客户端工具&#xff1a; shell复制代码 sudo apt-get install nfs-common 创建挂载点&#xff1a;在本地Ubuntu计算机上&#xff0c;…

机器学习(23)---Boosting tree(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 题目三2.4 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 题目三 T 4 T_4 T4​中 0.15 0.15 0.15 改为 − 0.16 -0.16 −0.16&#xff0c; − 0.22 -0.22 −0.22 改为 0.11 0.11 0.11。 2.4 答案书写

python 之计算矩阵乘法

文章目录 总的介绍例子 总的介绍 np.matmul 是NumPy库中的矩阵乘法函数&#xff0c;用于执行矩阵乘法操作。矩阵乘法是线性代数中的一种常见操作&#xff0c;用于将两个矩阵相乘以生成新的矩阵。在神经网络、机器学习和科学计算中&#xff0c;矩阵乘法经常用于变换和组合数据。…

点云cloudpoint生成octomap的OcTree的两种方法以及rviz可视化

第一种&#xff1a;在自己的项目中将点云通过ros的topic发布&#xff0c;用octomap_server订阅点云消息&#xff0c;在octomap_server中生成ocTree 再用rviz进行可视化。 创建工作空间&#xff0c;记得source mkdir temp_ocotmap_test/src cd temp_ocotmap_test catkin_make…

算法刷题-数组

算法刷题 209. 长度最小的子数组-二分或者滑动窗口 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数…

进制转换(二进制、八进制、十进制、十六进制)

目录 一&#xff1a;十进制转换为二进制、八进制、十六进制 &#xff08;1&#xff09;整数转换 &#xff08;2&#xff09;小数转换 1&#xff09;十进制转二进制 2&#xff09;十进制转八进制 3&#xff09;十进制转十六进制 二&#xff1a;二进制、八进制、十六进制转…

Python使用scapy库监听指定的网卡数据并转发

监听指定网卡中的数据&#xff08;UDP&#xff09;数据转发 具体实现代码如下&#xff1a; from scapy.all import * from scapy.layers.inet import UDP, IP from scapy.layers.l2 import Etherdef Callback(packet):# 目的IPdst_ip packet[IP].dst# 源IPsrc_ip packet[IP]…

【大模型应用开发教程】02_LangChain介绍

LangChain介绍 什么是 LangChain1. 模型输入/输出2. 数据连接3. 链&#xff08;Chain&#xff09;4. 记忆&#xff08;Meomory&#xff09;5. 代理&#xff08;Agents&#xff09;6.回调&#xff08;Callback&#xff09;在哪里传入回调 ?你想在什么时候使用这些东西呢&#x…

Stable diffusion的一些参数意义及常规设置

在线stabel Diffusion模型 https://huggingface.co/spaces/stabilityai/stable-diffusion 随机种子 seed 如果想要同一个文本提示&#xff0c;生成多次都是同一图像&#xff0c;可以设置一个随机种子&#xff0c;类似于random.seed()的原理&#xff0c;并将生成器传递给管道…

A_搜索(A Star)算法

A*搜索(A Star) 不同于盲目搜索&#xff0c;A算法是一种启发式算法(Heuristic Algorithm)。 上文提到&#xff0c;盲目搜索对于所有要搜索的状态结点都是一视同仁的&#xff0c;因此在每次搜索一个状态时&#xff0c;盲目搜索并不会考虑这个状态到底是有利于趋向目标的&#x…

​CUDA学习笔记(五)GPU架构

本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/&#xff0c;仅用于学习。 GPU架构 SM&#xff08;Streaming Multiprocessors&#xff09;是GPU架构中非常重要的部分&#xff0c;GPU硬件的并行性就是由SM决定的。 以Fermi架构为例&#xff0c;其包含以下主要组成…

Webpack 理解 input output 概念

一、介绍 如果还没用过 Webpack 请先阅读 Webpack & 基础入门 再回头看本文。 Webpack 的核心只做两件事&#xff0c;输入管理&#xff08;Input Management&#xff09;和输出管理&#xff08;Output Management&#xff09;&#xff0c;什么花里胡哨的插件和配置都离不…

代码随想录打卡第四十六天|完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

完全背包理论 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一…