当前位置: 首页>>技术教程>>正文


apt – 将软件包安装到本地目录?

,

问题描述

我想安装类似于apt-get install <foo>的软件包,但:

  1. 没有sudo

  2. 进入本地目录

本练习的目的是在我的continuous integration服务器中隔离独立的版本。

我不介意从源代码进行编译(如果需要这样做的话),但是显然,我更喜欢最简单的方法。我像提到的here那样尝试过apt-get source --compile <foo>,但是我无法使它适用于像autoconf这样的软件包。我收到以下错误:

dpkg-checkbuilddeps: Unmet build dependencies: help2man

我已经在本地目录中编译了help2man,但是我不知道该如何通知apt-get。有任何想法吗?

更新:我找到了一个几乎可以在https://askubuntu.com/a/350/23678上找到的答案。 chroot的问题在于它需要sudo。 apt-get source的问题是我不知道如何解决依赖关系。我必须说,chroot看起来很吸引人。是否有不需要sudo的等效命令?

最佳回答

通常,这是行不通的,因为您会弄混apt依赖系统。

有两种解决方案:

  1. 安装源软件包,转到源目录,配置并安装软件包(与打包系统无关),手动将其安装到您选择的目录中。

    apt-get source <package>
    

    不需要root,下载软件包源,将其解压缩到当前目录下的目录中。然后,您可以转到该目录,对源进行修改,将安装配置为另一个目标,等等。

    但是,配置程序应进入哪个安装目录取决于特定程序。许多程序使用./configure --prefix localdir来将安装定位到localdir。但是到目前为止,情况并非总是如此。

  2. 创建一个chroot环境,您将在其中安装软件包:

    debootstrap precise myfancyinstall
    

    现在,您已经在myfancyinstall /目录中创建了一个虚拟安装。

    chroot myfancyinstall
    

    您可以在chroot笼中使用apt-get安装来安装所需的任何东西。

次佳回答

使用bash shell 程序并获取”package.deb”文件(假定包名称为”package”),您可以运行以下命令来完成所需的操作-安装该包,以便以与普通安装时对待”/”相同的方式对待您的主目录。

这是命令:

apt-get download package; dpkg -i --force-not-root --root=$HOME package.deb

您可能会遇到一些错误,例如缺少$ HOME /var /lib /dpkg /lock,因此只需创建所有将从错误中获取的丢失文件,然后安装就可以在没有sudo的情况下进行。

请注意,如果“ apt-get下载”不起作用,则可以尝试”apt download”或“ apitutde下载包”。

如果两种方法都不起作用,则可以从http://packages.ubuntu.com/手动下载软件包

另一种方法是使用参数$ HOME运行chroot命令,然后仅在没有–root = $ HOME的情况下以与上述相同的方式安装。该命令会将您带入一个 shell ,其中”/”是您当前的$ HOME。返回正常模式不要忘记”exit”

祝好运。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8255.html,未经允许,请勿转载。