apt-getを使用して特定のパッケージをインストールから除外するにはどうすればよいですか?


12

を使用して、特定のパッケージをインストールから除外しますapt-get。つまり、特定のパッケージのリストなしで、できれば1回の呼び出しでメタパッケージをインストールしますapt-get

たとえば、Ubuntu 14.04 LTSコマンドラインでは、MATEデスクトップ環境をインストールしています。14.04では、LTS MATEは公式のフレーバーではないため、PPAを追加しています。

sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update

次にインストール:

sudo apt-get install xorg mate-core --no-install-recommends

でも推奨エキストラなしで、mate-core3つのターミナルエミュレータをインストールしますxtermuxtermそしてmate-terminal 、この最小構成でインストールされている間、後者は、適切なフォントを欠いています。

3つの端末プログラムが多すぎると判断したxorgとし、とmate-core なし xtermでインストールしたいとしmate-terminalます。私はそれをできた

sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal

しかし、一度にこれを行うことは可能ですか?のようないくつかの構文はありますか

sudo apt-get install xorg mate-core --without xterm mate-terminal

削除してxtermmate-terminalよろしいですか?15.04ではmate-terminal、のハードな依存関係でありmate-desktop-environment-core、これはのハードな依存関係でありmate-core、PPA mate-terminalが提供しないx-terminal-emulator(15.04のパッケージでは提供しない)と思います。
ムル

パッケージ名の横にあるアスタリスクが特別な意味を持たない限り、あなたは正しいかもしれません。また、驚くほど少ないスペースが解放されます。とにかく、私の質問が言う、取り外すことができるものは何でも削除、についてですXTerm多分とUXTerm(私がいないことを確認、後者のパッケージ名が何であるかだ)
Nickolai Leschov

1
これはあなたが探しているものですか?askubuntu.com/questions/75895/...
セス・

@Sethない、非常に:のようないくつかの構文が存在することになる場合、私は希望sudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov

使用するaptitude(またはグラフィカルパッケージマネージャー)場合、インストールするパッケージを選択(選択解除)できます。依存関係が壊れた場合は、(通常)説明が表示されます。
saiarcot895

回答:


7

だから、チームメイト-coreが 依存mate-desktop-environment-core順番にその依存mate-terminal。Aは異なり容易に破断することはできません。NOR apt-getaptitudeサポート--without--excludeオプションとパッケージは助けにはなりません「保持を」:

$ echo "mate-terminal hold" | sudo dpkg --set-selections
$ sudo apt-get install mate-core
[...]
一部のパッケージをインストールできませんでした...
以下のパッケージには、満たされていない依存関係があります。

確かに、dpkg --force-dependsパッケージをインストールするために使用できますが、それはおそらくあなたが望むものではありません。

Depends:フラグをダミーパッケージでいっぱいにする可能性があります。

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
セクション:その他
優先度:オプション
標準バージョン:3.9.2
パッケージ:mate-terminal
バージョン:1.8.0
説明:mate-terminal用のダミーパッケージ
:バツ

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

これでmate-corew / oをインストールできるはずmate-terminalです。除外する他のパッケージについても同じ手順を繰り返します。

確かに、これはかなりの努力であり、--withoutオプションがいいでしょう。将来的にこのような機能を提供するためにウィッシュリストのバグを開くことができるかもしれませんが、これが実装されることをどういうわけか私は疑っています。

ただし、より現実的なオプションは、PPA所有者に、より少ないDependsパッケージセットでMATEに別のメタパッケージを提供するよう請願することです。


4

aptitudeまたはグラフィカルパッケージマネージャー(Synapticなど)を使用する場合、依存関係の問題が発生しない限り、インストールするパッケージの選択を解除できます。

の場合aptitude、パッケージをインストールする前に(グラフィカルビューで)、依存パッケージがインストールされている理由が表示されます。私の場合、KDEを使用しているため、MATEパッケージはありません。インストールするように指示するとmate-core、次のメッセージが表示されます。

ここに画像の説明を入力してください

mate-coreが手動でインストールされているとマークされ、他の多くのパッケージがインストールされていることに注意してください。mate-terminalパッケージについては、下部に「mate-desktop-environment-core[ユニバース]に依存しているmate-terminal(> = 1.0.0)」とあります。のエントリに移動mate-desktop-environment-coreします

ここに画像の説明を入力してください

mate-core[ユニバース]に依存mate-desktop-environment-core(> = 1.8.0 + 9)」。これがmate-terminalインストールされている理由です。

代わりに、推奨パッケージが(別のパッケージに依存しているものではなく)インストールされている場合、そのaptitude旨を通知し、破損した依存関係なしにそのパッケージをインストールしないように指示できます。例えば:

ここに画像の説明を入力してください


2

別の方法

他に依存するメインパッケージをダウンロードします。パッケージを抽出し、不要な依存関係を削除して、再パックします。gdebiパッケージインストーラーで新しいパッケージを開きます。新しい依存関係がインストールされます。

  • 依存関係のリストはDEBIAN / controlで見つけることができます-> 依存します
  • debpacingのヘルプについては、PPAの作成方法に関する私の回答をご覧ください。

0

aptこのようなシナリオには特別な構文があります:パッケージにハイフン(マイナス記号)を追加するとパッケージが削除/インストールされないため、最も近いのsudo apt-get install xorg mate-core --without xterm mate-terminalsudo apt-get install xorg mate-core xterm- mate-terminal-/ubuntu//a/1011439/182923にあります

この場合、それは役に立ちません。

The following packages have unmet dependencies:
 mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed                                                                        
E: Unable to correct problems, you have held broken packages.

しかし、それはあなたの特定の質問に対する答えのようです。参考のために、このクロスポスト。

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