QOwnNotes 在 Slackware Linux 上的安装指南:SlackBuild 构建与系统钥匙串(Keychain)配置

发布时间:2026/10/12 16:22:41

QOwnNotes 在 Slackware Linux 上的安装指南:SlackBuild 构建与系统钥匙串(Keychain)配置 桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载本篇技术指南完整讲解如何在 Slackware Linux14.1 与 14.2上通过官方 SlackBuild 仓库源码构建并安装 QOwnNotes包括 Qt 5 及运行时依赖的安装、dobuild.sh打包流程与installpkg安装方法同时结合仓库源码深入解析安装后常见的Could not write secret to keychain报错说明 GNOME/KDE 桌面下 Secret Service 与 KWallet 的配置方法以及 QOwnNotes 回退到 SimpleCrypt 旧式加密的底层机制。读完本文你将能够独立完成 Slackware 环境下的源码级安装与钥匙串故障排查。背景为什么 Slackware 需要自行构建Slackware 的官方软件仓库并不直接提供 QOwnNotes 的二进制包。官方维护了一个独立的 SlackBuild 仓库qownnotes-slackbuilds其中按 Slackware 版本分目录存放了完整的构建脚本。使用 SlackBuild 构建的优点在于打包过程完全在本地进行生成的.txz软件包可以用 Slackware 标准的installpkg工具管理与系统包管理方式一致。安装的整体流程分为三步安装 QOwnNotes 依赖的 Qt 5 运行时与相关库克隆 SlackBuild 仓库并执行构建脚本用installpkg安装生成的软件包。不同 Slackware 版本所需依赖略有差异下文分别给出 14.2 与 14.1 的完整步骤。在 Slackware 14.2 上安装 QOwnNotes第一步安装 Qt 5 与运行时依赖Slackware 14.2 需要先安装 Qt 5、libxkbcommon、libproxy 和 js185。这里使用的是 Alien 社区维护的 Slackware 软件包仓库bear.alienbase.nl中的预编译包cd /tmp wget http://bear.alienbase.nl/mirrors/people/alien/sbrepos/current/x86_64/qt5/qt5-5.6.1_1-x86_64-1alien.txz wget http://bear.alienbase.nl/mirrors/people/alien/sbrepos/current/x86_64/libxkbcommon/libxkbcommon-0.5.0-x86_64-1alien.txz sudo installpkg libxkbcommon-0.5.0-x86_64-1alien.txz qt5-5.6.1_1-x86_64-1alien.txz slackpkg update slackpkg install libproxy js185-1.0.0-x86_64-1各依赖的作用Qt 5qt5-5.6.1QOwnNotes 的 GUI 与核心运行时依赖。从仓库的 QOwnNotes.pro 可以看到项目直接通过include(libraries/qtkeychain/qtkeychain.pri)引入子库底层完全构建在 Qt 之上因此 Qt 5 是必备前提。libxkbcommonXKB 键盘映射库负责键盘布局与输入法相关的底层支持Qt 5 在部分 X11 环境下依赖它。libproxy系统级代理配置支持库QOwnNotes 的联网功能如 Nextcloud / ownCloud 同步、脚本仓库下载会用到系统代理设置。js185Mozilla JavaScript 引擎SpiderMonkey 1.8.5用于 Qt 的 QML/脚本相关组件部分 Qt 5 构建依赖它。第二步获取 QOwnNotes SlackBuild 并构建依赖就绪后克隆官方 SlackBuild 仓库进入对应版本目录执行构建脚本cd /tmp git clone https://github.com/pbek/qownnotes-slackbuilds.git cd qownnotes-slackbuilds/14.2/qownnotes ./dobuild.shdobuild.sh是 SlackBuild 的标准构建入口它会下载 QOwnNotes 的源码压缩包、解压、运行 qmake/configure 进行编译最终在/tmp下生成一个.txz格式的 Slackware 软件包。构建过程中请确保网络通畅因为脚本需要拉取源码与补丁。第三步安装生成的软件包构建完成后用 Slackware 标准的installpkg命令安装生成的软件包sudo installpkg /tmp/qownnotes-版本号-x86_64-1.txz安装完成后即可在系统菜单中找到 QOwnNotes 并启动。在 Slackware 14.1 上安装 QOwnNotesSlackware 14.1 的安装流程与 14.2 类似区别在于所需的 Qt 5 版本更旧5.5.1且不需要单独安装 libxkbcommon、libproxy 和 js185cd /tmp wget http://bear.alienbase.nl/mirrors/people/alien/sbrepos/14.1/x86_64/qt5/qt5-5.5.1-x86_64-4alien.txz sudo installpkg qt5-5.5.1-x86_64-4alien.txz随后克隆 SlackBuild 仓库并进入14.1目录构建cd /tmp git clone https://github.com/pbek/qownnotes-slackbuilds.git cd qownnotes-slackbuilds/14.1/qownnotes ./dobuild.sh最后同样使用installpkg安装生成的软件包即可。常见问题Could not write secret to keychain报错在 Slackware 上安装完成后首次运行 QOwnNotes 时日志中可能记录Could not write secret to keychain错误。这条错误说明 QOwnNotes 无法把密钥如云同步密码、代理密码、AI API Key 等写入系统的密钥存储服务。报错原因QOwnNotes 通过qtkeychain库仓库内置子库见 src/QOwnNotes.pro 与 src/CMakeLists.txt访问 Linux 桌面上的密钥存储。在 Linux 上qtkeychain依赖一个运行中的Secret Service实现通常是 D-Bus 上的org.freedesktop.secrets或KWallet。如果桌面上没有安装或启动对应的密钥守护进程密钥写入就会失败并产生该警告。针对 GNOME 及其他 Secret Service 桌面对于基于 GNOME 或任何使用 Secret Service 协议的桌面环境请从 Slackware 或 SlackBuilds 仓库安装以下软件包gnome-keyring libsecret seahorsegnome-keyring提供 Secret Service 守护进程本身libsecretqtkeychain在 Linux 上加载的 Secret Service 客户端库seahorse图形化的密钥管理工具便于查看和管理 QOwnNotes 存入的密钥条目。安装完成后重新启动桌面会话让密钥守护进程随会话启动然后再运行 QOwnNotes。针对 KDE PlasmaKDE Plasma 桌面使用 KWallet 作为密钥存储请安装 KWallet 的支持组件kwalletmanager安装并启用 KWallet 后重启桌面会话QOwnNotes 即可通过qtkeychain正常写入密钥。QOwnNotes 的降级行为从 src/services/cryptoservice.cpp 的源码可以看到密钥写入失败时 QOwnNotes会自动回退到旧式的 SimpleCrypt 加密legacyEncryptToString实现位于 src/libraries/simplecrypt/simplecrypt.cpp密钥仍可正常工作只是以旧式格式保存在本地配置/数据库中。因此该报错不会导致功能不可用但配置钥匙串后可以获得更安全的密钥存储。源码视角钥匙串机制的底层原理理解钥匙串配置背后的原理有助于在其他发行版上排查同类问题。以下实现细节均来自当前仓库源码。1. 服务名与密钥引用QOwnNotes 在qtkeychain中以QOwnNotes作为服务名Debug 构建会追加Debug后缀多会话场景会追加会话标识见 cryptoservice.cpp。写入成功的密钥在存储层以一个qtkeychain:前缀的引用标记marker表示读回时再解析为真实密钥见 cryptoservice.cpp。2. Secret Service 可用性探测在带QON_KEYCHAIN_DBUS_PROBE编译选项的构建中QOwnNotes 会通过 D-Bus 探测以下服务是否已注册或可激活见 cryptoservice.cpporg.freedesktop.secretsSecret Service对应 gnome-keyring 等实现org.kde.kwalletd6KDE Plasma 6org.kde.kwalletd5KDE Plasma 5这一探测只检查服务是否可达不会触发解锁弹窗。如果探测不到任何密钥服务QOwnNotes 会在本次运行中跳过所有钥匙串写入直接使用旧式 SimpleCrypt 加密并记录警告日志No system keychain is available, secrets will be stored with the legacy encryption见 cryptoservice.cpp。这就是为什么在无密钥服务的 Slackware 环境中会出现上述警告的根源。3. 钥匙串超时设置系统钥匙串尤其是一开始未解锁时可能导致写入操作阻塞QOwnNotes 提供了可配置的超时保护默认2 秒可调范围为1120 秒。该设置位于通用设置的 Keychain 分组中对应 UI 定义见 generalsettingswidget.ui读取与边界钳制逻辑见 cryptoservice.cpp。超时后同样会回退到旧式加密避免界面卡死。4. 旧密钥自动迁移从早期版本升级而来、密钥原本以 SimpleCrypt 格式存储的用户会在启动时触发自动迁移设置项、云连接密码、脚本私有变量中的旧式密钥会被读取、写入钥匙串并替换为qtkeychain:引用标记见 cryptoservice.cpp。因此在 Slackware 上正确配置钥匙串后原有密码类数据会平滑过渡到系统密钥存储。延伸其他安装途径如果 SlackBuild 构建流程在你的环境中不可行QOwnNotes 还提供多种跨发行版安装方式参见官方安装文档目录安装指南总览其中包括 AppImage、Flatpak、Snap 以及 从源码构建 等方案。AppImage 与 Flatpak 均内置运行时依赖可避开 Slackware 依赖安装环节需要完全掌控构建参数时则可直接采用本文的 SlackBuild 路线。赞分享桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载相关推荐QOwnNotes 在 Slackware Linux 上的安装与 SlackBuild 构建指南QOwnNotes 在 Slackware Linux 上的安装与 SlackBuild 构建指南 导读 本文基于 QOwnNotes 官方安装文档 英文版桌面应用QOwnNotes 在 Slackware Linux 上的安装与 Keychain 密钥链配置实战QOwnNotes 在 Slackware Linux 上的安装与 Keychain 密钥链配置实战 本文基于 QOwnNotes 官方文档站意大利语版安装指南桌面应用QOwnNotes 在 KaOS Linux 上的安装与系统钥匙串Keychain故障排查指南QOwnNotes 在 KaOS Linux 上的安装与系统钥匙串Keychain故障排查指南 本文以 KaOS Linux 为安装场景讲解如何通过社区维桌面应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/12 16:22:41

