在用apt install中如何选择安装路径?

2023-11-05

apt install并不会选择软件包的安装路径,这个路径是在软件包里面记录好路径的相关信息的。一个deb包,只是一堆文件、文件夹的压缩包而已,而这个包里面记录了这些文件、文件夹应该安装的位置。因此,简单点说,你不能够在apt install的命令中选择deb包的安装位置,因为这个位置信息是在包里写好的,并不是通过apt install命令来指派的。

实际上,deb包里的路径是跟你系统的gnu/linux路径相关的,所以一般来讲,/usr/share/bin,man帮助页、图标这些都位置都是不能够改变的。

如果要查看deb安装的目录信息,可以通过dpkg-deb -c 来查看,不过,首先你要把这个包下载下来才能够看到:

 dpkg-deb -c todesk-v4.3.1.0-amd64.deb
drwxrwxr-x root/root         0 2022-05-17 18:36 ./
drwxrwxr-x root/root         0 2022-05-17 18:36 ./opt/
drwxrwxr-x root/root         0 2022-05-17 18:43 ./opt/todesk/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./opt/todesk/res/
-rw-rw-r-- root/root    461913 2022-05-17 18:36 ./opt/todesk/res/fake.png
drwxrwxr-x root/root         0 2022-08-24 12:25 ./opt/todesk/bin/
-rwxrwxr-x root/root      1480 2022-06-13 17:34 ./opt/todesk/bin/libnvidia-encode.so.1
-rwxrwxr-x root/root  21330048 2022-08-24 12:25 ./opt/todesk/bin/ToDesk_Session
-rwxrwxr-x root/root    186912 2022-08-24 12:25 ./opt/todesk/bin/libva-x11.so.2
-rwxrwxr-x root/root    598192 2022-08-24 12:25 ./opt/todesk/bin/libva.so.2
-rwxrwxr-x root/root     70336 2022-08-24 12:25 ./opt/todesk/bin/libmfx.so.1
-rwxrwxr-x root/root  38676752 2022-08-24 12:25 ./opt/todesk/bin/ToDesk
-rwxrwxr-x root/root    298856 2022-08-24 12:25 ./opt/todesk/bin/libglut.so.3
-rwxrwxr-x root/root    669584 2022-06-13 17:34 ./opt/todesk/bin/libGLEW.so.2
-rwxrwxr-x root/root     56912 2022-08-24 12:25 ./opt/todesk/bin/libva-drm.so.2
-rwxrwxr-x root/root  43947712 2022-08-24 12:25 ./opt/todesk/bin/libzrtc.so
-rwxrwxr-x root/root    666472 2022-08-24 12:25 ./opt/todesk/bin/libigdgmm.so.12
-rwxrwxr-x root/root  35237872 2022-08-24 12:25 ./opt/todesk/bin/iHD_drv_video.so
-rwxrwxr-x root/root  21411904 2022-08-24 12:25 ./opt/todesk/bin/ToDesk_Service
-rwxrwxr-x root/root  15890688 2022-08-24 12:25 ./opt/todesk/bin/libmfxhw64.so.1
-rwxrwxr-x root/root      3528 2022-06-13 17:34 ./opt/todesk/bin/libnvcuvid.so
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/local/
drwxrwxr-x root/root         0 2022-06-10 10:33 ./usr/local/bin/
-rwxrwxr-x root/root       231 2022-06-10 10:33 ./usr/local/bin/todesk
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/16x16/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/16x16/apps/
-rw-rw-r-- root/root      1322 2022-05-17 18:36 ./usr/share/icons/hicolor/16x16/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/256x256/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/256x256/apps/
-rw-rw-r-- root/root      6245 2022-05-17 18:36 ./usr/share/icons/hicolor/256x256/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/128x128/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/128x128/apps/
-rw-rw-r-- root/root      3514 2022-05-17 18:36 ./usr/share/icons/hicolor/128x128/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/64x64/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/64x64/apps/
-rw-rw-r-- root/root      2237 2022-05-17 18:36 ./usr/share/icons/hicolor/64x64/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/48x48/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/48x48/apps/
-rw-rw-r-- root/root      1927 2022-05-17 18:36 ./usr/share/icons/hicolor/48x48/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/512x512/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/512x512/apps/
-rw-rw-r-- root/root     12509 2022-05-17 18:36 ./usr/share/icons/hicolor/512x512/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/32x32/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/32x32/apps/
-rw-rw-r-- root/root      1608 2022-05-17 18:36 ./usr/share/icons/hicolor/32x32/apps/todesk.png
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/24x24/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./usr/share/icons/hicolor/24x24/apps/
-rw-rw-r-- root/root      1482 2022-05-17 18:36 ./usr/share/icons/hicolor/24x24/apps/todesk.png
drwxrwxr-x root/root         0 2022-08-24 12:25 ./usr/share/applications/
-rw-rw-r-- root/root       394 2022-08-24 12:25 ./usr/share/applications/todesk.desktop
drwxrwxr-x root/root         0 2022-05-17 18:36 ./etc/
drwxrwxr-x root/root         0 2022-05-17 18:36 ./etc/systemd/
drwxrwxr-x root/root         0 2022-06-10 10:33 ./etc/systemd/system/
-rw-rw-r-- root/root       394 2022-06-10 10:33 ./etc/systemd/system/todeskd.service
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libigdgmm.so -> libigdgmm.so.12
lrwxrwxrwx root/root         0 2022-06-13 17:34 ./opt/todesk/bin/libnvidia-encode.so -> libnvidia-encode.so.1
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libva-drm.so -> libva-drm.so.2
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libglut.so -> libglut.so.3
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libmfx.so -> libmfx.so.1
lrwxrwxrwx root/root         0 2022-06-13 17:34 ./opt/todesk/bin/libGLEW.so -> libGLEW.so.2
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libva-x11.so -> libva-x11.so.2
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libva.so -> libva.so.2
lrwxrwxrwx root/root         0 2022-08-24 12:25 ./opt/todesk/bin/libmfxhw64.so -> libmfxhw64.so.1

