これは非常に具体的な質問であり、グーグルは答えを助けませんでした。
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
ただし、依存関係が満たされていないため、後で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).
esl-erlang
を実行せずにapt-get install -f
パッケージをシャットダウンする方法はありますか?
私はこのようなものが欲しい:
Sudo apt-get install --ignore-deps-for-package=esl-erlang git
またはこのように:
Sudo apt-cache shut-package-up esl-erlang
またはこれ:
Sudo apt-get download git
Sudo dpkg -i --with-deps git.deb
同様の質問が見つかりました: https://serverfault.com/questions/250224/how-do-i-get-apt-get-to-ignore-some-dependencies 。いくつかの回答は、特定のパッケージの依存関係を変更するための便利な手動の手順を提供します。
私はまだ堅牢な自動化された方法を探しています。
私はbjanssenのポイントを理解していますが、パッケージマネージャーが単一のパッケージのインストールに対して--force-depends
を許可するのはばかげているようですが、force-depends-forever-and-stop-warning-me-about-this-dependencyは許可していません。
現在Debianで利用可能なものより少し高いlibcairoバージョンに依存するパッケージで同様の問題がありました。私の目的のために、それはまだうまく働きます。 libcairoのアップデートがaptに表示されるまで、私はそれを使い続けています。ソースからコンパイルしたり、独自のパッケージをビルドしたりしたくありません。
私が見つけた解決策:
/var/lib/dpkg/status
、Depends:
行を編集して、パッケージのエラーを停止します。次にパッケージが更新されたときに上書きされると思いますが、それがまさに私が望んでいることです。
あなたがしようとしていることは、パッケージマネージャーの目的に反しています。 o。 w。ジョブに間違ったツールを使用しています。 apt-getを壊そうとしないでください。
問題を解決する正しい方法は、自分に合った依存関係を持つ独自のパッケージをビルドすることです。公式な方法(かなり複雑: http://www.debian.org/doc/manuals/maint-guide/index.en.html )とapt-build
、または配布元にないパッケージの場合はcheckinstall
。すべての農産物パッケージapt-getは喜んでインストールされます。
最後の注意点として、esl-erlangのメンテナの知恵に疑問を投げかけて特定の依存関係を含めることはできますが、意図した動作についてパッケージマネージャに誤りを犯すことはできません。これらの依存関係が間違っていると思われる場合は、パッケージにバグを報告する必要があります。
apt.conf
の「proxy used」が適切かどうか(つまり、ネットワークに応じて)を確認します。 URLに到達できないため、このような問題も発生します。
通常、プロキシを使用している場合、/etc/apt/apt.conf
は次のようになります。
Acquire::ftp::proxy "ftp://<user>:<password>@<ip>:<port>/";
Acquire::http::proxy "http://<user>:<password>@<ip>:<port>/";
Acquire::https::proxy "https://<user>:<password>@<ip>:<port>/";