Druid连接池配置与JDBCUtils封装深度解析

1. 项目概述:为什么一个.properties文件和一个工具类值得单独写一篇深度复盘“druid.properties 和 JDBCUtils工具类”——看到这个标题,很多刚学完JDBC基础的同学第一反应是:“不就是配个连接池、写个封装类吗?网上一搜一大把&am…

2026/10/12 16:17:39

方法调用结构样本:AI生成代码不跑偏的关键

先说一个我踩过的坑。几个月前,我用人工智能编程工具写一个待办任务模块,需求描述写得很清楚:创建待办、列表查询、标记完成、删除。生成出来的代码单看每个方法都没问题,真跑起来却发现一堆结构性问题——Controller里塞了状态判…

2026/10/12 22:49:34

实时手势识别落地实战:OpenCV+Keras轻量CNN低延迟优化方案

简介:这是一套基于Python的实时手势识别系统开源实现,面向计算机视觉初学者与深度学习实践者,解决手势数据采集、模型训练与实时预测的一站式需求。资源包共4991个文件,主体为4984张手势样本JPG图像(用于训练/测试集&a…

2026/10/12 22:49:34

Java进阶:从源码理解List与泛型的核心机制与实战避坑

写这篇的时候,我刚从一场代码走查里出来。某同事把一个方法的入参设计成了 String[] ,然后在方法体里反复 Arrays.asList 、 toArray 来回倒腾,就为了在一个固定长度的数组上做增删操作。我看完没说话,因为我知道这不是他一…

2026/10/12 22:49:34

C++模板详解:从函数模板到类模板与特化的类型参数化实践

1. 模板到底解决什么问题:一种"类型参数化"的思考方式1.1 没有模板的时候,我们是怎么写代码的先从一个最典型的场景说起。假设你要写一个求两个数最大值的函数,第一版你写了 int 版本,测试没问题;第二天产品…

2026/10/12 22:49:34

AI智能体落地银行?MCP协议是关键底座与实战指南

“AI智能体领航,MCP筑基”,这个标题里的每一个词我都拆开揉碎看过。过去一年我和团队在某股份制银行的智能转型项目里,把AI智能体从概念变成了实际跑在客服、运营、信贷审批链路上的生产力工具,也在这个过程中亲自验证了MCP&#…

2026/10/12 22:49:34

风储联合调频控制策略与无穷大系统仿真建模详解

前阵子帮一个风电场做并网技术复核,对方一再问一个问题:风机明明可以多出力,为什么要把功率“压着”发?等电网频率掉下来的时候再救急,不是更合理吗?这个问题背后,其实就牵出了风电调频、储能调…

2026/10/12 22:44:33

SystemVerilog、C++与Java在IC验证中的分层协作机制

1. 这不是语言对比课,而是一次IC设计现场的“工具认知校准”你有没有在IC设计团队里听过这样的对话:“这个UVM testbench用System Verilog写,但验证平台的调度器是Java写的”“我们跑回归的脚本引擎底层是C,但配置文件又得用SV的c…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/12 0:04:22

绝缘子缺陷检测数据集清洗与工业级训练实战指南

简介:本资源是面向电力AI研发人员、工业视觉工程师及智能巡检系统开发者的绝缘子缺陷检测专用YOLO格式数据集,解决无人机航拍场景下绝缘子破损、污闪、积雪等9类典型缺陷的精准识别与定位难题。数据集共2139张真实巡检图像(含训练/验证/测试集…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