AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 28619
Accepted
Takkat
Takkat
Asked: 2011-03-02 10:32:57 +0800 CST2011-03-02 10:32:57 +0800 CST 2011-03-02 10:32:57 +0800 CST

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

  • 772

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

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

software-center
  • 6 6 个回答
  • 11083 Views

6 个回答

  • Voted
  1. Oli
    2011-03-02T14:42:51+08:002011-03-02T14:42:51+08:00

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

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

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

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

    • 11
  2. Abbafei
    2011-03-02T18:25:07+08:002011-03-02T18:25:07+08:00

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

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

    免责声明:我没有尝试过这个,并且在编写时没有太多经验dpkgor chroot,但根据我对这些工具的了解,这个过程可能会奏效。

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

    • This page about read-only bind mounts(似乎这对于做“标准”的人来说也很有用chroot
    • serverfault.com上的此页面
    • 这些 关于 Linux 容器的页面
    • 的手册页fakechroot)

    更新

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

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

    • 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 -使用 qemu-user-space 提供来自其他架构的 、 、 和运行二进制文件chroot(1)的mount --bind功能binfmt_misc
    • Linux 命名空间- 在使用用户命名空间时,允许在本地环境中拥有完整的根目录,这是 Linux 内核版本 3.8 及更高版本中可用的功能。

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

    • 7
  3. Best Answer
    belacqua
    2011-03-02T21:58:22+08:002011-03-02T21:58:22+08:00

    根据您想要完成的任务,可能有不同的方法可以完成这项工作(或者至少给出您想要的功能的外观)。

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

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

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

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

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

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

    • 5
  4. Dariel Dato-on
    2011-03-02T10:44:48+08:002011-03-02T10:44:48+08:00

    您可能可以使用安装到另一个目录的--root选项。dpkg但如果应用程序在固定位置(如/etc.

    简而言之,我认为没有简单的方法。

    • 4
  5. arrange
    2011-03-02T11:01:54+08:002011-03-02T11:01:54+08:00

    您可以更改可执行文件的所有权,以便只有一个用户能够运行它。然后,如果需要,您可以从其他用户的菜单中删除该应用程序。

    • 2
  6. Rafał Cieślak
    2011-03-02T10:47:59+08:002011-03-02T10:47:59+08:00

    疑。

    deb 主要是在安装时提取到文件系统根目录的档案(加上一些配置)。如果您只想为一个用户安装它们,则需要以某种方式将它们安装到 /home/user 文件夹。即使你这样做了,它们也不会工作,因为 fe 应用程序二进制文件不会进入 /usr/bin (或类似的东西),如果你尝试启动它们,系统将找不到它们。类似地,库等将是无用的,因为系统不会知道 /home 中的某个地方。您可以尝试蛮力方法,并调整 PATH 变量以指向您从 deb 存档中提取文件的位置,但这不仅是非常不安全,但可能会导致兼容性问题(fe 菜单项不起作用,因为 GNOME 将 .desktop 文件放在 /usr/share/applications 中)。

    此外,如果您仅为某些用户安装了一个包,则可能会导致疯狂的依赖问题,如果任何其他用户安装的包与您为自己安装的另一个包冲突 - 并且可能会出现大量其他与包管理相关的问题。

    所有这些麻烦都使得为用户单独管理软件包变得极其困难,因此似乎不可能只为一个用户安装它们,因为 .debs 背后的想法不允许这样做。

    • 1

相关问题

  • 看到黑屏怎么办?

  • 我在哪里可以找到应用程序的使用历史?

  • 有没有简单的方法来安装 tarball?

  • 如何让 Eclipse 插件与基于软件中心的安装一起使用

  • 如何设置软件中心为非 root 用户安装软件?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve