附带共享库的 GNU/Linux Firefox 插件(用于无需 root 访问权限的安装)

2024-03-20

该应用程序是一个 Firefox 插件(从 $HOME/.mozilla/plugins 加载),因此设置 LD_LIBRARY_PATH 的包装脚本不是一个简单的选择。

据我所知,RPATH 不能引用 $HOME,只能是绝对路径。

Firefox 尝试从 ~/.mozilla/plugins 中 dlopen 它的插件,但失败了(因为它依赖于安装在用户主目录中某处的共享库)。

修改 Firefox 菜单项以提供围绕 Firefox 的包装器(带有 LD_LIBRARY_PATH)太hacky了。

安装程序脚本应该做什么(没有 root 访问权限)才能使标准的 Firefox 加载依赖于共享库的插件?

  1. 我是否应该尝试将所有内容嵌入到 .so 中以删除依赖项?
  2. 我应该在安装阶段尝试制作安装程序脚本来完成链接或修补 RPATH 吗?

将 RPATH 设置为$ORIGIN/lib因此加载程序将查找与我的文件相关的库。

脚本只是将插件解压到$HOME/.mozilla/plugins/myplugin.so和图书馆$HOME/.mozilla/plugins/lib/

可以通过 gcc 添加 rpath 来指定链接器Wl,-rpath,'$ORIGIN/lib' ($应在 Makefile 中加倍),也可以在编译后更改patchelf.

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

附带共享库的 GNU/Linux Firefox 插件(用于无需 root 访问权限的安装) 的相关文章

  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • C# - 获取所有 Firefox 实例中所有打开的浏览选项卡

    如何获取 Chrome 和 Firefox 打开页面的 URL https stackoverflow com questions 7814027 how can i get urls of open pages from chrome a
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • Firefox Add-on SDK:如何使面板透明

    开发 Firefox 插件 任何人都可以帮助弄清楚如何使面板透明 这是显示面板的代码 var panel require sdk panel Panel width 570 height 250 contentURL require sdk
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • Linux shell 脚本:十六进制数字到二进制字符串

    我正在 shell 脚本中寻找一些简单的方法来将十六进制数字转换为 0 和 1 字符的序列 Example 5F gt 01011111 是否有任何命令或简单的方法来完成它 或者我应该为其编写一些开关 echo ibase 16 obase
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • sleep 0 有特殊含义吗?

    我看到很多用法sleep 0在我的一个客户项目中 代码看起来像这样 while true sleep 0 end 阅读一些像这样的答案this https stackoverflow com questions 3727420 signif

