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
报错:

安装依赖包命令:sudo apt-get install liblmdb-dev
继续配置:./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
没有报错,后面的运行测试估计会有点麻烦,本文就介绍到这里吧。
相关文章:
Ubuntu源码编译samba
概述 本人最近研究samba的源码,但是在源码编译的时候,本以为直接config,make,make install。没想到编译过程中碰到很多麻烦,主要是各种依赖问题。 基于此,本文把samba编译的详细过程记录下来,以供再次研究借鉴。 软件…...
conda虚拟环境配置
命令行输入,conda -V 确定conda版本 创建自己的conda虚拟环境 activate 回车 conda create -n 名字 python版本号 执行命令 确认执行命令 输入y 创建完成 激活环境 conda activate 名字 进入python环境 python 退出 exit() conda deactive...
如何制作自己的数字人
如何制作自己的数字人呢?不用担心平台的使用授权,也不用担心哪一天自己自媒体被号被无故封杀,那么SadTalker将是你的首选,他是完全开源的数字人软件,现已达到Apache2的授权,完全自由的开源软件。作者自己试…...
JAVA毕业设计103—基于Java+Springboot+vue的药店管理系统(源码+数据库)
基于JavaSpringbootvue的药店管理系统(源码数据库) 一、系统介绍 本系统前后端分离 -功能: 登录、药库药品管理、统计查询、药房管理、物资管理、挂号管理、账号管理、角色管理、权限管理、登录日志管理、药品管理、药品类型管理、客人类型管理 二、所用技术 后端技术栈&a…...
LeetCode66——加一
LeetCode66——加一 题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。 示例…...
CV计算机视觉每日开源代码Paper with code速览-2023.10.23
精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Zone Evaluation: Revealing Spatial Bias i…...
C语言 sizeof 函数内部进行计算
直接看代码 #include <stdio.h> int main() {int i 2;int j;j sizeof(i i);printf("i %d, j %d", i ,j);return 0; }执行结果: 可以看到 i的值一直是没有变的, j 是int类型下 sizeof占用的大小为 4个字节,不是i的 22…...
导致爬虫无法使用的原因有哪些?
随着互联网的普及和发展,爬虫技术也越来越多地被应用到各个领域。然而,在实际使用中,爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因,并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…...
paddlepaddle使用实践过程中的问题记录
环境背景 python:3.10.11 系统:macOS Big Sur 11.7.10 cpu:Intel Core i7 2.6GHz 内存:16G paddle版本问题 初始安装的是的MacOS cpu 2.5.1版本,在python解释器中执行import paddle时报错: ImportError:…...
MySQL数据库 #3
文章目录 一、创建表的完整语法二、约束条件1.unsigned (无符号)2. zerofill (0填充)3. default (默认值)4. not null(非空)5. unique(唯一)6. primary key &…...
XQ350441.0、XQ350641.0、XQ350441.1、XQ350641.1、XQ350441.2、XQ350641.2三位五通电磁气动阀
XQ230440、XQ230640、XQ230840、XQ231040、XQ231540二位三通气动电磁阀;XQ250440、XQ250640、XQ250840、XQ251040、XQ251540二位五通电磁气动阀;XQ240440二位四通电磁气动阀;XQ230441、XQ230641、XQ230841、XQ231041、XQ231541二位三通电磁气…...
降本增效神器?Share Creators 智能数字资产管理系统真香!
降本增效似乎是一个持续又永久的话题。尤其在今年, 显得格外的重要~ 在各行各业都受到了疫情所带来巨大冲击的背景下,降本增效对很多企业来说不再是锦上添花,而可能是一条唯一的出路。 随着市场的收缩和竞争的加剧,在更“卷”的…...
2023年中国汽车差速器需求量、竞争现状及行业市场规模分析[图]
差速器是汽车驱动系统的主要部件,它的作用就是在向两边半轴传递动力的同时,允许两边半轴以不同的转速旋转,满足两边车轮尽可能以纯滚动的形式作不等距行驶,减少轮胎与地面的摩擦。汽车差速器是驱动车轮差速转弯或复杂路面强力通过…...
【ceph】ceph集群的节点机器重启,导致磁盘的lvm消失,如何恢复呢~~满满的都是干货
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
竞赛选题 深度学习人脸表情识别算法 - opencv python 机器视觉
文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…...
异步为什么会造成 HTTP 队首阻塞?
一、http 协议的队首阻塞 队首阻塞,队首的事情没有处理完的时候,后面的都要等着。 1.1 HTTP1.0 的队首阻塞 对于同一个 tcp 连接,所有的 http1.0 请求放入队列中,只有前一个请求的响应收到了,然后才能发送下一个请求。http1.0 的…...
使用hibernate,报出ORA-00933_ SQL 命令未正确结束
这里分享一个很容易出错的原因,一旦涉及到切换不同的数据源,就需要修改配置文件,有时候就会忘记了修改方言,而jpa是需要设置方言的。 比如我这里就是因为从mysql切换为了使用oracle,忘记了设置对应的方言,才…...
易点易动设备管理系统:提升企业备件管理和维修效率的智能解决方案
在当今竞争激烈的商业环境中,大型生产制造企业面临着日益复杂的设备管理挑战。为了提高生产效率和降低成本,企业需要一种高效的设备管理系统。易点易动设备管理系统是一款智能化的解决方案,旨在帮助企业提升备件管理和维修效率。本文将详细介…...
新上线游戏产品需不需要防御?
游戏运营免不了遭受恶意DDoS和CC攻击,且攻击常达百G以上,攻击流量过大,超过一般服务器的基础防护能力,不少企业面对大流量攻击显得束手无策,只能选择被迫停机,其次游戏行业利润高,很容易被黑客盯…...
Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)
文章目录 1. Linux软件包管理器——yumyum 语法yum 常用命令安装 yum 仓库源 2. Linux编辑器——vimvim 的五种常用模式模式切换vim 基本操作命令模式命令集(1)光标命令(2)复制粘贴命令(3)撤销与重做&#…...
数据冗余与规范化的本质[数据库原理]
我们把它想象成整理一个乱七八糟的杂物间的过程。我们的目标是把所有东西分门别类放好,让找东西、放东西、更新东西都变得轻松,并且避免重复占用空间。 第一部分:为什么要“规范化”?—— 解决“大杂烩”表的三大痛点 假设我们管…...
VScode:将VScode界面的显示语言改为简体中文
这是 VS Code 设置语言的标准方式,直接强制指定界面语言: 在 VS Code 界面按下快捷键 Ctrl Shift P(Windows/Linux),Mac 用户用 Cmd Shift P,打开「命令面板」 在弹出的输入框里,输入 Confi…...
编程分析企业奖罚制度执行数据,优化奖罚标准,做到赏罚分明,调动全体员工职场工作积极性。
定位是:商务智能(BI) Python 人力资源数据分析,可直接用于课程设计、技术博客或企业内部管理优化原型。⚠️ 说明:本方案不评价企业文化优劣、不站队劳资任何一方,仅提供数据建模与分析框架。一、实际应用…...
从零构建AI智能体:核心架构、ReAct模式与实战指南
1. 项目概述:从零构建AI智能体的核心价值最近在GitHub上看到一个挺有意思的项目,叫pguso/ai-agents-from-scratch。光看名字,很多朋友可能就心动了——“从零开始构建AI智能体”,听起来就像是把那些神秘的大模型应用开发黑盒给彻底…...
宠物领养平台(10052)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
微控制器自检技术:从原理到实践,构建嵌入式系统的可靠性基石
1. 为什么微控制器自检不是“可有可无”的选项?如果你是一名嵌入式开发者,或者你的产品里用到了单片机,那你一定遇到过这样的场景:产品在实验室里跑得好好的,一到客户现场就莫名其妙死机;或者设备运行了几个…...
回溯算法:暴力枚举最优解
一、上期回顾 吃透二分查找三大模板:基础查找、左边界、右边界,掌握二分答案解题思维,有序数组最优解法全部拿下。今天正式攻克回溯算法,暴力枚举最优写法,解决排列、组合、子集、棋盘类所有搜索题。二、递归与回溯核心…...
Windows终极优化神器:WinUtil - 一键解决系统安装、优化、修复的完整指南
Windows终极优化神器:WinUtil - 一键解决系统安装、优化、修复的完整指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否厌…...
基于Vue3+TypeScript的ChatGPT风格前端界面集成实战
1. 项目概述与核心价值最近在折腾一个个人项目,想给一个静态网站加上智能对话的能力,让访客能随时问点问题。一开始想自己从零搭建,但考虑到前后端、AI接口、实时通信这些环节,工作量着实不小。后来在GitHub上逛的时候,…...
别再只让小车跑了!给Arduino履带底盘加上机械臂,实现自动搬运的5个关键点
从玩具到工具:Arduino履带机械臂的工程化升级指南 当你的Arduino履带小车已经能在客厅里自如巡线时,是否想过让它真正"动手"做点事情?给底盘加装机械臂绝不是简单的物理拼接——我曾亲眼见证一个精心设计的六自由度机械臂在第一次抓…...
