

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

# 什麼是套件 URL？
<a name="sbom-generator-purl-sbom"></a>

 [套件 URL 或 PURL](https://github.com/package-url/purl-spec) 是一種標準化格式，用於識別跨不同套件管理系統的軟體套件、元件和程式庫。格式可讓您更輕鬆地追蹤、分析和管理軟體專案中的相依性，特別是在產生軟體物料清單 (SBOMs時。

## PURL 結構
<a name="w2aac37c33b5"></a>

 PURL 結構類似於 URL，由多個元件組成：
+  `pkg` – 常值字首 
+  `type`– 套件類型 
+  `namespace` – 分組 
+  `name` – 套件名稱 
+  `version` – 套件版本 
+  `qualifiers` – 額外的鍵/值對 
+  `subpath` – 套件中的 filepath 

**PURL 範例**  
 以下是 PURL 的外觀範例。

```
pkg:<type>/<namespace>/<name>@<version>?<qualifiers>#<subpath>
```

### 一般 PURL
<a name="w2aac37c33b5c11"></a>

 一般 PURL 用於表示不符合已建立套件生態系統的軟體套件和元件，例如 npm、 pypi或 maven。它可識別軟體元件並擷取可能與特定套件管理系統不符的中繼資料。一般 PURL 適用於各種軟體專案，從編譯的二進位檔到平台，例如 Apache和 WordPress。它允許將其套用於各種使用案例，包括編譯的二進位檔、Web 平台和自訂軟體分發。

**金鑰使用案例**  
 
+  支援編譯的二進位檔，適用於 Go和 Rust 
+  支援 Web 平台，例如 Apache和 WordPress，其中套件可能與傳統套件管理員無關。
+  透過允許組織參考內部開發的軟體或缺少正式套件的系統，支援自訂舊版軟體。

**範例格式**  
 以下是一般 PURL 格式的範例。

```
pkg:generic/<namespace>/<name>@<version>?<qualifiers>
```

#### 一般 PURL 格式的其他範例
<a name="w2aac37c33b5c11c13"></a>

 以下是一般 PURL 格式的其他範例。

**編譯Go的二進位**  
下列代表使用 `inspector-sbomgen binary` 編譯的 Go。

```
pkg:generic/inspector-sbomgen?go_toolchain=1.22.5
```

**編譯Rust的二進位**  
 下列代表使用 編譯的`myrustapp`二進位Rust。

```
pkg:generic/myrustapp?rust_toolchain=1.71.0
```

**Apache 專案**  
 下列是指 Apache 命名空間下的 http 專案。

```
pkg:generic/apache/httpd@1.0.0
```

**WordPress 軟體**  
 下列是指核心WordPress軟體。

```
pkg:generic/wordpress/core/wordpress@6.0.0
```

**WordPress 佈景主題**  
 下列是指自訂WordPress佈景主題。

```
pkg:generic/wordpress/theme/mytheme@1.0.0
```

**WordPress 外掛程式**  
 下列是指自訂WordPress外掛程式。

```
pkg:generic/wordpress/plugin/myplugin@1.0.0
```