shell脚本打包成可以在麒麟桌面操作系统上使用的deb包

news2025/6/2 3:09:25

以下是将 .sh 的 shell 脚本打包成可以在麒麟桌面操作系统上使用的 .deb 包的详细步骤和分析过程:

准备工作

  1. 安装必要的工具:在麒麟桌面操作系统上,需要安装 dh-makedevscripts 等工具,这些工具用于生成和构建 Debian 包。打开终端,运行以下命令进行安装:
    sudo apt-get install dh-make devscripts
    
  2. 设置环境变量(可选):为了在生成 Debian 包时自动填充维护者信息等字段,可以设置 DEBEMAILDEBFULLNAME 环境变量。在终端中运行以下命令:
    cat >>~/.bashrc <<EOF
    DEBEMAIL="your_email@example.com"
    DEBFULLNAME="Your Name"
    export DEBEMAIL DEBFULLNAME
    EOF
    . ~/.bashrc
    
    your_email@example.comYour Name 替换为你的实际邮箱和姓名。

创建 Debian 包

  1. 创建工作目录:创建一个以包名和版本号命名的目录,例如 mypackage-1.0,并将你的 shell 脚本(假设为 script.sh)移动到该目录中:
    mkdir mypackage-1.0
    cd mypackage-1.0
    cp /path/to/your/script.sh .
    
  2. 使用 dh_make 生成 Debian 包结构:在 mypackage-1.0 目录中运行以下命令:
    dh_make --indep --createorig
    
    这将创建一个名为 mypackage_1.0.orig.tar.gz 的原始源码归档文件,并在当前目录下生成一个 debian 文件夹,其中包含构建 Debian 包所需的控制文件。
  3. 编辑 debian/control 文件:在 debian 文件夹中找到 control 文件,并根据需要修改其中的内容。例如:
    Source: mypackage
    Section: base
    Priority: optional
    Maintainer: Your Name <your_email@example.com>
    Build-Depends: debhelper-compat (= 13)
    Standards-Version: 4.5.1
    Rules-Requires-Root: no
    
    Package: mypackage
    Architecture: all
    Depends: ${misc:Depends}
    Description: A brief description of your package
    
    确保将 Your Nameyour_email@example.com 替换为你的实际姓名和邮箱地址,同时根据实际情况填写其他字段。
  4. 创建 debian/install 文件:在 debian 文件夹中创建一个名为 install 的文件,并指定要安装的脚本及其目标路径。例如:
    script.sh usr/bin
    
    这表示将 script.sh 安装到目标系统的 /usr/bin 目录下。
  5. 创建debian/postinst文件,在debian文件夹中穿件一个名为postinst的文件,并执行要执行的脚步。例如:

sudo bash usr/bin/script.sh


如果后台运行脚本,可以在最后加上&

sudo bash usr/bin/script.sh &


