

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 個別 layer 作業系統套件安裝
<a name="per-layer-os-package-install"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

從 Chef 12 開始，您必須使用自訂配方，在執行不同作業系統的 layer 上安裝套件。此方法提供套件安裝的最大彈性和控制。

例如，假設您想要在執行 RedHat、Ubuntu 和 Amazon 版本之 Linux 作業系統的 layer 上安裝 Apache。RedHat 和 Amazon Linux 的 Apache 套件稱為 `httpd`，但在 Ubuntu 上稱為 `apache2`。

若要解決套件命名的差異，您可以使用下列範例配方中的類似語法。此配方會安裝每個作業系統適用的 Apache 套件。此範例根據 [Chef 文件](https://docs.chef.io/)。

```
package "Install Apache" do
   case node[:platform]
      when "redhat", "amazon"
         package_name "httpd"
      when "ubuntu"
         package_name "apache2"
   end
end
```

如需如何使用 `package` 資源管理套件的詳細資訊，請前往 Chef 文件中的[套件](https://docs.chef.io/resource_package.html)頁面。

或者，您可以從 Chef 配方 DSL (網域特定語言) 使用 `value_for_platform` 協助程式方法，更簡潔地完成相同的事項：

```
package "Install Apache" do
   package_name value_for_platform(
      ["redhat", "amazon"] => { "default" => "httpd" },
      ["ubuntu"] => { "default" => "apache2" }
   )
end
```

如需使用 `value_for_platform` 協助程式方法的資訊，請前往[關於配方 DSL](https://docs.chef.io/dsl_recipe.html)。