web-dev-qa-db-ja.com

tasksel、APTのタスクを使用するか、通常のメタパッケージをインストールする必要がありますか?

TaskselまたはプレーンApt?

過去には、taskselを使用して、いわゆる「タスク」をインストールしてきました。ただし、これはAPTに統合されているようです。

apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

そして、次のようにキャレット(^)を追加することで、そのような「タスク」をインストールできます。

Sudo apt-get install lamp-server^

これは次と同等ですか?

Sudo tasksel install lamp-server

そして、どちらが好ましいですか?

メタパッケージ

さらに、ここでメタパッケージはどのように機能しますか?一部のタスクはメタパッケージではないようですが、他のタスクは次のとおりです。

apt-cache show lamp-server
N: Unable to locate package lamp-server

apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop

では、最後の例を使用すると、次の3つのインストール方法の違いは何ですか?

  • Sudo apt-get install kubuntu-desktop
  • Sudo apt-get install kubuntu-desktop^
  • Sudo tasksel install kubuntu-desktop
35
gertvdijk

要するに:is taskselとapt-getのインストールプロセスの違いです。

あなたの例を見てください:

Apt-getの方法

Sudo apt-get install 'lamp-server^'は、以下を実行するために評価します。

  1. すべての「タスク:」フィールドのキャッシュ(パッケージリストファイル)を検索し、「lamp-server」ですべてを取得します。
  2. これらのパッケージを標準的な方法でインストールします。

    Sudo apt-get install package1 package2...
    

Taskselの方法

Sudo tasksel install lamp-serverは、/usr/share/tasksel/**/*.descの下にある構成ファイルの1つで「lamp-server」というタスクを探します。

  1. 「lamp-server」という名前の「Task:」フィールドの構成ファイルを検索します。
  2. すべての前提条件が利用可能かどうかを確認し([キー:]フィールド)、インストールされていない場合は覚えておいてください。
  3. パッケージを選択する方法を選択します([パッケージ:]フィールド)。これが「リスト」ではない場合、次のパッケージを名前でインストールするだけです。
  4. 以下のすべてのパッケージ名を読み取り、以前に選択したメソッドに渡してパッケージ名を生成します。
  5. /usr/lib/tasksel/info/lamp-server.preinstを探します。存在する場合は、このスクリプトを実行します。
  6. 次のコマンドを使用して、apt-getでパッケージをインストールします。

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. /usr/lib/tasksel/info/lamp-server.postinstを探します。存在する場合は、このスクリプトを実行します。

結論

taskselは、タスクの処理と選択においてより強力です。タスクのインストール/削除の前後に追加のスクリプトを実行できます。そして最大の利点は、タスクを簡単に変更して新しいタスクを作成できることです。欠点(有効な署名)なしに公式のパッケージリストファイルを編集することはできません。

最初の質問に戻ります:
特別な場合、両方のコマンドはほぼ同等です(APT::Install-RecommendsAPT::Get::AutomaticRemoveの両方を有効にした場合)。唯一の違いは、mysql-serverおよびApache2依存関係の拡張パッケージ状態(プレーンなapt-getで「手動インストール」に設定)です。

メタパッケージはどうですか?

タスクの選択(特にインストール時に役立つ)や、タスクブロックの前後に追加のコマンドを実行するなど、taskselの機能を使用しない場合、タスクはメタパッケージに非常に似ています。違いは次のとおりです。タスクはAPTキャッシュにパッケージとして登録されていません。
したがって、1つのタスク依存関係をアンインストールした場合、他のタスクdepsは明示的にインストールされたため、自動インストールとしてマークされません。メタパッケージをアンインストールすると、拡張パッケージの状態が「自動インストール」(手動でインストールされていない場合)であるため、依存関係はautoremoveで削除されます。
注: Debianのすべての分散タスクは、task-TASKNAMEという名前のメタパッケージをインストールします。

あなたの例を与える:

  1. Sudo apt-get install kubuntu-desktop
    • メタパッケージkubuntu-desktopをインストールします。依存関係は「自動インストール」です。
  2. Sudo apt-get install kubuntu-desktop^
    • タスク「kubuntu-desktop」でタグ付けされたすべてのパッケージを選択します。それはすべてメタパッケージkubuntu-desktopの依存関係です。これらはすべて「手動でインストール」としてマークされています。
  3. Sudo tasksel install kubuntu-desktop
    • タスクのパッケージをインストールする前に、Xがインストールされていることを確認してください。
    • メタパッケージkubuntu-desktopをインストールします。依存関係は「自動インストール」です。
34
Lasall