Puppetを使用してUbuntuにopen-vm-toolsをインストールします。小悪は何ですか?


9

理想的な世界では、をインストールするためのパペットの設定open-vm-toolsは次のように簡単です:

class vm-tools {
    package { 'open-vm-tools':
        ensure => installed
    }
    package { 'open-vm-dkms':
        ensure => installed
    }
}

しかし、それは依存関係の醜い醜い缶を開きます。Xをインストールしますが、これは明らかにサーバーには属していません。Ubuntu 10.04以降、これらのパッケージはどちらもopen-vm-toolboxGUIツールのパッケージを推奨しています。

# apt-cache depends open-vm-dkms
open-vm-dkms
  Depends: dkms
  Depends: make
  Suggests: open-vm-toolbox
  Recommends: open-vm-tools

# apt-cache depends open-vm-tools
open-vm-tools
  Depends: libc6
  Depends: libfuse2
  Depends: libgcc1
  Depends: libglib2.0-0
  Depends: libicu44
  Depends: libstdc++6
  Recommends: open-vm-source
  Recommends: open-vm-toolbox
  Recommends: ethtool
  Recommends: zerofree

推奨パッケージは常にデフォルトでインストールされます。「CLIツール」として説明されているパッケージをインストールするときに、デフォルトでX依存関係をインストールすることは明らかに望ましくありません。

Debianのに対して機能要求は、すぐにこの理由で拒否されましたが、クーラーヘッドは、Ubuntuの中で勝つませんでした。先週、これは不適切なアドバイスによる変更であるという認識がありましたが、次のLTSリリースがリリースされるまで、それは役に立ちません。

推奨パッケージをインストールする動作は、--no-install-recommendsオプションを指定してコマンドラインで簡単に無効化できますが、パペットを介してこれを実行するためのサポートはなく、サポートを要求するチケットの煩雑な 混乱は3年間あまり進んでいません。

もう1つのオプションはapt.conf、を介してシステム全体で推奨パッケージを無効にすることです。これは、パッケージの動作が大幅に変更され、影響が私が望んでいる範囲よりも大きくなります。

私はそれを怠惰なやり方でやることに辞任しました。

exec { 'open-vm-tools install':
    command => '/usr/bin/apt-get install -y --no-install-recommends open-vm-dkms open-vm-tools',
    creates => '/usr/lib/open-vm-tools',
}

しかし、これは明らかに「間違っている」ことです。これがすべて正常に機能するようにするための何かが足りないのですか、それともこの問題に対する最善のハックの回避策ですか?

回答:


3

バグ1766は、aptitudeプロバイダーが推奨パッケージをインストールするのに対し、aptプロバイダーはインストールしないことを示していました。

それが正しい場合(私は自分で確認していません)、次の方法がより適切に機能する可能性があります。

package { [ "open-vm-tools", "open-vm-dkms" ]:
  ensure   => installed,
  provider => apt,
}

Puppetタイプリファレンスの「パッケージ」セクションから転用


さらに調査して編集してください:UbuntuとDebianではaptプロバイダーがデフォルトであるため、これらのパッケージにはaptitudeプロバイダーを使用し、~/.aptitude/configルートに適したものを追加します。

package { [ "open-vm-tools", "open-vm-dkms" ]:
  ensure   => installed,
  provider => aptitude,
  require  => File["/root/.aptitude/config"];
}
file { "/root/.aptitude/config":
  ensure  => present,
  content => 'APT::Install-Recommends "0";';
}

完璧ではありませんが、巨大なexec行よりも簡潔です。


そのような運はありません。x11-commonとそのすべての友達がインストールされました。そのバグレポートは、aptプロバイダーで動作を制御するために追加できる引数があることを示唆しているようです...しかし、それがどのように行われることになっているかについての情報は見つかりません。そのバグレポートは古くなっている可能性がありますが、少なくとも現在のところ、aptプロバイダーは実際にはUbuntuおよびDebianのデフォルトですこのファイルの 13行目を参照してください。
シェーンマッデン

上記の編集を参照してください。
Mike Renfro、2011年

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