我这里的是todesk的deb包,可以看到,这个包已经规定来了文件的安装路径。

那如果你要修改安装路径,那应该怎么弄呢?最简单的办法就是修改deb的控制信息,把里面的安装路径给改了,然后重新生成deb包,接着通过命令来安装,不过这个需要你对deb的构成、制作有一定的了解。这里,我把todest的安装包的控制信息导出来(通过dkpk -

命令),可以看到有如下内容:

dpkg -e todesk-v4.3.1.0-amd64.deb unpack/

unpack$ ls
control  postinst  postrm  preinst  prerm

可以看到postinst  postrm  preinst  prerm都是脚本

cat preinst 
#!/bin/bash

TODESK_PACK_NAME=todesk
TODESK_INSTALL_PATH=/opt/${TODESK_PACK_NAME}
TODESK_SERVICE_CONFIGURE_FILE=config.ini
TODESK_SERVICE_CONFIGURE_PATH=${TODESK_INSTALL_PATH}/config/${TODESK_SERVICE_CONFIGURE_FILE}

#old version
killall todesk > /dev/null 2>&1 || true
if [ -f "${TODESK_INSTALL_PATH}/config/todeskd.conf" ]; then
    rm ${TODESK_INSTALL_PATH}/config/todeskd.conf
fi

# disgusting desktop file cache
# fix me:
if [ -f "/usr/share/applications/todesk.desktop" ]; then
    version=$(awk -F= -v key="Version" '$1==key {print $2}' /usr/share/applications/todesk.desktop)
    if [ "4.3.0.0" \> "$version" ]; then
        rm /usr/share/applications/todesk.desktop
        echo "Waiting desktop icon cache refresh ..."
        sleep 30
    fi
fi

if [ -f "${TODESK_SERVICE_CONFIGURE_PATH}" ]; then
    cp ${TODESK_SERVICE_CONFIGURE_PATH} ${TODESK_INSTALL_PATH}/

可以看到

TODESK_PACK_NAME=todesk

TODESK_INSTALL_PATH=/opt/${TODESK_PACK_NAME}

TODESK_SERVICE_CONFIGURE_FILE=config.ini

TODESK_SERVICE_CONFIGURE_PATH=${TODESK_INSTALL_PATH}/config/${TODESK_SERVICE_CONFIGURE_FILE}

