ce823c03c1
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
90 lines
1.5 KiB
Go
90 lines
1.5 KiB
Go
package managers
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/lxc/distrobuilder/shared"
|
|
)
|
|
|
|
// NewPacman creates a new Manager instance.
|
|
func NewPacman() *Manager {
|
|
err := pacmanSetMirrorlist()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
// shared.RunCommand("pacman", "-Syy")
|
|
|
|
err = pacmanSetupTrustedKeys()
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
return &Manager{
|
|
command: "pacman",
|
|
flags: ManagerFlags{
|
|
clean: []string{
|
|
"-Sc",
|
|
},
|
|
global: []string{
|
|
"--noconfirm",
|
|
},
|
|
install: []string{
|
|
"-S", "--needed",
|
|
},
|
|
remove: []string{
|
|
"-Rcs",
|
|
},
|
|
refresh: []string{
|
|
"-Syy",
|
|
},
|
|
update: []string{
|
|
"-Su",
|
|
},
|
|
},
|
|
hooks: ManagerHooks{
|
|
clean: func() error {
|
|
return os.RemoveAll("/var/cache/pacman/pkg")
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func pacmanSetupTrustedKeys() error {
|
|
var err error
|
|
|
|
_, err = os.Stat("/etc/pacman.d/gnupg")
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
|
|
err = shared.RunCommand("pacman-key", "--init")
|
|
if err != nil {
|
|
return fmt.Errorf("Error initializing with pacman-key: %s", err)
|
|
}
|
|
|
|
err = shared.RunCommand("pacman-key", "--populate", "archlinux")
|
|
if err != nil {
|
|
return fmt.Errorf("Error populating with pacman-key: %s", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func pacmanSetMirrorlist() error {
|
|
f, err := os.Create(filepath.Join("etc", "pacman.d", "mirrorlist"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
|
|
_, err = f.WriteString("Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|