依存関係が手動で解決されることをaptに伝える方法は?


14

を介してインストールしたくないaptが、手動でインストールしたいソフトウェアがあるとしましょう。(TeXLive、2011リリースを使用したいのでapt、2009バージョンしかありません。)

を介してインストールしたい別のソフトウェアがあるとしますがapt、それは最初のソフトウェアに依存します。(Vim LaTeXSuite。システム全体で使用するために手動でインストールするのは苦痛です。)

デフォルトでaptは、最初のソフトウェアを「認識」せず、依存関係のメタデータを満たすためだけに、不要で好ましくない多くの不要なデータ(つまりTeXLive 2009)をインストールします。

どうすればいいですか:

  • 教えてapt与えられたパッケージ(例えばがあることtexliveされたすべての実用的な目的のために設置されており、それはいくつかの他のパッケージの依存関係としてインストールされるべきではないと?

  • 教えてapt与えられたパッケージ(例えばをインストールするには、vim-latexsuiteその依存関係を気にせずに)?

私は、様々なふるいにかけてきたapt関連のmanページと、空を駆け上がり、また、見つかったこの質問このサイトにはなく、そこにいることを感じていなし、これを行うにはあまりハック方法であると?

(私のGentoo時代から、私は覚えてemerge --injectおり/etc/portage/package.provides、基本的にapt同等のものを探しています。)


TeX Live 2011は最近Debian Sidに追加されたため、遅かれ早かれMintにも伝播するはずです(ただし、Ubuntu 12.04が「見逃した」ため、Ubuntu 12.10で10月末までに)。本当に冒険好きなら、Debian Sidからパッケージを入手することもできますが、この場合は多くのパッケージに関係するため、おそらく良い解決策ではありません。PPAはでありlaunchpad.net/~texlive-backports/+archive/ppa(参照設定のUbuntuで、このバグレポートをあなたはおそらく同様ミントに使用することができます)。
ダニエルアンダーソン


3年後、コメントなしの投票権...
DevSolar

@DevSolar:誰かが質問をシリアルダウン投票し、その両方が理由を明確にせずに3年後に答えたようです。ただ肩をすくめて先に進むのがベストだと思う:-)。
ダニエルアンダーソン

回答:


13

equivsパッケージを使用して、これらの依存関係を提供するメタパッケージを生成し、次にdpkgこれらのパッケージをインストールする必要があります。

equivsそのドキュメントをインストールして読むだけで十分ですが、Ubuntuのこのガイドは非常に広範囲であり、他のAPTシステムにも適用されるはずです。


また、指定した依存関係なしでパッケージをインストールできると思われる場合は、パッケージに対してバグを報告し、依存関係が不要な場合を説明する必要があります。

この場合texlive-base-binベースのDebianディストリビューションでは、「推奨」のみであり、「依存関係」ではないようです(少なくとも、おそらくtexliveそのような巨大なパッケージなので)。しかし、ディストリビューションのバージョンはしばしば大幅に遅れます(パッケージが非常に大きなものであるため、多くの場合、実質的な作業なしではパッケージ化できません。ほとんどの場合、Debian以外で生活していると主張する1人または数人によって行われます)equivsトリックは、多くの場合TeX Liveで使用されます(その文は手に負えなくなりました:-))。


追加:パッケージシステムの外部にTeXLiveをインストールする場合の詳細な手順については、TeX.SXのこれらの手順はより広範囲であり、引き続き更新される可能性が高いでしょう。また、equivsステップに関するより明示的な指示も含まれています。


これがどのようにして生じたのかはわかりませんが、Linux Mintはtexliveを「ハード」依存関係にします... equivsパッケージを試してみます。
-DevSolar

equivsうまくいきました。バージョン9999を作成しtexlive-base-bin、同じ名前の元の「ダミー」パッケージ(が提供texlive-binaries)をオーバーライドし、vim-latexsuite問題なくインストールしました。
DevSolar

1

--nodepsdpkgでフラグを使用すると、依存関係なしでパッケージをインストールできます。

   --ignore-depends=package,...
          Ignore  dependency-checking for specified packages (actu-
          ally, checking is performed, but only warnings about con-
          flicts are given, nothing else)

Serverfaultにも非常によく似た質問があり、これも見る価値があります。


えっと…そんなことない?(少なくとも、私がここにいるLinux Mint 12ボックスにはありません。)
DevSolar

1
そのdpkgのためではなく、apt-getの- -これを反映する私の答えを編集したHMは、私は間違い作っているように見える
ジャーニーマンオタク

これは、Debianの派生物に終わらないように私を混乱させるものです:パッケージマネージャーインターフェイスの多数。私はそれらを混ぜるときに関係する落とし穴がないと仮定しますか?または、それらのいずれかに固執する必要がありますか?
-DevSolar

すべてはdpkgに基づいています。基本的に、aptとaptitudeはそのフロントエンドであり、aptとaptitudeのフロントエンドがあります。dpkgは通常、.debファイルからパッケージをインストールするときに使用されます。私はほとんどの場合、apt-getとdpkgにこだわる傾向があります。「デフォルト」のDebian風味パッケージマネージャを混合すると、通常reasonablysに安全でなければならない
ジャーニーマンオタク

順番にvim-latexsuiteに依存するものはないので、それはあなたの答えを私の実際の問題に対する私の好ましい解決策にします。ただし、このソリューションは「texlive」が存在することを示すものではなく、vim-latexsuiteがそれを要求しないようにするだけです。そのため、ダニエルの回答は質問のタイトルによりよく適合しています。チェックマークは彼に、賞賛はあなたに行きます。;-)
DevSolar

1

以下は、.debファイルから依存関係を削除します。この場合、freeradiusからlibperl5.20依存関係を削除します。

dpkg-deb -x freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius
dpkg-deb -e freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius/DEBIAN
sed -i  -e 's/, libperl5.20 (>= 5.20.2)//g' freeradius/DEBIAN/control
dpkg-deb -b freeradius freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb

これにより、依存関係が存在することを認識せずにパッケージをインストールできます。

パッケージの特定のバージョンを手動でインストールしている場合apt-get upgradeは、将来パッケージのアップグレードを停止することもできます。

apt-mark hold freeradius
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.