通过软件中心或 DEB 文件安装应用程序时,它们通常会为所有用户在系统范围内安装。
有没有办法仅为单个用户安装应用程序?
答案1
这dpkg
不会帮到你,因为这不是它的设计目的。它希望成为系统上安装的软件包的 root 拥有的唯一统计。
我唯一想到的就是提取包并尝试将文件手动放在主目录中。
但是这只对某些东西有效。许多包被分成块(可执行文件或脚本在 中/usr/bin
,库在 中/lib
,其他文件在 中/usr/share
,等等),并且这些位置由构建脚本硬编码。因此,如果您尝试将类似的东西拉入 中~
,它就会中断。您可能会花费数小时来解开依赖关系,但您可以利用这些时间做一些有用的事情,例如寻找癌症的治疗方法或吸收世界上的一些美丽。
您最好从编写软件的人那里获取非打包版本。几乎所有免费软件都以某种形式的压缩档案作为源代码提供,因此获取它并构建它。您无需执行该make install
步骤。您的应用程序已构建,只需将其放在您想要的位置即可。
答案2
我对这个主题不太了解,但从其他答案看来,你可以将包安装到另一个目录,而不是/
使用dpkg
,使用--root
参数,然后执行chroot
到包“安装”的目录(当然可以是用户主目录中的目录)。
要为其他用户安装软件包root
,可以使用上述过程fakechroot
代替chroot
。
免责声明:我没有尝试过这个,在写这篇文章的时候也没有太多使用dpkg
或的经验chroot
,但从我做了解这些工具,这个过程只是可能工作。
chroot
对于想要实现无需能力的效果的人,以下链接可能包含有用的信息root
:
更新
我现在做了一些涉及这个主题的事情,并且发现了更多......
片段(本地环境构建块):
- 假根- 模仿
chroot(1)
- 启动- 在目录内创建另一个 Debian 文件系统层次结构
- Fakeroot-NG/假根- 可以假装某些事情的根
- 恩德比- 使用更少空间的 Debian 变体,通常在 chroot 环境中使用
- binfmt_misc- 可以使用解释器运行文件,就像它们是本机二进制文件一样;与 qemu-user 一起用于处理外部体系结构的二进制文件(或在(假)chroot 中)(脚本/qemu-binfmt-conf.shQEMU 源代码附带的程序可自动执行此操作)
- Qemu 用户空间- 可以运行其他架构的二进制文件;当这些工具不支持某些处理器架构时,可以与其中一些工具一起使用
- 低电压保护- 可以从用户空间运行的 TCP/IP 网络堆栈
完整(完整的本地环境提供者):
- 用户模式Linux- 将另一个 Linux 系统作为常规进程/程序运行
- 库姆- 运行完整的虚拟计算机
- 普鲁特- 提供
chroot(1)
、、和使用mount --bind
qemubinfmt_misc
-user-space 从其他架构运行二进制文件的功能 - Linux 命名空间- 使用时允许在本地环境中拥有完全的 root 权限用户命名空间,这是 Linux 内核 3.8 及更高版本中提供的功能。
概括:通过本地模拟或实际拥有 root 权限,可以为本地环境安装 DEB 包。
答案3
根据您想要完成的任务,可能会有不同的方法来实现这一点(或者至少提供您想要的功能的一种表面形式)。
软件的安装在许多方面都归结为提供资源,或允许访问系统上已存在的内容。
无论您谈论的是授予打印机访问权限,还是允许用户在某个目录中执行程序,都有方法可以实现这一点,尽管它们可能是 Ubuntu 原生的,但这些解决方案通常(当然)会在 .deb 安装之后添加。
以下是可以添加的两种常规安装后控制。请注意,在适当的环境下,例如,当有严格控制的组策略时,一旦您拥有基本系统,这可能会更容易。这些权限甚至可以与 LDAP 或类似的系统绑定,该系统可以提供每个用户或组的身份验证和授权。
可见性控制
我自己也遇到过类似的情况,但就我的情况而言,用户还不是很成熟(他们全都在 7 岁以下)。对我来说,只需隐藏 Gnome 菜单或删除桌面启动器即可。
从目录中删除可执行位将使进程无法搜索或遍历它们。它可以有效地使它们不可见,并且从用户的角度来看,使它们不可用。例如,如果您有一个基于文件访问创建菜单的默认系统策略,您可以实施这种表面化的解决方案,然后让它在后续安装中工作,而无需额外的努力。
执行控制
资源的控制可以通过 Unix 权限、apparmor 配置文件、SELinux 权限等方式进行。根据应用程序的不同,可能还有其他级别的控制过滤。在没有更有针对性的解决方案的情况下,您可能必须编写围绕某些程序的包装器来控制用户或进程访问。
答案4
疑。
deb 主要是档案被提取到文件系统的根目录安装时(加上一些配置)。如果您只想为一个用户安装它们,则需要以某种方式将它们安装到 /home/user 文件夹中。即使您这样做,它们也不会起作用,因为 fe 应用程序二进制文件不会落入 /usr/bin(或类似的东西),并且如果您尝试启动它们,系统将找不到它们。同样,库等将毫无用处,因为系统不知道它们在 /home 的某个地方。您可以尝试强力方法,并调整 PATH 变量以指向从 deb 存档中提取文件的位置,但这不仅仅是非常不安全,但可能会导致兼容性问题(fe 菜单项将不起作用,因为 GNOME 希望 .desktop 文件位于 /usr/share/applications 中)。
此外,如果您仅为某些用户安装了一个软件包,那么如果其他用户安装的软件包与您为自己安装的另一个软件包相冲突,则可能会导致疯狂的依赖问题 - 并且可能会出现大量其他与软件包管理相关的问题。
所有这些麻烦使得为用户单独管理软件包变得极其困难,因此似乎不可能只为一个用户安装它们,因为 .debs 背后的想法不允许这样做。