493 lines
11 KiB
Bash
Executable File
493 lines
11 KiB
Bash
Executable File
#!/bin/bash
|
||
. /etc/mpsd.conf
|
||
. /root/bin/fonks.sh
|
||
versiyon="0.1"
|
||
paketdepo="/depo/paketler/"
|
||
sunucu="192.168.3.193:8000/paketdepo/"
|
||
git_sunucu="https://github.com/milisarge/malfs-milis"
|
||
ikaynak=""
|
||
betikad=${0##*/}
|
||
kurulum_onay="evet"
|
||
dokunulmaz="/etc/dokunulmaz"
|
||
talimatname_dizin="/root/talimatname"
|
||
kokdizin="/"
|
||
|
||
icerik_ekle(){
|
||
paketad=`echo "$1" | cut -d'#' -f1`
|
||
paketad=`basename $paketad`
|
||
ryaz 34 $paketad" paketi kuruluyor."
|
||
tar -C /tmp --extract --file=$1 .PRE 1 2> /tmp/$paketad_pre.log
|
||
#kos-kur kontrolu
|
||
if [ -f /tmp/.PRE ];then
|
||
bash /tmp/.PRE
|
||
rm /tmp/.PRE
|
||
fi
|
||
mkdir -p tmpk.$paketad
|
||
tar xf $1 -C tmpk.$paketad &&
|
||
mkdir -p /var/lib/pkg/DB/"$paketad" &&
|
||
cp -avf tmpk.$paketad/* $kokdizin > tmpk.$paketad/kurulan &&
|
||
cat tmpk.$paketad/kurulan | cut -d '>' -f2 > /var/lib/pkg/DB/"$paketad"/kurulan
|
||
#mv tmpk.$paketad/.MTREE /var/lib/pkg/DB/"$paketad"/files &&
|
||
mv tmpk.$paketad/.META /var/lib/pkg/DB/"$paketad"/META &&
|
||
|
||
#kur-kos calistirilmasi
|
||
if [ -f tmpk.$paketad/.POST ];then
|
||
bash tmpk.$paketad/.POST
|
||
rm tmpk.$paketad/.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
|
||
rm -r tmpk.$paketad
|
||
if [ -f /etc/ld.so.conf ];then
|
||
ldconfig
|
||
fi
|
||
ryaz 34 $paketad" paketi kuruldu."
|
||
}
|
||
|
||
paket_sil(){
|
||
local paket kkont sil_onay
|
||
if [ -f $dokunulmaz ];then
|
||
kkont=`kurulu_kontrol "$1"`
|
||
if [ "$kkont" = "kurulu" ];then
|
||
paket="$1"
|
||
ryaz 34 $paket" paketi siliniyor."
|
||
#while IFS='' read -r line || [[ -n "$line" ]]; do
|
||
while read -r dosya
|
||
do
|
||
touch /tmp/$paket.sil
|
||
if [[ $(grep -c $dosya $dokunulmaz) -eq 0 ]]; then
|
||
echo "/$dosya" >> /tmp/$paket.sil
|
||
#guvenlik amacli simdilik kapali
|
||
#rm -r -f /$dosya
|
||
fi
|
||
done < /var/lib/pkg/DB/"$paket"/files
|
||
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" &&
|
||
ryaz 34 $paket" paketi silindi."
|
||
fi
|
||
rm -f /tmp/$paket.sil
|
||
else
|
||
ryaz 31 "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_silyeni(){
|
||
local paket kkont sil_onay
|
||
paket="$1"
|
||
if [ -f "/var/lib/pkg/DB/$paket/kurulan" ];then
|
||
kkont=`kurulu_kontrol "$1"`
|
||
if [ "$kkont" = "kurulu" ];then
|
||
#
|
||
#while IFS='' read -r line || [[ -n "$line" ]]; do
|
||
|
||
cat /var/lib/pkg/DB/$paket/kurulan | cut -d '>' -f2 > /tmp/$paket.sil
|
||
|
||
while true; do
|
||
ryaz 34 $paket" $1 paketi kaldırılsın mı?";read -p "e veya h-> " 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" &&
|
||
ryaz 34 $paket" paketi silindi."
|
||
fi
|
||
rm -f /tmp/$paket.sil
|
||
else
|
||
ryaz 31 "paket zaten kurulu değil!"
|
||
fi
|
||
else
|
||
echo "kritik mesaj:kurulanlar dosyası yok."
|
||
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(){
|
||
bagimlist=`bagimlilar "$1"`
|
||
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
|
||
ana="`find $talimatname_dizin -name $1`"
|
||
echo ${ana#"$talimatname_dizin"}
|
||
#sadece genel bagimliliklar derlenecek
|
||
echo "$1" >> derleme.liste
|
||
if [ -d "$talimatname_dizin/genel/$1" ];then
|
||
echo "$1" >> genel.derleme.liste
|
||
fi
|
||
fi
|
||
}
|
||
|
||
derleme_listbilgi(){
|
||
ryaz 34 "yapim asamasında"
|
||
}
|
||
|
||
paket_derle_oto(){
|
||
for dpkt in `cat $1`;do
|
||
echo $dpkt "derleniyor...."
|
||
paket_derle $dpkt
|
||
done
|
||
}
|
||
#otomatik derle kontrollu kur
|
||
paket_derle_oto2(){
|
||
mps -dly "$1" > /dev/null && mps -odk genel.derleme.liste
|
||
}
|
||
|
||
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
|
||
}
|
||
|
||
paket_derle(){
|
||
kaynakdizin_kontrol
|
||
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" ] && [ "$zorla_derle" = "yok" ];then
|
||
#versiyon kontrolunde acılacak
|
||
#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
|
||
derleme_onay="h"
|
||
else
|
||
derleme_onay="e"
|
||
fi
|
||
if [ "$derleme_onay" = "e" ];then
|
||
echo "$1" "derleniyor...."
|
||
#mpsd -d > /dev/null
|
||
#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
|
||
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
|
||
|
||
}
|
||
|
||
|
||
bagimlilar(){
|
||
local bagimd konum
|
||
konum="`find "$talimatname_dizin" -name $1`"
|
||
bagimd=`cat $konum/talimat | grep "Depends on" | cut -d':' -f2`
|
||
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`"
|
||
}
|
||
|
||
kurulu_kontrol(){
|
||
if [ -d "/var/lib/pkg/DB/$1" ];then
|
||
echo "kurulu"
|
||
exit 1
|
||
fi
|
||
echo "degil"
|
||
}
|
||
|
||
kaynakdizin_kontrol(){
|
||
if [ ! -d $DERLEME_KAYNAKDIZIN ];then
|
||
mkdir $DERLEME_KAYNAKDIZIN
|
||
fi
|
||
}
|
||
|
||
git_guncelle() {
|
||
kaynakdizin_kontrol
|
||
cd $DERLEME_KAYNAKDIZIN
|
||
#git sunucudan guncelleme
|
||
ryaz 33 "git sunucudan güncelleme çekiliyor."
|
||
if [ ! -d milis.git ];then
|
||
git clone $git_sunucu milis.git
|
||
else
|
||
cd milis.git
|
||
git pull
|
||
fi
|
||
ryaz 33 "yerele eşitleniyor."
|
||
rsync -a $DERLEME_KAYNAKDIZIN/milis.git/talimatname/ $talimatname_dizin
|
||
}
|
||
|
||
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."
|
||
}
|
||
|
||
talimat_bilgi(){
|
||
local konum HEAD
|
||
konum="`find "$talimatname_dizin" -name $1`"
|
||
HEAD=`grep -B 12 "build()" $konum/talimat`
|
||
echo $HEAD
|
||
}
|
||
|
||
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" ;;
|
||
-si|--pksil)
|
||
paket_silyeni "$2" ;;
|
||
-d|--pkde)
|
||
kurulum_onay="olumsuz"
|
||
paket_derle "$2" ;;
|
||
-zd|--pkzde)
|
||
zorla_derle="evet"
|
||
kurulum_onay="olumsuz"
|
||
paket_derle "$2" ;;
|
||
-dk|--pkdk)
|
||
paket_derle "$2" ;;
|
||
-odk|--pkodk)
|
||
paket_derle_oto "$2" ;;
|
||
-odkk|--pkodk2)
|
||
paket_derle_oto2 "$2" ;;
|
||
-ok|--pkok)
|
||
paket_kur_oto "$2" ;;
|
||
-dly|--drly)
|
||
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
|
||
touch derleme.liste
|
||
touch genel.derleme.liste
|
||
derleme_listyap "$2" ;;
|
||
-dlb|--drlb)
|
||
derleme_listbilgi "$2";;
|
||
-b|--pkbl)
|
||
paket_bilgi "$2" ;;
|
||
-bb|--pkbb)
|
||
bagimli_bilgi "$2" | column -t;;
|
||
-tb|--talb)
|
||
talimat_bilgi "$2" | column -t;;
|
||
-Ggit|--gitgun)
|
||
git_guncelle ;;
|
||
-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
|
||
local silme
|
||
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
|
||
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_silyeni "$paketad"
|
||
icerik_ekle "$2"
|
||
fi
|
||
fi
|
||
else
|
||
echo "yerelde mps paketi bulunamadı."
|
||
fi
|
||
fi
|
||
|
||
}
|
||
ana "$@"
|
||
|