source: projects/vbootstrap/trunk/vbootstrap.sh.in @ 6874

Revision 6874, 2.1 KB checked in by daisuke, 12 years ago (diff)
  • add --force rpm option to install packages in vbootstrap
    • add RPM::PM="external" for use external rpm
    • add RPM::Install-Options::=--force to force option
Line 
1#!/bin/bash
2
3TEXTDOMAIN=vbootstrap
4TEXTDOMAINDIR=/usr/share/locale
5
6VERSION=@@VBOOTSTRAP_VERSION@@
7
8##
9
10VBOOTSTRAPDIR="/usr/share/vbootstrap"
11SUPPORTED_VERSION="$(ls $VBOOTSTRAPDIR/scripts/)"
12
13##
14
15usage()
16{
17  echo "Usage: vbootstrap <version>_<arch> <url> <targetdir>"
18  echo "  supported <version>_<arch>:"
19  for ver in $SUPPORTED_VERSION
20  do
21    echo "    $ver"
22  done
23}
24
25##
26
27if [ "$(id -u)" != "0" ]
28then
29  usage
30  echo "E: You should run vbooststrap as super user."
31  exit 0
32fi
33
34if ! [ $# -eq 3 ]
35then
36  usage
37  echo "E: You must specify a vine version, location and target."
38  exit 0
39fi
40
41INSTVER=$1
42shift
43
44if [ -f "$VBOOTSTRAPDIR/scripts/$INSTVER" ]
45then
46  source $VBOOTSTRAPDIR/scripts/$INSTVER
47else
48  usage
49  echo "E: $INSTVER is not supported."
50  exit 0
51fi
52
53FETCHURL=$1
54shift
55
56INSTDIR=$1
57shift
58
59if [ -d "$INSTDIR" ]
60then
61  echo "E: Specified directory \"$INSTDIR\" is already exists."
62  usage
63  exit 0
64fi
65
66##
67
68APT_OPTS="
69    -o Dir::Etc::sourcelist=$INSTDIR/etc/vbootstrap/sources.list.d/$INSTVER
70    -o RPM::RootDir=$INSTDIR
71    -o Dir::Etc::sourceparts=$INSTDIR/etc/apt/sources.list.d
72    -o Dir::State=$INSTDIR/var/lib/apt
73    -o Dir::Cache=$INSTDIR/var/cache/apt
74    -o RPM::PM=\"external\"
75    -o RPM::Install-Options::=--force "
76
77##
78
79# generate source.list of $INSTVER
80mkdir -p $INSTDIR/etc/vbootstrap/sources.list.d
81sed -e "s,@@FETCHURL@@,${FETCHURL}," $VBOOTSTRAPDIR/sources.list.d/$INSTVER > $INSTDIR/etc/vbootstrap/sources.list.d/$INSTVER || exit 1
82
83# initialize rpm database
84echo $"Initializing RPM database in $INSTDIR."
85mkdir -p $INSTDIR/var/lib/rpm
86rpm --initdb --root $INSTDIR
87
88# update apt database
89echo $"update apt database."
90mkdir -p $INSTDIR/var/lib/apt/lists/partial
91mkdir -p $INSTDIR/var/cache/apt/archives/partial
92apt-get -qq $APT_OPTS update
93
94# misc setup files
95mkdir -p $INSTDIR/etc
96touch $INSTDIR/etc/mtab
97
98# create some device files
99mkdir $INSTDIR/dev
100mknod $INSTDIR/dev/null c 1 3
101mknod $INSTDIR/dev/console c 5 1
102
103# install base vine linux system.
104echo $"Installing basesystem."
105for i in $BASE_PKGS
106do
107  apt-get -y -qq $APT_OPTS install $i
108done
109
110# run post install script
111vbootstrap_post
112
113echo $"vbootstrap done."
114
Note: See TracBrowser for help on using the repository browser.