假设我以用户身份通过​​ssh访问某些Ubuntu服务器,并且为了方便起见,我需要安装一些非系统工具(mc,rtorrent,mcedit)。我不想打扰这些小程序的管理员。

是否有一种无需使用sudo apt-get install即可安装它们(使其运行)的方法?

评论

是否有可能获得APT将软件包安装到我的主目录的任何方法?

另请参阅应将本地可执行文件放置在哪里?进行相关讨论。

可能不是root的在Debian 5 32位上安装的重复副本

另请参阅跟踪程序

另请参阅非根软件包管理器

#1 楼

~/bin中(并编辑.bashrc以将PATH设置为包括它)。库可以类似地编译并安装到~/lib中(将LD_LIBRARY_PATH设置为指向它),开发标头可以安装到例如。 ~/includes

根据要安装的程序的具体细节以及它们所依赖的库,您可以下载.deb文件,并使用'dpkg-deb -x'将其解压缩到主目录下。然后,您将有很多“乐趣”设置PATHLD_LIBRARY_PATH和其他variables。您要安装的程序或应用程序越复杂,您将获得的乐趣就越多:)

当然,您将无法以这种方式安装setuid二进制文件-他们将安装但是(由于您没有权限将它们冠以root或在其上设置setuid位),它们将只是您所拥有的普通二进制文件。正在以某个特定的UID运行,或者具有更改uid的能力,或者期望文件位于/etc而不是~/etc中,等等根本不可能很好地运行。
大多数系统管理员会认为mcmcedit是“无害的”无害程序。承担法律责任。对于最终用户在未经许可的情况下安装此类软件,大多数系统管理员可能不会完全满意。他们可能会说“确定,继续,将自己踢倒”,否则可能不会...但是您应该询问对机器所有者/管理员可能造成问题的任何事情。 >

评论


我听说设置LD_LIBRARY_PATH是一个邪恶的黑客。这在这里也适用吗,还是我误解了?

–威尔登(Will Vousden)
16-2-10在13:59



设置LD_LIBRARY_PATH的所有问题均适用。是的,它是或可能是邪恶的骇客。有时,邪恶的骇客对于达成特定目标是必要的……打破“规则”时,关键的是要充分了解它们,以了解它们是为拯救您而设计的,以及在这种情况下您为什么需要打破它们,以及存在或可能存在的风险。

–cas
16 Feb 10'在23:42

我只需要安装一个独立程序(zoom),因此首先尝试了第二个选项(将dpkg-deb -x转换为本地目录)。像魅力一样工作。我不必做任何LD_LIBRARY_PATH黑客。即使必须这样做,我也将在同一命令行中执行此操作,以免影响全局设置(例如$ LD_LIBRARY_PATH = / home / usr1 / zoom / opt / zoom:/ home / usr1 / zoom / opt / zoom / zoom ZoomLauncher)。

– Antony
18/09/14在13:29

仅当要安装的一个或多个软件包提供任何共享库时,才需要设置LD_LIBRARY_PATH。如果只是可执行文件,数据,文档和配置文件等,则可以使用系统库。

–cas
18-09-14在23:40

#2 楼

您需要从源代码编译它们。这应该只是
apt-get source PACKAGE
./configure --prefix=$HOME/myapps
make
make install
的问题,然后二进制文件将位于~/myapps/bin中。因此,将export PATH="$HOME/myapps/bin:$PATH"添加到您的.bashrc文件中,然后使用.bashrc重新加载source ~/.bashrc文件。当然,这是假设系统上已安装gcc。

评论


那依赖关系呢?有没有一种方法可以自动处理它们,而不必为它们每个运行相同的代码?

–yura
2012年7月8日在4:34

@yura不,你必须自己做。

–乌尔里希·丹格尔(Ulrich Dangel)
2012年7月8日在8:00

如果您没有权限执行此操作怎么办?在没有sudo / root用户访问权限的情况下,通常具有编译软件的权限吗?

– Freedo
19年8月12日在7:28

#3 楼

您可以使用JuNest,它会在用户目录中创建一个小型Linux容器,您可以在其中安装任何软件包。

评论


Junest基本上可以制作一个小型的archlinux系统,在该系统中您具有fakeroot特权,这是完美的

–彩虹
20年6月26日在10:05

#4 楼

我遇到了同样的问题,假设您拥有具有相同操作系统和体系结构的linux服务器,这就是我如何快速修复它。


在您控制的系统上安装软件
找到可执行文件示例which python并将其复制到~/

使用以下方式复制库:

ldd "$(which python)"  | grep "=> /" | awk '{print }' | xargs -I '{}' cp -v '{}' ~/

库到只有本地特权的其他系统,然后运行以下命令:

mkdir ~/lib
export PATH="$PATH:~/lib"
export LD_LIBRARY_PATH=~/lib:/lib:/usr/lib


这将创建一个文件夹~/lib来存储库,并将其添加到您的路径中,并告诉LD查看那里的库,因此只需在其中添加可执行文件和库,现在就可以像在其他地方一样运行它了。速度很快,而且我还没有找到无法以这种方式运行的功能,当然,该软件无法尝试执行需要root访问权限的操作,例如绑定到比1024更低的端口等。

#5 楼

实际上,我今天刚刚为此做了一个工具。https://github.com/z3r0n3t/pkget
您需要的是访问bash而不是root有什么特别的
您可以使用whet将其下载为zip文件或使用git clone