milis/mps-0.1/mps

402 lines
8.4 KiB
Plaintext
Raw Normal View History

2016-02-24 01:27:23 +01:00
#!/bin/bash
versiyon="0.1"
paketdepo="/depo/paketler/"
sunucu="192.168.3.193:8000/paketdepo/"
ikaynak=""
betikad=${0##*/}
kurulum_onay="evet"
dokunulmaz="/etc/dokunulmaz"
talimatname_dizin="/root/talimatname"
2016-02-24 22:31:11 +01:00
kokdizin="/"
2016-02-24 01:27:23 +01:00
icerik_ekle(){
paketad=`echo "$1" | cut -d'#' -f1`
paketad=`basename $paketad`
echo $paketad" paketi kuruluyor."
2016-02-26 03:41:17 +01:00
tar -C /tmp --extract --file=$1 .PRE 1 2> /tmp/$paketad_pre.log
2016-02-26 02:41:51 +01:00
#kos-kur kontrolu
if [ -f /tmp/.PRE ];then
bash /tmp/.PRE
rm /tmp/.PRE
fi
tar xf $1 -C $kokdizin &&
2016-02-24 01:27:23 +01:00
mkdir -p /var/lib/pkg/DB/"$paketad" &&
2016-02-26 02:41:51 +01:00
mv $kokdizin/.MTREE /var/lib/pkg/DB/"$paketad"/files &&
mv $kokdizin/.META /var/lib/pkg/DB/"$paketad"/META &&
#kur-kos calistirilmasi
if [ -f $kokdizin.POST ];then
bash $kokdizin.POST
rm $kokdizin.POST
fi
if [ -f $kokdizin.PRE ];then
rm $kokdizin.PRE
fi
if [ -f $kokdizin/.okubeni ];then
rm $kokdizin/.okubeni
fi
if [ -f $kokdizin/.README ];then
rm $kokdizin/.README
fi
2016-02-24 22:31:11 +01:00
if [ -f /etc/ld.so.conf ];then
2016-02-24 01:44:11 +01:00
ldconfig
2016-02-24 01:27:23 +01:00
fi
echo $paketad" paketi kuruldu."
}
paket_sil(){
2016-02-26 02:41:51 +01:00
local paket kkont sil_onay
2016-02-24 01:27:23 +01:00
if [ -f $dokunulmaz ];then
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
paket="$1"
echo $paket" paketi siliniyor."
#while IFS='' read -r line || [[ -n "$line" ]]; do
while read -r dosya
do
2016-02-26 02:41:51 +01:00
touch /tmp/$paket.sil
2016-02-24 01:27:23 +01:00
if [[ $(grep -c $dosya $dokunulmaz) -eq 0 ]]; then
2016-02-26 02:41:51 +01:00
echo "/$dosya" >> /tmp/$paket.sil
#guvenlik amacli simdilik kapali
#rm -r -f /$dosya
2016-02-24 01:27:23 +01:00
fi
done < /var/lib/pkg/DB/"$paket"/files
2016-02-26 02:41:51 +01:00
while true; do
read -p "$1 paketi kaldırılsın mı?" eh
case $eh in
[Ee]* ) sil_onay="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
if [ "$sil_onay" = "e" ];then
xargs rm -r -f < /tmp/$paket.sil &&
rm -r -f /var/lib/pkg/DB/"$paket" &&
echo $paket" paketi silindi."
fi
2016-02-26 03:41:17 +01:00
rm -f /tmp/$paket.sil
2016-02-24 01:27:23 +01:00
else
echo "paket zaten kurulu değil!"
fi
else
echo "kritik mesaj:$dokunulmaz dosyası yok."
#tamirat
cp /root/ayarlar/dokunulmaz /etc/
echo "dokunulmazlık tamiri yapıldı.,komutu yineleyiniz."
fi
}
paket_bilgi(){
local paket kkont
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
paket="$1"
cat /var/lib/pkg/DB/"$paket"/META
else
echo "paket kurulu değil!"
fi
}
derleme_listyap(){
2016-03-02 01:26:35 +01:00
bagimlist=`bagimlilar "$1"`
2016-02-24 01:27:23 +01:00
for bagim in $bagimlist;do
if [ "`cat derleme.liste | grep $bagim`" != "$bagim" ];then
derleme_listyap "$bagim"
fi
done
#if [ "`cat derleme.liste | grep $1`" != "$1" ];then
# echo "derleme.liste yazılıyor:" "$1"
# echo "$1" >> derleme.liste
#fi
if ! grep -Fxq "$1" derleme.liste
then
# echo "pas"
#else
2016-02-28 00:55:08 +01:00
ana="`find $talimatname_dizin -name $1`"
echo ${ana#"$talimatname_dizin"}
#sadece genel bagimliliklar derlenecek
2016-02-24 01:27:23 +01:00
echo "$1" >> derleme.liste
2016-02-28 00:55:08 +01:00
if [ -d "$talimatname_dizin/genel/$1" ];then
echo "$1" >> genel.derleme.liste
fi
2016-02-24 01:27:23 +01:00
fi
}
2016-03-02 01:26:35 +01:00
derleme_listbilgi(){
echo "yapim asamasında"
}
2016-02-24 01:27:23 +01:00
paket_derle_oto(){
2016-02-28 00:55:08 +01:00
for dpkt in `cat $1`;do
2016-02-24 01:27:23 +01:00
echo $dpkt "derleniyor...."
paket_derle $dpkt
done
}
2016-03-02 01:26:35 +01:00
paket_kur_oto(){
local kpkt pkt
for kpkt in `cat $1`;do
for pkt in `ls $kpkt* | cut -d'#' -f1`;do
mps -k "$pkt#"*
done
done
}
2016-02-24 01:27:23 +01:00
paket_derle(){
local konum derleme_onay eh bagimd
derleme_onay="h"
konum="`find "$talimatname_dizin" -name $1`"
if [ -d "$konum" ];then
mkdir -p tmp."$1"
cp -a $konum/* tmp."$1"/
cd tmp."$1"
if [ `kurulu_kontrol "$1"` = "kurulu" ];then
while true; do
read -p "$1 paketi zaten kurulu yine de derlensin mi?" eh
case $eh in
[Ee]* ) derleme_onay="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
else
derleme_onay="e"
fi
if [ "$derleme_onay" = "e" ];then
echo "$1" "derleniyor...."
#mpsd -d > /dev/null
2016-02-28 00:55:08 +01:00
#mpsd -d
echo "------------------------"
mpsd -d 2>&1|tee /tmp/"$1".log
if ( grep "^=======>" /tmp/"$1".log| tail -1 |grep "ERROR" > /dev/null);then
echo "derleme sisteminde hata oluştu -----> " /tmp/"$1".log
exit 1
fi
2016-02-24 01:27:23 +01:00
if [ "$kurulum_onay" = "evet" ];then
for kpkt in `ls $1* | cut -d'#' -f1`;do
mps -k "$kpkt#"*
done
fi
mv *.mps.lz ../
fi
cd ..
rm -r tmp."$1"
else
echo "talimat dosyası bulunamadı."
fi
}
2016-03-02 01:26:35 +01:00
bagimlilar(){
2016-02-24 01:27:23 +01:00
local bagimd konum
konum="`find "$talimatname_dizin" -name $1`"
2016-03-02 16:12:51 +01:00
bagimd=`cat $konum/talimat | grep "Depends on" | cut -d':' -f2`
2016-03-02 01:26:35 +01:00
if [ -n "$bagimd" ]; then
bagimd=`echo "$bagimd" | sed 's/,/ /g'`
#sıralı gösterme
echo `echo "$bagimd" | sed 's/,/ /g'`
fi
}
bagimli_bilgi(){
local bagimd konum bag
konum="`find "$talimatname_dizin" -name $1`"
bagimd=`cat $konum/talimat | grep "Depends" | cut -d':' -f2`
if [ -n "$bagimd" ]; then
bagimd=`echo "$bagimd" | sed 's/,/ /g'`
#sıralı gösterme
#echo `echo "$bagimd" | sed 's/,/ /g'`
#kurulu kontrollu gosterim
for bag in $bagimd;do
echo $bag "`kurulu_kontrol $bag`"
done
fi
echo "$1" "`kurulu_kontrol $1`"
2016-02-24 01:27:23 +01:00
}
kurulu_kontrol(){
if [ -d "/var/lib/pkg/DB/$1" ];then
echo "kurulu"
exit 1
fi
echo "degil"
}
paketvt_guncelle(){
wget -q --spider "$sunucu""paket.vt"
#if wget -P /tmp -q "$sunucu""paket.vt" > /dev/null; then
if [ $? -eq 0 ]; then
echo "paket veritabanı guncellenıyor." "$paketdepo""paket.vt"
if [ -f "$paketdepo""paket.vt" ];then
mv "$paketdepo""paket.vt" "$paketdepo""paket.vt.eski"
fi
wget -P "$paketdepo" "$sunucu""paket.vt"
#rm /tmp/paket.vt*
exit 1
fi
echo "paket veritabanı guncelleme olumsuz."
}
sistem_kontrol(){
paketvt_kontrol
sunucu_kontrol
}
sunucu_kontrol(){
wget -q --spider $sunucu
if [ $? -eq 0 ]; then
echo "paket sunucu aktif"
else
echo "sunucu erişim dışı"
exit 1
fi
}
paketvt_kontrol(){
mkdir -p /depo/paketler
if [ ! -f /depo/paketler/paket.vt ];then
touch /depo/paketler/paket.vt
fi
}
yardim(){
echo "yardim"
}
ayarlar() {
while [ "$1" ]; do
case $1 in
-i|--indir)
ikaynak="ag"
kurulum_onay="olumsuz";;
-ik|--inku)
ikaynak="ag" ;;
-k|--yrku)
ikaynak="yerel" ;;
-s|--pksl)
paket_sil "$2" ;;
-d|--pkde)
kurulum_onay="olumsuz"
paket_derle "$2" ;;
-dk|--pkdk)
paket_derle "$2" ;;
-odk|--pkodk)
paket_derle_oto "$2" ;;
2016-03-02 01:26:35 +01:00
-ok|--pkok)
paket_kur_oto "$2" ;;
2016-02-24 01:27:23 +01:00
-dly|--drly)
2016-02-28 00:55:08 +01:00
if [ -f derleme.liste ];then
mv derleme.liste derleme.liste.eski
fi
if [ -f genel.derleme.liste ];then
mv genel.derleme.liste genel.derleme.liste.eski
fi
2016-02-24 01:27:23 +01:00
touch derleme.liste
2016-02-28 00:55:08 +01:00
touch genel.derleme.liste
2016-02-24 01:27:23 +01:00
derleme_listyap "$2" ;;
2016-03-02 01:26:35 +01:00
-dlb|--drlb)
derleme_listbilgi "$2" | column -t;;
2016-02-24 01:27:23 +01:00
-b|--pkbl)
paket_bilgi "$2" ;;
-bb|--pkbb)
2016-03-02 01:26:35 +01:00
bagimli_bilgi "$2" | column -t;;
2016-02-24 01:27:23 +01:00
-G|--pvtg)
paketvt_guncelle ;;
-g|--pkgu)
if [ ! "$2" ]; then
echo "paket ismi eksik"
exit 1
fi
paket_guncelle "$2";;
-kuko|--kurulu-kontrol)
if [ ! "$2" ]; then
echo "paket ismi eksik"
exit 1
fi
kurulu_kontrol "$2";;
-suko)
sunucu_kontrol ;;
-cf|--config-file)
if [ ! "$2" ]; then
echo "ayardosyası gerek $1"
exit 1
fi
ayar_dosyasi="$2"
shift ;;
-v)
echo "$betikad $versiyon"
exit 0 ;;
-h|--help)
yardim
exit 0 ;;
esac
shift
done
}
ana(){
ayarlar "$@"
if [ "$ikaynak" = "ag" ]; then
echo "agdan cekiliyor:" "$2"
#pkt=`cat "$paketdepo""paket.vt" | grep -w "$2" | cut -d' ' -f2`
pkt=`cat "$paketdepo""paket.vt" | grep "$2"# | cut -d' ' -f2`
if [ ! -z "$pkt" -a "$pkt" != "" ]; then
cpaket="${pkt/'#'/'%23'}"
#paket sunucuda varsa
wget -q --spider "$sunucu$cpaket"
#if wget -P /tmp -q "$sunucu$cpaket" > /dev/null; then
if [ $? -eq 0 ]; then
wget -nc -P "$paketdepo" "$sunucu$cpaket"
#mv /tmp/$pkt "$paketdepo"
if [ "$kurulum_onay" = "evet" ];then
kkont=`kurulu_kontrol "$2"`
if [ "$kkont" = "degil" ];then
icerik_ekle "$paketdepo$pkt"
exit 1
else
echo "paket zaten kurulu!"
fi
fi
fi
fi
exit 1
fi
if [ "$ikaynak" = "yerel" ]; then
2016-02-28 00:55:08 +01:00
local silme
2016-02-24 01:27:23 +01:00
pkontrol=`basename $2 | grep -w "mps.lz"`
if [ ! -z "$pkontrol" -a "$pkontrol" != "" ]; then
paketad=`echo "$2" | cut -d'#' -f1`
kkont=`kurulu_kontrol "$paketad"`
if [ "$kkont" = "degil" ];then
icerik_ekle "$2"
else
2016-02-28 00:55:08 +01:00
while true; do
read -p "$2 paketi zaten kurulu silinip kurulsun mu?" eh
case $eh in
[Ee]* ) silme="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
if [ "$silme" = "e" ];then
paket_sil "$paketad"
icerik_ekle "$2"
fi
2016-02-24 01:27:23 +01:00
fi
else
echo "yerelde mps paketi bulunamadı."
fi
fi
}
ana "$@"