blob: b5ca9d9dc1c3e3e02aa6be5385b253ddd0c2564f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/bin/bash
set -e
function get_repo_online {
yum reinstall -y --downloadonly --downloaddir=repo `cat list`
}
function get_repo_dvd {
mkdir repo
for i in `cat list`
do
package=`find iso | grep $i | cut -d'/' -f4 | grep ^$i-[1234567890]`
cp iso/Packages/*/$i repo
done
}
function makejail {
if [ ! -e list ]
then
echo "Run \`makelist\` first."
exit
fi
echo "
Two sources for the required packages are available:
1. Online Fedora repositories (default) (Internet required, 50~80MB will be downloaded)
note: if you want to use local repositories, follow the steps required to add them
to yum repositories at /etc/yum.repos.d/
2. Use an already downloaded Fedora iso or mounted DVD (arch doesn't matter).
3. Use a single folder containing required packages.
note: if some packages are missing or outdated, we'll automatically download them
from Fedora repositories.
"
read -p "Which method? (1/2/3/q) (default: 1) " ask
if [[ ( $ask == 1 || -z $ask ]]
then
echo "Online method chosen ..."
method="online"
elif [[ $ask == 2 ]]
then
echo "DVD method chosen ..."
method="dvd"
read -p "Where is the DVD/iso mounted?" src
if [[ -d $src ]]
then
if [[ $src != "iso" ]]
then
ln -s $i iso
fi
else
echo "error: cannot access $src: No such directory"
exit
fi
elif [[ $ask == 3 ]]
then
echo "Local method chosen ..."
method="online" # this is NOT a bug.
read -p "Where are the packages?" src
if [[ -d $src ]]
then
if [[ $src != "repo" ]]
then
ln -s $i repo
fi
else
echo "error: cannot access $src: No such directory"
exit
fi
elif [[ $ask == "q" ]]
then
exit
else
echo "error: couldn't detect your choice!"
echo
makejail $@
exit
fi
get_repo_$method
cd root
for i in `ls ../repo`
do
rpm2cpio ../repo/$i | cpio -idm
done
echo "Removing a couple of files that are useless for all intents and purposes of a jail ..."
rm -rf usr/lib/locale usr/share/{cracklib,doc,i18n,info,locale,man,zoneinfo}
echo "Starting to reset SELinux contexts of the chroot environment ..."
setfiles -p -r . /etc/selinux/targeted/contexts/files/file_contexts .
cd ..
echo "done"
}
makejail $@
|