~rogpeppe/juju-core/azure

« back to all changes in this revision

Viewing changes to utils/apt.go

  • Committer: William Reade
  • Date: 2012-01-20 21:32:53 UTC
  • mto: This revision was merged to the branch mainline in revision 47.
  • Revision ID: fwereade@gmail.com-20120120213253-csks5e12opl8t1rq
hefty rearrangement, few actual changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright 2012, 2013 Canonical Ltd.
2
 
// Licensed under the AGPLv3, see LICENCE file for details.
3
 
 
4
 
package utils
5
 
 
6
 
import (
7
 
        "os"
8
 
        "os/exec"
9
 
 
10
 
        "launchpad.net/loggo"
11
 
)
12
 
 
13
 
var aptLogger = loggo.GetLogger("juju.utils.apt")
14
 
 
15
 
// Some helpful functions for running apt in a sane way
16
 
 
17
 
// osRunCommand calls cmd.Run, this is used as an overloading point so we can
18
 
// test what *would* be run without actually executing another program
19
 
func osRunCommand(cmd *exec.Cmd) error {
20
 
        return cmd.Run()
21
 
}
22
 
 
23
 
var runCommand = osRunCommand
24
 
 
25
 
// This is the default apt-get command used in cloud-init, the various settings
26
 
// mean that apt won't actually block waiting for a prompt from the user.
27
 
var aptGetCommand = []string{
28
 
        "apt-get", "--option=Dpkg::Options::=--force-confold",
29
 
        "--option=Dpkg::options::=--force-unsafe-io", "--assume-yes", "--quiet",
30
 
}
31
 
 
32
 
// aptEnvOptions are options we need to pass to apt-get to not have it prompt
33
 
// the user
34
 
var aptGetEnvOptions = []string{"DEBIAN_FRONTEND=noninteractive"}
35
 
 
36
 
// AptGetInstall runs 'apt-get install packages' for the packages listed here
37
 
func AptGetInstall(packages ...string) error {
38
 
        cmdArgs := append([]string(nil), aptGetCommand...)
39
 
        cmdArgs = append(cmdArgs, "install")
40
 
        cmdArgs = append(cmdArgs, packages...)
41
 
        aptLogger.Infof("Running: %s", cmdArgs)
42
 
        cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...)
43
 
        cmd.Env = append(os.Environ(), aptGetEnvOptions...)
44
 
        return runCommand(cmd)
45
 
}