Skip to content

Commit b5fbd57

Browse files
committed
initial commit, code works
0 parents  commit b5fbd57

File tree

4 files changed

+832
-0
lines changed

4 files changed

+832
-0
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Tea Package Maker
2+
Create a single file installer for linux ubuntu and debian derivatives software for offline usage.
3+
Currently developed for [TeaLinuxOS](http://tealinuxos.org)
4+
5+
## Requiremets
6+
1. python-apt >= 0.9.3.5
7+
2. python-gobject >= 3.12
8+
9+
## how to use:
10+
You will need a 'status' file. It can be obtained from /var/lib/dpkg/status.
11+
Tt can be your own OS or your friend's OS if you want to provide offline installer for him/her.
12+
13+
Open the app, select the 'status' file, input a valid package name, click 'Build'.

tea-maker-confirm.sh

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
#!/bin/bash
2+
3+
echo -e "\n~~ tea_maker ~~"
4+
echo "pembuat file .tea"
5+
echo "versi 1"
6+
7+
##################
8+
# --konfigurasi--
9+
##################
10+
#1
11+
folder_penyimpanan="$HOME"
12+
nama_keterangan="dan_dependensinya"
13+
# Setting untuk penyimpanan .tea yang dibuat.
14+
# misalnya jika kita meminta tea_maker untuk membuat tea untuk aplikasi "gedit", maka
15+
# otomatis akan disimpan di <folder_penyimpanan> dengan nama "gedit_<nama_keterangan>.tea"
16+
#
17+
#2
18+
apt_archives="/var/cache/apt/archives"
19+
# directory repository lokal Anda
20+
#
21+
22+
errchk="/tmp/TEA/errchk"
23+
errdisp="/tmp/TEA/errdisp"
24+
show="/tmp/TEA/show"
25+
treeview="/tmp/TEA/tree"
26+
27+
profil=$1
28+
nama_aplikasi=$2
29+
30+
31+
##################
32+
# --functions--
33+
##################
34+
35+
function keluar0 {
36+
rm -rf "$ruangkerja"
37+
rm -f "$filekerja"*
38+
exit 0
39+
}
40+
41+
function keluar1 {
42+
rm -rf "$ruangkerja"
43+
rm -f "$filekerja"*
44+
exit 1
45+
}
46+
47+
48+
##################
49+
# --utama--
50+
##################
51+
52+
ruangkerja="/tmp/TEA/workspace"
53+
filekerja="/tmp/TEA/list"
54+
profile_dir="/tmp/TEA/pro"
55+
rm -rf /tmp/TEA/
56+
mkdir /tmp/TEA/
57+
mkdir "$ruangkerja"
58+
mkdir "$ruangkerja/partial"
59+
mkdir /tmp/TEA/pro/
60+
cp -f $profil /tmp/TEA/pro/
61+
62+
echo -e "\nMembuat file tea untuk profil tujuan :"
63+
ls -1 --hide="lock" "$profile_dir"
64+
65+
#step 1 : menyusun daftar paket
66+
67+
echo -e "\nAplikasi yang akan dipasang: $nama_aplikasi\n"
68+
69+
echo -e "Memeriksa daftar dependensi...\n"
70+
>"$filekerja"
71+
semua_dependensi=`apt-get --print-uris -y -o dir::state::status="$filekerja" -o dir::cache::archives="$ruangkerja" install $nama_aplikasi | grep '\.deb' | wc -l`
72+
if [ $semua_dependensi -eq 0 ]; then
73+
echo -e "\nMaaf, aplikasi yang Anda inginkan tidak tersedia di Software Sources yang Anda gunakan.\n"
74+
keluar1
75+
fi
76+
echo -e "Aplikasi $nama_aplikasi memiliki $semua_dependensi paket dependensi\n" # >> $show
77+
for stat in `ls -1 --hide="lock" "$profile_dir"`; do
78+
echo "Membaca profil : $stat"
79+
apt-get --print-uris -y -o dir::state::status="$profile_dir"/"$stat" -o dir::cache::archives=$ruangkerja install $nama_aplikasi 2> "$filekerja"-err | grep '\.deb' > "$filekerja"-tmp
80+
cat "$filekerja"-err
81+
if [ `cat "$filekerja"-err | wc -l` -gt 0 ]; then
82+
echo -e "\nMaaf, tidak dapat menyusun dependensi untuk profil : $stat\nProses dibatalkan.\n"
83+
keluar1
84+
fi
85+
jumlah_diperlukan=`cat "$filekerja"-tmp | wc -l`
86+
jumlah_terinstall=$(( $semua_dependensi - $jumlah_diperlukan ))
87+
cat "$filekerja"-tmp >> "$filekerja"
88+
echo -e "diperlukan $jumlah_diperlukan paket tambahan ( $jumlah_terinstall paket telah terinstall )\n" # >> $show
89+
done
90+
91+
sort "$filekerja" | uniq | awk '{print $2"^"$3}' > "$filekerja"-tmp
92+
mv "$filekerja"-tmp "$filekerja"
93+
NUMdeb=`wc -l "$filekerja" | cut -f1 "-d "`
94+
echo -e "\nTotal diperlukan $NUMdeb file .deb\n"
95+
if [ $NUMdeb -eq 0 ]; then
96+
echo -e "Aplikasi $nama_aplikasi telah terinstall di profil yang dituju.\nFile tea tidak diperlukan.\n"
97+
keluar0
98+
fi
99+
sleep 1
100+
101+
#step 2 : memeriksa file yang tersedia
102+
echo -e "\n# Memerikasi ketersediaan file .deb di APT archives #\nAPT archives Anda : $apt_archives\n"
103+
sleep 1
104+
touch $treeview
105+
jml_tak_ada=0
106+
size_download=0
107+
for q in `cat "$filekerja"`; do
108+
q1=`echo $q|cut -f1 -d^`
109+
q2=`echo $q|cut -f2 -d^`
110+
if [ `ls -1 "$apt_archives" | grep $q1 | wc -l` -gt 0 ]; then
111+
echo -e "$q1 Yes" >> "$treeview"
112+
else
113+
echo -e "$q1 No" >> "$treeview"
114+
jml_tak_ada=$(( $jml_tak_ada + 1 ))
115+
size_download=$(( $size_download + $q2 ))
116+
fi
117+
done
118+
echo -e '\e[00m'
119+
if [ $jml_tak_ada -eq 0 ]; then
120+
echo -e "\nSemua file tersedia\n" >> $show
121+
else
122+
if [ $size_download -ge 10000000000 ]; then
123+
size_download=$(( $size_download / 1000000000 ))
124+
satuan="GB"
125+
elif [ $size_download -ge 10000000 ]; then
126+
size_download=$(( $size_download / 1000000 ))
127+
satuan="MB"
128+
elif [ $size_download -ge 10000 ]; then
129+
size_download=$(( $size_download / 1000 ))
130+
satuan="kB"
131+
else
132+
satuan="Bytes"
133+
fi
134+
semua_dep=$(($jml_tak_ada - $jumlah_diperlukan))
135+
echo -e "$jml_tak_ada of $jumlah_diperlukan file(s) not available in APT Cache.\nNeed to download $size_download $satuan\n" >> $show
136+
fi
137+
138+
139+
140+
##################
141+
# --notes--
142+
##################
143+
##september 2013
144+
#script ini bebas dan gratis dimanfaatkan untuk tujuan yang benar
145+
#jika ada pertanyaan/masukan silahkan kirim email ke
146+
#elektronifa[at]yahoo.co.id (maaf, hanya email)
147+
148+
#############################################################################
149+
# di-edit seperlunya untuk keperluan pembuatan Tea Package Maker GUI #
150+
# mnirfan, DOSCOM, 2015-2016 #
151+
# kritik & saran : twitter @mnirfan25 atau @doscomedia; http://doscom.org #
152+
#############################################################################

0 commit comments

Comments
 (0)