6. **构建 Debian 包**:在 `mypackage-1.0` 目录中运行以下命令:
```bash
debuild -us -uc -d

这将构建一个名为 mypackage_1.0_all.deb 的 Debian 包,并将其放置在当前目录的上一级目录中。-us-uc 参数表示跳过 GPG 签名。

安装 Debian 包

  1. 使用 dpkg 命令安装:在终端中切换到包含 .deb 文件的目录,运行以下命令:
    sudo dpkg -i mypackage_1.0_all.deb
    
    如果提示缺少依赖项,运行以下命令自动解决依赖问题:
    sudo apt-get install -f
    
  2. 使用 apt 命令安装:也可以使用 apt 命令安装本地的 .deb 包:
    sudo apt install ./mypackage_1.0_all.deb
    
    apt 会自动处理依赖关系。
  3. 使用图形界面安装:双击 .deb 文件,系统会调用软件中心进行安装,按照提示操作即可。

分析过程

  • 工具选择:选择 dh-makedebuild 等工具是因为它们是 Debian 社区广泛使用的工具,能够帮助快速生成和构建 Debian 包,简化了打包过程。
  • 目录结构:按照 Debian 包的标准目录结构创建工作目录和文件,确保包的结构符合规范,便于安装和管理。
  • 控制文件control 文件是 Debian 包的核心,它包含了包的元数据,如包名、版本、依赖关系等。正确填写这些信息对于包的正确安装和管理至关重要。
  • 安装路径:通过 debian/install 文件指定脚本的安装路径,确保脚本能够在目标系统中正确放置和执行。
  • 依赖管理:在 control 文件中指定依赖关系,可以确保在安装包时自动安装所需的依赖项,避免因缺少依赖而导致程序无法正常运行。
  • 安装方式:提供了多种安装方式,包括命令行和图形界面,以满足不同用户的需求。

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

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

相关文章

代码随想录算法训练营 Day61 图论ⅩⅠ Floyd A※ 最短路径算法

图论 题目 97. 小明逛公园 本题是经典的多源最短路问题。 在这之前我们讲解过&#xff0c;dijkstra朴素版、dijkstra堆优化、Bellman算法、Bellman队列优化&#xff08;SPFA&#xff09; 都是单源最短路&#xff0c;即只能有一个起点。 而本题是多源最短路&#xff0c;即求多…

改写自己的浏览器插件工具 myChromeTools

1. 起因&#xff0c; 目的: 前面我写过&#xff0c; 自己的一个浏览器插件小工具 最近又增加一个小功能&#xff0c;可以自动滚动页面&#xff0c;尤其是对于那些瀑布流加载的网页。最新的代码都在这里 2. 先看效果 3. 过程: 代码 1, 模拟鼠标自然滚动 // 处理滚动控制逻辑…

python-pptx去除形状默认的阴影

文章目录 效果原理1. 阴影继承机制解析2. XML层操作细节3. 注意事项 扩展应用1. 批量去除阴影2. 复合效果控制 效果 右边这个是直接添加一个形状。可以看到它会默认被赋予一个阴影。 然而&#xff0c;这个东西在特定的场合&#xff0c;其实是我们所不需要的。 那怎么把这个阴…

kuboard自带ETCD存储满了处理方案

一、前言 当运行 ETCD 日志报 Erro: mvcc database space exceeded 时&#xff0c;说明 ETCD 存储不足了&#xff08;默认 ETCD 存储是 2G&#xff09;&#xff0c;配额会触发告警&#xff0c;然后 Etcd 系统将进入操作受限的维护模式。 通过下面命令可以查看 ETCD 存储使用情…

SpringBoot+tabula+pdfbox解析pdf中的段落和表格数据

一、前言 在日常业务需求中&#xff0c;往往会遇到解析pdf文件中的段落或者表格数据的需求。 常见的做法是使用 pdfbox 来做&#xff0c;但是它只能提取文本数据&#xff0c;没有我们在文件页面上面的那种结构化组织&#xff0c;文本通常是散乱的包含各种换行回车空格等格式&a…

GitHub push失败解决办法-fatal: unable to access ‘https://github.com/xxx

问题描述&#xff1a; 问题解决&#xff1a; 1、首先查找自己电脑的代理地址和端口 windows教程如下&#xff1a; 1、搜索控制面板-打开Internet选项 2、点击局域网设置&#xff1a; 3、如图为地址和端口号 即可获得本机地址和端口号 2、根据上一步获得的本机地址和端口号为…

电商平台 API、数据抓取与爬虫技术的区别及优势分析

一、技术定义与核心原理 电商平台 API&#xff08;应用程序编程接口&#xff09; 作为平台官方提供的标准化数据交互通道&#xff0c;API 通过 HTTP 协议实现不同系统间的结构化数据传输。开发者需申请授权&#xff08;如 API 密钥&#xff09;&#xff0c;按照文档规范调用接口…

单卡4090部署Qwen3-32B-AWQ(4bit量化)-vllm

单卡4090部署Qwen3-32B-AWQ(4bit量化) 模型&#xff1a;Qwen3-32B-AWQ(4bit量化) 显卡&#xff1a;4090 1 张 python版本 python 3.12 推理框架“vllm 重要包的版本 vllm0.9.0创建GPU云主机 这里我使用的是优云智算平台的GPU&#xff0c;使用链接可以看下面的 https://blog.…

漫画Android:Handler机制是怎么实现的?

线程之间通信会用到Handler&#xff0c;比如&#xff0c;在子线程中进行耗时的网络请求任务&#xff0c;子线程在获取到数据后&#xff0c;更新界面的时候就需要用到Handler&#xff1b; 子线程在获取到数据后&#xff0c;不直接去更新 界面&#xff0c;而是把数据通过一个消息…

多部手机连接同一wifi的ip一样吗?如何更改ip

通常情况下&#xff0c;多部手机连接同一个WiFi时&#xff0c;它们的IP地址是各不相同的&#xff08;在局域网内&#xff09;。但是&#xff0c;从互联网&#xff08;外网&#xff09;的角度看&#xff0c;它们共享同一个公网IP地址。让我详细解释一下&#xff0c;并说明如何更…

飞牛fnNAS的Docker应用之迅雷篇

目录 一、“迅雷”应用安装 二、启动迅雷 三、迅雷账号登录 四、修改“迅雷”下载保存路径 1、下载路径准备 2、停止“迅雷”Docker容器 3、修改存储位置 4、重新启动Docker容器 5、再次“启用”迅雷 五、测试 1、在PC上添加下载任务 2、手机上管理 3、手机添加下…

SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南

SQLMesh 提供了灵活的多层级变量系统&#xff0c;支持从全局配置到模型局部作用域的变量定义。本文将详细介绍 SQLMesh 的四类用户定义变量&#xff08;global、gateway、blueprint 和 local&#xff09;以及宏函数的使用方法。 一、变量类型概述 SQLMesh 支持四种用户定义变量…

inviteflood:基于 UDP 的 SIP/SDP 洪水攻击工具!全参数详细教程!Kali Linux教程!

简介 一种通过 UDP/IP 执行 SIP/SDP INVITE 消息泛洪的工具。该工具已在 Linux Red Hat Fedora Core 4 平台&#xff08;奔腾 IV&#xff0c;2.5 GHz&#xff09;上测试&#xff0c;但预计该工具可在各种 Linux 发行版上成功构建和执行。 inviteflood 是一款专注于 SIP 协议攻…

Visual Studio 2022 设置自动换行

Visual Studio 2022 设置自动换行 一、在 Visual Studio 菜单栏上&#xff0c;选择 工具>选项二、选择“文本编辑器”>“所有语言”>“常规” 全局设置此选项。 一、在 Visual Studio 菜单栏上&#xff0c;选择 工具>选项 二、选择“文本编辑器”>“所有语言”&…

【Linux网络篇】:简单的TCP网络程序编写以及相关内容的扩展

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;Linux篇–CSDN博客 文章目录 一.简单的TCP网络程序相关接口代码实现服务器单进程版服务器多…

Scratch节日 | 粽子收集

端午节怎么过&#xff1f;当然是收粽子啦&#xff01;这款 粽子收集 小游戏&#xff0c;让你一秒沉浸节日氛围&#xff0c;轻松收集粽子&#xff0c;收获满满快乐&#xff01; &#x1f3ae; 玩法介绍f 开始游戏&#xff1a;点击开始按钮&#xff0c;游戏正式开始&#xff01;…

stl三角面元文件转颗粒VTK文件

效果展示&#xff1a; import os import sys import json import argparse import numpy as np import pandas as pd import open3d as o3d from glob import globPARTICLE_RADIUS 0.025def stl_to_particles(objpath, radiusNone):if radius is None:radius PARTICLE_RADIU…

Java String的使用续 -- StringBuilder类和StringBuffer

文章目录 字符串的不可变性StringBuilder和StringBuffer函数使用 字符串的不可变性 字符串不可变是因为有private修饰&#xff0c;只能在类的内部使用不可以在类外使用&#xff0c;因此使用时是不可以修改字符串的 public class test {public static void main(String[] args…

基于python+Django+Mysql的校园二手交易市场

文章目录 基于pythonDjangoMysql的校园二手交易市场运行步骤系统设计功能设计任务目标用户特点参与者列表基本要求功能模块图 数据库设计会员用户信息表&#xff08;user_userinfo&#xff09;商品信息表&#xff08;goods_goodsinfo&#xff09;管理员用户信息表&#xff08;a…

从零打造算法题刷题助手:Agent搭建保姆级攻略

我用Trae 做了一个有意思的Agent 「大厂机试助手」。 点击 https://s.trae.com.cn/a/d2a596 立即复刻&#xff0c;一起来玩吧&#xff01; Agent 简介 Agent名称为大厂机试助手&#xff0c;主要功能有以下三点。 解题&#xff1a; 根据用户给出的题目给出具体的解题思路引导做…