问题描述
我想安装类似于apt-get install <foo>
的软件包,但:
-
没有
sudo
和 -
进入本地目录
本练习的目的是在我的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依赖系统。
有两种解决方案:
-
安装源软件包,转到源目录,配置并安装软件包(与打包系统无关),手动将其安装到您选择的目录中。
apt-get source <package>
不需要root,下载软件包源,将其解压缩到当前目录下的目录中。然后,您可以转到该目录,对源进行修改,将安装配置为另一个目标,等等。
但是,配置程序应进入哪个安装目录取决于特定程序。许多程序使用
./configure --prefix localdir
来将安装定位到localdir。但是到目前为止,情况并非总是如此。 -
创建一个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”
祝好运。