📦 InstallComposerViaPackageManager
通过系统原生包管理器安装 Composer。
何时使用
当你在 Linux 上希望用 apt/dnf/yum/pacman/apk/zypper 安装 Composer(而非直接下载 phar)时使用。🐧
签名
go
func InstallComposerViaPackageManager(distro *DistroInfo, useSudo bool) (bool, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
distro | *DistroInfo | 发行版信息,通常由 DetectLinuxDistro 获取 |
useSudo | bool | 是否在命令前加 sudo |
返回值
bool:是否尝试了安装(找到对应包管理器即true,无匹配为false)。🎯error:命令执行失败时返回包装错误;未尝试时为nil。⚠️
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/installer"
)
func main() {
distro, err := installer.DetectLinuxDistro()
if err != nil {
log.Fatalf("检测发行版失败: %v", err)
}
attempted, err := installer.InstallComposerViaPackageManager(distro, true)
if !attempted {
fmt.Println("无可用包管理器")
return
}
if err != nil {
log.Fatalf("安装失败: %v", err)
}
fmt.Println("通过包管理器安装完成")
}进阶
- 返回
attempted=false表示发行版无已知包管理器,调用方应回退到直接下载。🔄 - 该函数被
Installer.Install与SmartInstaller在PreferPackageManager时调用。🔗 - 不同发行版的包名与命令参数各异(如 pacman 用
-S --noconfirm),由函数内部处理。🛠️