如何仅为单个用户通过 DEB 文件安装应用程序?

Tak*_*kat 36 software-center deb software-installation

当通过软件中心或 DEB 文件安装应用程序时,它们通常会在系统范围内为所有用户安装。

有没有办法只为单个用户安装应用程序?

Oli*_*Oli 11

Welldpkg不会帮助你,因为这不是它的设计目标。它希望成为系统上安装的软件包的根拥有的唯一普查。

唯一能想到的就是解压缩包并尝试将文件手动放置在主目录中。

然而,这只适用于某些事情。大量的包被分成块(可执行文件或脚本/usr/bin,库文件/lib和其他 garb in/usr/share等),这些位置由构建脚本硬编码。因此,如果你尝试将这样的东西拉入~,它就会破裂。你可以花几个小时来解除依赖,但你可以用你的时间做一些有用的事情,比如找到治愈癌症的方法或吸收世界上的一些美丽。

从编写软件的人那里获取非打包版本会更好。几乎所有的免费软件都以某种形式的压缩档案作为源提供,所以抓住它并构建它。你不做这make install一步。您的应用程序已构建,只需将其放在您想要的位置即可。

  • 基于 _autoconf_ 的项目可能允许通过`./configure --prefix=$HOME/local` 设置自定义安装目录。 (2认同)

Abb*_*fei 6

我对这个主题不太了解,但从其他答案看来,您可以使用参数将包安装到另一个目录而不是/with dpkg--root然后chroot对包所在的目录执行 a安装”(当然可以是用户主目录中的目录)。

要为 以外的用户安装软件包,root可以使用上述过程fakechroot代替chroot

免责声明:我没有尝试这一点,并没有在写作的时候多少经验dpkgchroot,但是从我知道这些工具,这个过程只可能工作。

包含可能对想要达到chrootroot能力效果的人有用的信息的链接:

更新

我现在已经做了一些涉及这个主题的事情,并发现了更多......

片段(本地环境构建块):

  • Fakechroot - 模拟chroot(1)
  • Debootstrap - 在目录中创建另一个 Debian 文件系统层次结构
  • Fakeroot-NG / fakeroot - 可以假装某些事情的 root
  • EmDebian - 使用较少空间的 debian 变体,通常用于 chroot 环境
  • binfmt_misc - 可以使用它们的解释器运行文件,就好像它们是本机二进制文件一样;与 qemu-user 一起用于处理外国架构的二进制文件(或在(假)chroot 中)(QEMU 源代码附带的scripts/qemu-binfmt-conf.sh自动执行此操作)
  • Qemu 用户空间- 可以运行其他架构的二进制文件;当它们不支持某些处理器架构时,可以与其中一些工具一起使用
  • LwIP - 可以从用户空间运行的 TCP/IP 网络堆栈

完整(完整的本地环境提供者):

  • 用户模式 ​​linux - 作为常规进程/程序运行另一个 linux 系统
  • Qemu - 运行完整的虚拟计算机
  • PROOT -提供的功能chroot(1)mount --bindbinfmt_misc,和使用运行与其他架构的二进制文件的qemu-用户空间
  • Linux 命名空间- 当使用用户命名空间时,允许在本地环境中拥有完整的根,这是 Linux 内核版本 3.8 及更高版本中可用的功能。

简介: 通过在本地模拟或实际拥有 root 权限,可以为本地环境安装 DEB 包。

  • 如果您的信息与您之前的信息相矛盾(或者您认为它增加了任何内容),请随时完全重新格式化您的答案。在许多情况下,如果您改写而不是添加额外的“编辑”或“更新”部分,您的答案会更清楚。您的信息很有趣,但可能最相关的部分被卡在底部。 (3认同)

bel*_*qua 5

根据您想要完成的工作,可能有不同的方法来完成这项工作(或者至少给您想要的功能提供一个看似简单的外观)。

以多种方式安装软件归结为使资源可用,或允许访问系统上已经存在的东西。

无论您是在谈论授予对打印机的访问权限,还是允许用户在某个目录中执行程序,都有一些方法可以实现这一点,尽管它们可能是 Ubuntu 原生的,但这些类型的解决方案通常(当然)在 .deb 安装之后添加。

以下是可以添加的两种通用安装后控制类别。请注意,考虑到正确的环境,例如,当严格控制的组策略到位时,一旦您拥有基本系统,这可能会更容易。这些权限甚至可以绑定到 LDAP 或类似的系统,该系统可以为每个用户或组提供身份验证和授权。

可见性控制
我自己可能也遇到过类似的情况,但就我而言,用户还不是(还)非常老练(他们都在 7 岁以下)。对我来说,只需隐藏 Gnome 菜单和/或删除桌面启动器即可。

从目录中删除可执行位消除了进程搜索或遍历它们的能力。它可以有效地使它们不可见,并且用户明智地使它们不可用。例如,如果您有一个基于文件访问创建菜单的默认系统策略,您可以使用这种装饰性解决方案,然后只需很少的额外工作即可使其用于后续安装。

执行控制
资源的控制可以通过 Unix 权限、apparmor 配置文件、SELinux 权限等来完成。可能还有其他级别的控制过滤,这取决于应用程序。在没有更有针对性的解决方案的情况下,您可能必须围绕某些程序编写包装器来控制用户或进程访问。

  • +1 用于分离可见性和执行控制方面 (3认同)