Skip to content

📦 InstallComposerViaPackageManager

通过系统原生包管理器安装 Composer。

何时使用

当你在 Linux 上希望用 apt/dnf/yum/pacman/apk/zypper 安装 Composer(而非直接下载 phar)时使用。🐧

签名

go
func InstallComposerViaPackageManager(distro *DistroInfo, useSudo bool) (bool, error)

参数

参数类型说明
distro*DistroInfo发行版信息,通常由 DetectLinuxDistro 获取
useSudobool是否在命令前加 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.InstallSmartInstallerPreferPackageManager 时调用。🔗
  • 不同发行版的包名与命令参数各异(如 pacman 用 -S --noconfirm),由函数内部处理。🛠️

基于 MIT 许可证发布