这几行代码提示了安装路径,你把这里改了,就可以改变安装路径了。

除了更改deb的信息,你还可以通过源码来安装,这样你就可以弄个一个所谓的“绿色”版本,但这需要你自己去搞定软件的依赖信息,需要你搞定编译过程出现的问题,这些对于初学者问来说,都不是简单的问题,需要有一定的知识。

最后,还有一个方法,就是通过以下命令来安装:

sudo dpkg -i --instdir=/to/your/customer/path ***.deb

但这么做不一定可以成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在用apt install中如何选择安装路径? 的相关文章

  • Linux C++ 错误:未定义对“dlopen”的引用

    我在 Linux 上使用 C Eclipse 工作 并且想要使用一个库 Eclipse 向我显示一个错误 undefined reference to dlopen 你知道解决办法吗 这是我的代码 include
  • linux新手关于嵌入式linux设备驱动的问题

    最近在研究linux驱动 正如我读过的那些文章所说 设备驱动程序模块很可能会根据内核的需要自动加载 因此我想知道内核如何确定为特定设备 声卡 I2C spi 设备 等 我也无法彻底想象内核如何在启动时检测每个硬件设备 与嵌入式linux相关
  • Bash:检查是否给出了参数(例如是否有参数“-a”?)

    我有一个脚本 它应该接受 2 个参数 s 和 d 如果未给出 d 参数 我想删除我的调试文件 与 s 相同 如何检查 1 或 2 是否为 s 或 d 舒尔有两个参数 我可以做到 蛮力 if test 1 d test 2 d then rm
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 如何在C(Linux utf8终端)中打印“盒子抽屉”Unicode字符?

    我正在尝试显示 方框图范围 2500 257F 中的 Unicode 字符 它应该是标准 utf8 Unicode 标准 版本 6 2 我根本做不到 我首先尝试使用旧的 ASCII 字符 但 Linux 终端以 utf8 显示 并且没有显示
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • Docker忽略limits.conf(试图解决“打开文件太多”错误)

    我正在运行一个 Web 服务器 该服务器正在处理数千个并发 Web 套接字连接 为了实现这一点 在 Debian linux 我的基本镜像是 google debian wheezy 在 GCE 上运行 上 打开文件的默认数量设置为 100
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win

