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 个回答 Voted Oli 2011-03-02T14:42:51+08:002011-03-02T14:42:51+08:00 那么dpkg不会帮助你,因为这不是它的设计目标。它希望成为系统上安装的软件包的根拥有的唯一普查。 唯一想到的就是解压缩包并尝试手动将文件放在主目录中。 但是,这仅适用于某些事情。大量的包被分成多个块(可执行文件或脚本在 中/usr/bin,库在/lib和其他 garb in/usr/share等),并且这些位置由构建脚本硬编码。因此,如果您尝试将这样的东西拉入~,它会破裂。你可以花几个小时来解开依赖关系,但你可以用你的时间做一些有用的事情,比如寻找癌症的治疗方法或吸收世界上的一些美丽。 最好从编写软件的人那里获取非打包版本。几乎所有的免费软件都以某种形式的压缩存档作为源代码,所以抓住它并构建它。你不做这make install一步。您的应用程序已构建,只需将其放在您想要的位置。 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 包。 Best Answer belacqua 2011-03-02T21:58:22+08:002011-03-02T21:58:22+08:00 根据您想要完成的任务,可能有不同的方法可以完成这项工作(或者至少给出您想要的功能的外观)。 以多种方式安装软件归结为使资源可用,或允许访问系统上已经存在的东西。 无论您是在谈论授予对打印机的访问权限,还是允许用户在某个目录中执行程序,都有办法做到这一点,尽管它们可能是 Ubuntu 原生的,但这些解决方案通常(当然)会在 .deb 安装后添加。 以下是可以添加的两类通用安装后控制。请注意,在正确的环境下,例如,当一个严格控制的组策略到位时,一旦您有了基本系统,这可能会更容易。这种权限甚至可以绑定到 LDAP 或类似的系统,它可以为每个用户或组提供身份验证和授权。 可见性控制 我自己可能也遇到过类似的情况,但就我而言,用户(还)不是很老练(他们都在 7 岁以下)。对我来说,只需隐藏 Gnome 菜单和/或删除桌面启动器即可。 从目录中删除可执行位会消除进程搜索或遍历它们的能力。它可以有效地使它们不可见,并且在用户方面使它们不可用。例如,如果您有一个基于文件访问创建菜单的默认系统策略,那么您可以获得这种装饰性解决方案,然后只需很少的额外工作就可以让它用于后续安装。 执行控制 可以通过 Unix 权限、apparmor 配置文件、SELinux 权限等来控制资源。可能有其他级别的控制过滤可能会根据应用程序发挥作用。在没有更有针对性的解决方案的情况下,您可能必须围绕某些程序编写包装器来控制用户或进程访问。 Dariel Dato-on 2011-03-02T10:44:48+08:002011-03-02T10:44:48+08:00 您可能可以使用安装到另一个目录的--root选项。dpkg但如果应用程序在固定位置(如/etc. 简而言之,我认为没有简单的方法。 arrange 2011-03-02T11:01:54+08:002011-03-02T11:01:54+08:00 您可以更改可执行文件的所有权,以便只有一个用户能够运行它。然后,如果需要,您可以从其他用户的菜单中删除该应用程序。 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 背后的想法不允许这样做。
那么
dpkg
不会帮助你,因为这不是它的设计目标。它希望成为系统上安装的软件包的根拥有的唯一普查。唯一想到的就是解压缩包并尝试手动将文件放在主目录中。
但是,这仅适用于某些事情。大量的包被分成多个块(可执行文件或脚本在 中
/usr/bin
,库在/lib
和其他 garb in/usr/share
等),并且这些位置由构建脚本硬编码。因此,如果您尝试将这样的东西拉入~
,它会破裂。你可以花几个小时来解开依赖关系,但你可以用你的时间做一些有用的事情,比如寻找癌症的治疗方法或吸收世界上的一些美丽。最好从编写软件的人那里获取非打包版本。几乎所有的免费软件都以某种形式的压缩存档作为源代码,所以抓住它并构建它。你不做这
make install
一步。您的应用程序已构建,只需将其放在您想要的位置。我对这个主题不太了解,但从其他答案看来,您可以使用参数将包安装到另一个目录而不是
/
with ,然后对包所在的目录执行“安装”在(当然可以是用户主目录中的一个目录)。dpkg
--root
chroot
要为除 之外的用户安装软件包
root
,可以使用上述过程fakechroot
代替chroot
。免责声明:我没有尝试过这个,并且在编写时没有太多经验
dpkg
orchroot
,但根据我对这些工具的了解,这个过程可能会奏效。包含可能对想要达到
chroot
无root
能力效果的人有用的信息的链接:chroot
fakechroot
)更新
我现在已经做了一些涉及这个主题的事情,并发现了更多......
片段(本地环境构建块):
chroot(1)
完整(完整的本地环境提供者):
chroot(1)
的mount --bind
功能binfmt_misc
摘要:通过在本地模拟或实际拥有 root 权限,可以为本地环境安装 DEB 包。
根据您想要完成的任务,可能有不同的方法可以完成这项工作(或者至少给出您想要的功能的外观)。
以多种方式安装软件归结为使资源可用,或允许访问系统上已经存在的东西。
无论您是在谈论授予对打印机的访问权限,还是允许用户在某个目录中执行程序,都有办法做到这一点,尽管它们可能是 Ubuntu 原生的,但这些解决方案通常(当然)会在 .deb 安装后添加。
以下是可以添加的两类通用安装后控制。请注意,在正确的环境下,例如,当一个严格控制的组策略到位时,一旦您有了基本系统,这可能会更容易。这种权限甚至可以绑定到 LDAP 或类似的系统,它可以为每个用户或组提供身份验证和授权。
可见性控制
我自己可能也遇到过类似的情况,但就我而言,用户(还)不是很老练(他们都在 7 岁以下)。对我来说,只需隐藏 Gnome 菜单和/或删除桌面启动器即可。
从目录中删除可执行位会消除进程搜索或遍历它们的能力。它可以有效地使它们不可见,并且在用户方面使它们不可用。例如,如果您有一个基于文件访问创建菜单的默认系统策略,那么您可以获得这种装饰性解决方案,然后只需很少的额外工作就可以让它用于后续安装。
执行控制
可以通过 Unix 权限、apparmor 配置文件、SELinux 权限等来控制资源。可能有其他级别的控制过滤可能会根据应用程序发挥作用。在没有更有针对性的解决方案的情况下,您可能必须围绕某些程序编写包装器来控制用户或进程访问。
您可能可以使用安装到另一个目录的
--root
选项。dpkg
但如果应用程序在固定位置(如/etc
.简而言之,我认为没有简单的方法。
您可以更改可执行文件的所有权,以便只有一个用户能够运行它。然后,如果需要,您可以从其他用户的菜单中删除该应用程序。
疑。
deb 主要是在安装时提取到文件系统根目录的档案(加上一些配置)。如果您只想为一个用户安装它们,则需要以某种方式将它们安装到 /home/user 文件夹。即使你这样做了,它们也不会工作,因为 fe 应用程序二进制文件不会进入 /usr/bin (或类似的东西),如果你尝试启动它们,系统将找不到它们。类似地,库等将是无用的,因为系统不会知道 /home 中的某个地方。您可以尝试蛮力方法,并调整 PATH 变量以指向您从 deb 存档中提取文件的位置,但这不仅是非常不安全,但可能会导致兼容性问题(fe 菜单项不起作用,因为 GNOME 将 .desktop 文件放在 /usr/share/applications 中)。
此外,如果您仅为某些用户安装了一个包,则可能会导致疯狂的依赖问题,如果任何其他用户安装的包与您为自己安装的另一个包冲突 - 并且可能会出现大量其他与包管理相关的问题。
所有这些麻烦都使得为用户单独管理软件包变得极其困难,因此似乎不可能只为一个用户安装它们,因为 .debs 背后的想法不允许这样做。