随机推荐

  • SQLite3 Node.js JSON

    我正在使用sqlite3NPM 包 我想将 JSON 存储在我的数据库列之一中 据我所知 SQLite本身能够存储JSONhttps www sqlite org json1 html https www sqlite org json1
  • Coq 中的案例分析证明

    我试图证明关于以下函数的命题 Program Fixpoint division m nat n nat measure m nat match lt nat 0 n with false gt 0 true gt match leq na
  • Steam:使用 PHP 将 SteamID64 转换为 SteamID

    有人如何使用 PHP javascript 将 steamid64 例如 76561198074259974 转换为 steamid STEAM 0 0 56997123 我想在加载屏幕上显示 steamid 但不是 steamid64 看
  • 在 C# 中查找 MP3 长度

    我在用着TagLib http developer novell com wiki index php TagLib Sharp从一些 MP3 中获取 ID3 标签数据 但我似乎无法找到 MP3 的长度 如何在 C 中找到 MP3 的长度
  • Microsoft Teams Tab 应用程序无法访问剪贴板

    I m developing the Microsoft Teams Tab application Tab application is run inside Microsoft Teams through iframe so there
  • 上下文操作模式自定义行为

    在 Android 开发者中菜单指南 http developer android com guide topics ui menus html CAB其中提到 当用户取消选择所有项目 按 后退 按钮或选择操作栏左侧的 完成 操作时 操作模
  • 中继器控件 - 取消特定项目的绑定

    在转发器控件中 是否有一种方法可以在呈现页面之前解除某些项目的绑定 目前 我们有一个绑定到转发器的项目集合 如果该项目不是当前语言的一部分 我们将隐藏该项目 我希望能够对中继器进行计数并返回有效的号码 不包括隐藏项目的计数 是否可以解除特定
  • 创建实时数据仓库

    我正在做一个个人项目 其中包括创建数据仓库 DWH 的完整架构 在本例中 作为 ETL 和 BI 分析工具 我决定使用 Pentaho 它具有许多功能 从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集 我读过数据仓库必须是关
  • 在Java中使用分隔符(与分割相反)连接数组元素的一种快速而简单的方法[重复]

    这个问题在这里已经有答案了 See 相关 NET 问题 https stackoverflow com questions 455438 opposite of string split with separators net 我正在寻找一
  • 为什么 std::vector 这么快(或者我的实现太慢)

    前几天我在玩游戏 试图看看我能在多大程度上优化某些东西 我决定从一个简单的映射开始 它只进行线性搜索来查找元素是否存在 然后尝试对其大部分进行优化 另外 为了进行比较 我使用 std find 对 std map 和 std vector
  • Protractor - 检查单选按钮是否被选中

    所以我遇到了这个问题 我运行量角器 硒测试 有时在测试过程中已经检查了单选按钮 有时则没有 etc div class radio item checked or div class radio item 您可以在其中看到该类有时具有 检查
  • 如何使用 Java 11 HttpClient 和 Jackson 将 JSON 响应映射到 Java 类?

    我是 Java 11 HttpClient 的新手 想尝试一下 我有一个返回 JSON 的简单 GET 请求 我想将 JSON 响应映射到名为的 Java 类Questionnaire 我知道我可以将响应直接转换为字符串或输入流 如下所示
  • 如何在 emacs 中删除引用的字符串?

    我想删除源文件中带引号的字符串 无需标记字符串的开头和终止区域 但只需将点放置在引用字符串内的任意位置并按快捷键即可 我尝试在 elisp 中为此编写一个函数 但我发现该文件 需要从头到点进行解析 以确定该点是否在带引号的字符串内 并找到带
  • 将 Mutations 添加到 Vuex 存储作为 Vue 插件的一部分

    我正在创建一个小型 Vue 插件 允许用户从任何组件内添加 页面通知 我已经成功地实现了类似的东西 this notifications add a message 它有效 但我必须注册我的插件工作所需的突变和操作 作为为我的应用程序设置商
  • Lisp 内部引用工作

    口齿不清是如何做到的quote内部工作 例如 quote 1 1 2 似乎相当于 list 1 list 1 2 这意味着它是如何递归地象征 Head 值的 这个功能是内置的吗 Run equal quote 1 1 2 list 1 li
  • 使用团队成员参数进行 ASP.NET Core 身份授权

    我有一个带有这样的表的应用程序 用户 ASP NET Core 身份 Team UserTeam 多对多联接表 用户可以是多个团队的成员 并且可以在团队中具有不同的角色 例如 用户可能是 TeamA 的团队管理员 但只是 TeamB 的普通
  • Foo.cmd 不会输出进程中的行(在网站上)

    我无法理解 NET 中 ProcessStartInfo 类的内部和外部 我使用此类来执行 FFmpeg 等 exe 程序 没有任何问题 但是当我使用 ProcessStartInfo 启动 cmd 程序时 例如一个简单的 foo cmd
  • XCode11 错误“open(_:options:completionHandler:) 在应用程序扩展中不可用”

    启动后触摸图 v1 0 https apps apple com us app touchgram for imessage id1447336478 ls 1 这是 99 iMessage 应用程序扩展 我尝试更新到 XCode 11 我
  • 以用户身份运行我的程序

    Windows 7 Vista Server 2008 UAC已激活 程序必须具有管理员权限才能进行某些安装操作 之后 我希望我的程序继续以非管理员权限运行 如何在没有管理权限的情况下重新启动它 P S 我的程序自行重新安装 我不想为其分发
  • 附带共享库的 GNU/Linux Firefox 插件(用于无需 root 访问权限的安装)

    该应用程序是一个 Firefox 插件 从 HOME mozilla plugins 加载 因此设置 LD LIBRARY PATH 的包装脚本不是一个简单的选择 据我所知 RPATH 不能引用 HOME 只能是绝对路径 Firefox 尝