随机推荐

  • java 剪刀,石头,布,游戏

    局数没有使用Tom类的属性调用 如果有会的 请指教一下 import java util Random import java util Scanner public class Homework014 编写一个main方法 public
  • GraphEdit使用

    GraphEdit 是一个用于建立和测试Filter graph 的可视化工具 在DirectX SDK 中附带一个可执行程序版本 在SDK目录中的Bin DXUtils graphedt exe 你可以快速测试你建立的Filter gra
  • 因果论(五)——Structural Causal Model(SCM 结构因果模型、函数模型和图模型)

    一 核心思想 SCM的核心思想是因果图 因果图之前已经介绍过 SCM和RCM是等价的 SCM的关键在于图模型 来源于贝叶斯网络 将Bayes网络加上外部干预 用来定义外部干预的因果作用和描述多个变量之间的因果关系 利用因果网络不仅能定量评价
  • 自动化测试框架实战详解

    B站最通俗易懂 Python接口自动化测试从入门到精通 超详细的进阶教程 看完这套视频就够了 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点 接下来本篇文章详细分享一下接口自动化框架设计的思路总结 希望能对
  • 使用POI同时对Excel文件进行读和写操作时避免Invalid header signatu

    这学期学到了数据库概论 课程设计需要做一个DBMS 图方便想把数据什么的存到xls文件中 在使用poi对excel文件同时进行读和写操作时 如果这样写 public void test try File file new File user
  • linux sed命令,如何替换换行符“\n”

    linux sed命令如何替换换行符n 实现方法 第一种方法使用test跳转命令实现替换换行符 branch和test区别 第二种方法使用branch跳转命令实现替换换行符 linux sed命令 如何替换换行符 n 在一次sed使用中 执
  • 关于GD32E230进入睡眠后无法烧录程序解决方法

    软件安装 1 到GD32官网兆易创新 gd32mcu com 找到下图文件下载并安装 2 安装软件 傻瓜式安装 就不多讲了 直接一步到底 3 进入主题 打开刚刚下载好的软件 开发板设置 1 连接开发板上的串口 2 进入BOOT0模式 接3
  • linxu下c/c++遍历文件夹获取文件

    最近工作需要 需要遍历文件夹下的文件 但是我发现遇到两个非常有意思的问题 记录一下 测试的平台为 PC linux Tina linux Linux version 5 15 0 41 generic buildd lcy02 amd64
  • JDK JRE JVM之间的关系

    文章目录 1 从定义的角度解释JDK JRE JVM 2 详细介绍JDK 3 详细介绍JRE 4 详细介绍JVM 1 JVM内部区域划分 5 如何运行一个java程序 本篇文章仅仅是个人片面观点 可能有错误或者表述不清的地方 1 从定义的角
  • Flink从入门到放弃(九)-万字讲解CDC设计(1)

    一 准备工作 在开始研究Flink CDC原理之前 本篇先以CDC1 0版本介绍 后续会延伸介绍2 0的功能 需要做以下几个工作 本篇以Flink1 12环境开始着手 打开Flink官网 查看Connector模块介绍 打开Github 下
  • Unicode与JavaScript详解

    上个月 我做了一次分享 详细介绍了Unicode字符集 以及JavaScript语言对它的支持 下面就是这次分享的讲稿 一 Unicode是什么 Unicode源于一个很简单的想法 将全世界所有的字符包含在一个集合里 计算机只要支持这一个字
  • 水箱建模最小二乘法_Comsol Multiphysics for Mac(建模仿真软件)

    COMSOL Multiphysics 是一款全球通用的基于高级数值方法和模拟物理场问题的通用软件 拥有 网格划分 研究和优化 求解器 可视化和后处理 仿真 App等相关功能 轻松实现各个环节的流畅进行 它能够解释耦合或多物理现象 附加产品
  • oracle 19c rac asm磁盘绑定的方法

    multipath 通过scsi id udev 通过scsi id oracle AFD 直接绑定后在 dev oracleafd disks 下面生成设备文件 asmcmd afd label OCR1 dev sda init 虚拟机
  • 【华为OD机试真题 JAVA】数组二叉树

    JS版 华为OD机试真题 JS 数组二叉树 标题 数组二叉树 时间限制 1秒 内存限制 262144K 语言限制 不限 二叉树也可以用数组来存储 给定一个数组 树的根节点的值存储在下标1 对于存储在下标N的节点 它的左子节点和右子节点分别存
  • QT-自定义消息提示框,好看大气

    QT 自定义消息提示框 好看大气 前言 一 演示效果 二 关键程序 三 下载链接 前言 原生的QT提示框总是让人觉得难以接受 因此特定重新封装一个类来替换原生的 使用过程跟原生的一致 使用比较方便 一 演示效果 二 关键程序 include
  • PHP常见加密函数(总结)

    1 加密算法汇总 比较常用的算法 md5 加密 crypt 加密 sha1加密 URL编码加密 base64编码加密 信息加密技术分为三类 单项散列加密 对称散列加密 非对称散列加密 1 1单项散列加密 MD5加密 crypt 加密 sha
  • 数据结构——深度优先遍历(DFS)无向连通图

    以下是数据结构中关于深度优先遍历无向连通图的操作 编程风格参考严蔚敏版数据结构 其实深度优先遍历就是二叉树的先序遍历的推广 头文件以及宏定义 include
  • css渐变

    1 线性渐变 是从一个方向到另一个方向的渐变 属性值 background linear gradient 颜色 默认值 从上到下线性渐变 代码 结果 属性延伸 1 改变渐变方向 从下到上 background linear gradien
  • RecyclerView 网格布局是设置分割线

    1 分割线 public class DividerGridItemDecoration extends RecyclerView ItemDecoration private static final int ATTRS new int
  • 在用apt install中如何选择安装路径?

    apt install并不会选择软件包的安装路径 这个路径是在软件包里面记录好路径的相关信息的 一个deb包 只是一堆文件 文件夹的压缩包而已 而这个包里面记录了这些文件 文件夹应该安装的位置 因此 简单点说 你不能够在apt instal