到目前为止,在 Linux 上安装软件包的最佳方法似乎是使用apt-get install <package>
.这是因为该命令会同时拉取所有依赖项。如果我选择坚持dpkg --install <package>
在我的机器上安装软件包,这意味着我可能下载了该软件包 - 我如何确保我不会错过任何依赖的软件包?
libelf-dev
对于像或 之类的东西libelf1
,是否有网站携带包含这些好东西的源磁盘,并且实际上携带捆绑模块以使更新更容易?再说一遍,这样我就不会错过需要的包libelf
,比如make
等等。
答案1
你总是需要满足依赖关系,这就是为什么它们被这样称呼。
也就是说,安装下载的软件包的最佳方法.deb
是:
sudo apt-get install ./some_package_name_in_current_directory.deb
当然,你也可以反过来,像这样:
sudo dpkg --install ./some_package_name_in_current_directory.deb
sudo apt-get install --fix-missing
但我觉得很麻烦。
答案2
IIRC 如果您有一个 .deb 文件,其依赖项可以从您配置的存储库中满足,您可以使用它来安装它,dpkg -i package.deb
然后执行apt-get -f install
apt 会引入您的软件包所需的任何内容...但前提是适当的版本号等。一切都存在并匹配。
答案3
那里是一种方法来做到这一点。确实不推荐,但我发现当我需要安装一个已被放弃的软件包时,当其中存在的错误不会阻止我执行我的任务时(例如,如果软件包提供了多个二进制文件,但是我只需要其中之一)。
假设您有一个文件package.deb
。您执行以下操作:
ar t package.deb
然后,您查找以 开头的文件data
,最常见的是data.tar.xz
,但有时可以使用不同的压缩(或者我是这么读的)。
然后你跑
ar x package data.tar.xz
请务必确认提取已发生,因为无论哪种方式都不会输出。
将数据文件本身移动到某个目录可能是有益的,因为下一步我们将提取目录树,并且您不想尝试找出您需要什么和不需要什么当你完成之后。
现在提取您获得的文件:
unxz data.tar.xz
tar xvf data.tar
您将找到通过安装包创建的文件,但以当前目录作为根目录。因此,如果二进制文件进入/usr/bin
,您将在 中找到它./usr/bin
。
之后,您可以手动将文件复制到正确的位置。或者我更喜欢将它们复制到/home/user/bin
并将该目录添加到PATH
.这样你破坏系统的机会就会少一些。当然,如果您要安装库包,您将需要花费更多时间来弄清楚什么在哪里。
再说一遍,这不是安装软件包的最佳方法(至少可以这么说)。这种安装使得很难记住哪个文件来自哪个包,因此很难找出错误来自哪里。但不幸的是,有时你需要“他妈的就这么做”(tm)。
答案4
在考虑了其他人的反应后,我认为最好、最全面的答案是,有仅有的在 Linux 上安装软件包的三 (3) 种方法。和,只有一个其中确保自动安装所有依赖包。这些都是:
apt-get install <package-name>
是哪一个啊!然后;
dpkg --install <full path to package/package-name.deb>
并且,最后一个是从源头构建一切。最后一个选项与使用几乎没有什么不同包装袋。只是,您可能需要做一些额外的工作才能理解“自动配置,汽车制造商等”开始。但是,大多数源都附带创建的 automake 配置文件,最多您必须运行。/配置使软件包适合您的 PC 架构,制作和进行安装!这就对了!
最后,针对我的问题,这意味着如果有人希望使用最后两个,由您/他们使用保存良好的网站(如 packages.ubuntu.com 或其他网站)来跟踪所有依赖项和推荐的软件包。然后,根据需要安装下载的依赖项,每个包最终都会安装(手动)。消息来源通常会说一些话,比如确保你有构建工具安装。您可以通过混合安装方法来响应,即 apt get install build-tools(在 Ubuntu 存储库中找到),然后运行进行安装对于有问题的来源。因此,无需跟踪和下载构建工具及其依赖项手动。