and*_*oid 19 linux dependencies ubuntu apt
这是一个非常具体的问题,谷歌没有帮助回答。
我正在使用 Ubuntu 13.04 运行apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56.
我想从 .deb 包安装 Erlang,但我不想拉出它的所有依赖项。包本身指定它依赖于 Java 和 wx 库,但实际上,除非您想与 Java 或 wxWidgets 接口,否则不需要这些库。
我可以像这样安装 Erlang
sudo dpkg -i --force-depends erlang.deb
Run Code Online (Sandbox Code Playgroud)
但是,apt-get由于未满足的依赖关系,随后安装其他任何东西都失败了。所以如果我想在 Erlang 之后安装 git,我会得到以下信息
$ sudo apt-get install -y git
Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
esl-erlang : Depends: default-jre-headless but it is not going to be installed or
java2-runtime-headless or
java1-runtime-headless or
java2-runtime or
java1-runtime
Depends: libwxbase2.8-0 but it is not going to be installed
Depends: libwxgtk2.8-0 but it is not going to be installed
Recommends: erlang-mode but it is not going to be installed
git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed
Depends: perl-modules but it is not going to be installed
Depends: liberror-perl but it is not going to be installed
Depends: git-man (> 1:1.7.9.5) but it is not going to be installed
Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed
Recommends: patch
Recommends: rsync
Recommends: ssh-client
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Run Code Online (Sandbox Code Playgroud)
有没有办法让esl-erlang包在不运行的情况下关闭apt-get install -f?
我想要这样的东西:
sudo apt-get install --ignore-deps-for-package=esl-erlang git
Run Code Online (Sandbox Code Playgroud)
或者像这样:
sudo apt-cache shut-package-up esl-erlang
Run Code Online (Sandbox Code Playgroud)
或这个:
sudo apt-get download git
sudo dpkg -i --with-deps git.deb
Run Code Online (Sandbox Code Playgroud)
我发现了一个类似的问题:https : //serverfault.com/questions/250224/how-do-i-get-apt-get-to-ignore-some-dependencies。一些答案提供了方便的手动步骤来修改某些包的依赖项。
我仍在寻找一种强大的自动化方法。
and*_*ien 37
我理解 bjanssen 的观点,但对于包管理器来说,允许--force-depends安装单个包,但不允许 force-depends-forever-and-stop-warning-me-about-this-dependency似乎很荒谬。
我有一个类似的问题,该软件包依赖于比 Debian 中当前可用的版本略高的 libcairo 版本。就我而言,它仍然可以正常工作。我很高兴继续使用它,直到 libcairo 更新出现在 apt 中。我不想从源代码编译或构建我自己的包。
我找到的解决方案:
/var/lib/dpkg/status,Depends:行以停止包抱怨。我假设下次更新包时会被覆盖,但这正是我想要的。
您尝试做的事情违背了包管理器的目的,包管理器试图保持一个健全的环境,因为您使用了错误的工具来完成这项工作。不要尝试破坏 apt-get。
解决您的问题的正确方法是使用适合您的依赖项构建您自己的包。有官方方法(相当复杂:http://www.debian.org/doc/manuals/maint-guide/index.en.html)和使用快速而肮脏的方法apt-build,或者对于不在发行源中的包,checkinstall。所有的生产包 apt-get 都会愉快地安装。
最后一点,您可能会质疑 esl-erlang 维护者是否明智地包含某些依赖项,但您不能指责包管理器的预期行为。如果您认为这些依赖项是错误的,您应该向包提交错误。
| 归档时间: |
|
| 查看次数: |
53176 次 |
| 最近记录: |