feat: install .deb packages with apt-get
This commit is contained in:
		| @@ -270,10 +270,16 @@ func (d Debian) runs() (commands []string) { | |||||||
| 		"kmod", "linux-base", "libssl-dev", | 		"kmod", "linux-base", "libssl-dev", | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if d.release >= 8 { |  | ||||||
| 	gccs := "'^(gcc-[0-9].[0-9]|gcc-[0-9]|gcc-[1-9][0-9])$'" | 	gccs := "'^(gcc-[0-9].[0-9]|gcc-[0-9]|gcc-[1-9][0-9])$'" | ||||||
| 	pkglist = append(pkglist, gccs) | 	pkglist = append(pkglist, gccs) | ||||||
|  |  | ||||||
|  | 	if d.release >= 8 { | ||||||
| 		pkglist = append(pkglist, "initramfs-tools") | 		pkglist = append(pkglist, "initramfs-tools") | ||||||
|  | 	} else { | ||||||
|  | 		// by default Debian backports repositories have a lower | ||||||
|  | 		// priority than stable, so we should specify it manually | ||||||
|  | 		cmdf("apt-get -y install -t %s-backports "+ | ||||||
|  | 			"initramfs-tools", d.release.Name()) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if d.release < 9 { | 	if d.release < 9 { | ||||||
| @@ -290,11 +296,6 @@ func (d Debian) runs() (commands []string) { | |||||||
| 		"|| apt-get install -y %s", packages, packages, packages) | 		"|| apt-get install -y %s", packages, packages, packages) | ||||||
|  |  | ||||||
| 	if d.release == 7 { | 	if d.release == 7 { | ||||||
| 		// by default Debian backports repositories have a lower |  | ||||||
| 		// priority than stable, so we should specify it manually |  | ||||||
| 		cmdf("apt-get -y install -t %s-backports "+ |  | ||||||
| 			"initramfs-tools", d.release.Name()) |  | ||||||
|  |  | ||||||
| 		// We need newer libc for deb8*~bpo70+1 | 		// We need newer libc for deb8*~bpo70+1 | ||||||
| 		format := "deb [check-valid-until=no trusted=yes] " + | 		format := "deb [check-valid-until=no trusted=yes] " + | ||||||
| 			"http://snapshot.debian.org/archive/debian/%s " + | 			"http://snapshot.debian.org/archive/debian/%s " + | ||||||
| @@ -307,10 +308,6 @@ func (d Debian) runs() (commands []string) { | |||||||
| 		cmdf("echo 'Pin-Priority: 10' >> /etc/apt/preferences.d/jessie") | 		cmdf("echo 'Pin-Priority: 10' >> /etc/apt/preferences.d/jessie") | ||||||
|  |  | ||||||
| 		cmdf("apt-get -y update") | 		cmdf("apt-get -y update") | ||||||
|  |  | ||||||
| 		cmdf("apt-get -y install -t jessie libc6") |  | ||||||
|  |  | ||||||
| 		cmdf("apt-get -y install gcc-4.6 gcc-4.8 gcc-4.9-backport") |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmdf("mkdir -p /lib/modules") | 	cmdf("mkdir -p /lib/modules") | ||||||
| @@ -437,7 +434,10 @@ func (d Debian) Install(pkgname string, headers bool) (err error) { | |||||||
| 		pkgs = []snapshot.Package{dk.Image} | 		pkgs = []snapshot.Package{dk.Image} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var cmds []string | 	var commands []string | ||||||
|  | 	cmdf := func(f string, s ...interface{}) { | ||||||
|  | 		commands = append(commands, fmt.Sprintf(f, s...)) | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	for _, pkg := range pkgs { | 	for _, pkg := range pkgs { | ||||||
| 		found, newurl := cache.PackageURL( | 		found, newurl := cache.PackageURL( | ||||||
| @@ -452,12 +452,20 @@ func (d Debian) Install(pkgname string, headers bool) (err error) { | |||||||
| 		// TODO use faketime on old releases? | 		// TODO use faketime on old releases? | ||||||
| 		pkg.Deb.URL = strings.Replace(pkg.Deb.URL, "https", "http", -1) | 		pkg.Deb.URL = strings.Replace(pkg.Deb.URL, "https", "http", -1) | ||||||
|  |  | ||||||
| 		cmds = append(cmds, "wget --no-verbose "+ | 		cmdf("wget --no-verbose " + | ||||||
| 			"--timeout=10 --waitretry=1 --tries=10 " + | 			"--timeout=10 --waitretry=1 --tries=10 " + | ||||||
| 			"--no-check-certificate " + pkg.Deb.URL) | 			"--no-check-certificate " + pkg.Deb.URL) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmds = append(cmds, "dpkg -i ./*.deb") | 	// prepare local repository | ||||||
|  | 	cmdf("mkdir debs && mv *.deb debs/") | ||||||
|  | 	cmdf("dpkg-scanpackages debs /dev/null | gzip > debs/Packages.gz") | ||||||
|  | 	cmdf(`echo "deb file:$(pwd) debs/" >> /etc/apt/sources.list`) | ||||||
|  | 	cmdf("apt-get update") | ||||||
|  |  | ||||||
|  | 	// cut package names and install | ||||||
|  | 	cmdf("ls debs | grep deb | cut -d '_' -f 1 | " + | ||||||
|  | 		"xargs apt-get -y --force-yes install") | ||||||
|  |  | ||||||
| 	c, err := container.New(d.Distro()) | 	c, err := container.New(d.Distro()) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -469,11 +477,11 @@ func (d Debian) Install(pkgname string, headers bool) (err error) { | |||||||
| 		c.Volumes[i].Dest = "/target" + c.Volumes[i].Dest | 		c.Volumes[i].Dest = "/target" + c.Volumes[i].Dest | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmds = append(cmds, "cp -r /boot /target/") | 	cmdf("cp -r /boot /target/") | ||||||
| 	cmds = append(cmds, "cp -r /lib/modules /target/lib/") | 	cmdf("cp -r /lib/modules /target/lib/") | ||||||
| 	cmds = append(cmds, "cp -rL /usr/src /target/usr/") | 	cmdf("cp -rL /usr/src /target/usr/") | ||||||
|  |  | ||||||
| 	_, err = c.Run("", cmds) | 	_, err = c.Run("", commands) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user