milis/bin/mps

1407 lines
30 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
. /etc/mpsd.conf
if [ -f /etc/mps.conf ];then
. /etc/mps.conf
fi
. /root/bin/fonks.sh
versiyon="0.9.1"
iletisim="milisarge@gmail.com"
paketdepo="/depo/paketler/"
if [ -z ${sunucu+:} ]; then
sunucu="127.0.0.1:8000/"
fi
#sunucu="http://milis.gungre.ch/packages/"
git_sunucu="https://github.com/milisarge/malfs-milis"
ikaynak=""
betikad=${0##*/}
kurulum_onay="evet"
talimatname_dizin="/root/talimatname"
kokdizin="/"
VT="/var/lib/pkg/DB"
TARIHCE_DIZIN="/var/lib/pkg/tarihce"
LOGDIZIN="/var/log/mps"
tekrarkur="hayir"
logdosya=/var/log/mps/mps.log
#temel paket koruma
tpk="evet"
if [ -z ${lokal+:} ]; then
lokal="tr"
fi
if [ -z ${docsil+:} ]; then
docsil="evet"
fi
if [ -z ${yerelsil+:} ]; then
yerelsil="evet"
fi
icerik_ekle(){
paketad=`echo "$1" | cut -d'#' -f1`
paketad=`basename $paketad`
ryaz 34 $paketad" paketi kuruluyor-> $kokdizin"
tar -C /tmp --extract --file=$1 .PRE 1 2> /tmp/$paketad_pre.log
#kos-kur kontrolu
if [ -f /tmp/.PRE ];then
if [ "$kokdizin" == "/" ];then
bash /tmp/.PRE
else
cp /tmp/.PRE $kokdizin/tmp/$paketad.PRE
fi
rm /tmp/.PRE
fi
mkdir -p kur.$paketad &&
tar xf $1 -C kur.$paketad &&
#istenmeyen yerellerin silinmesi
if [ -d kur.$paketad/usr/share/locale ] && [ "$yerelsil" == "evet" ];then
for lkl in `ls kur.$paketad/usr/share/locale/`;do
if [ "$lkl" != "$lokal" ];then rm -r kur.$paketad/usr/share/locale/$lkl; fi
done
fi
#doc dizini silinmesi
if [ -d kur.$paketad/usr/share/doc ] && [ "$docsil" == "evet" ];then
rm -r kur.$paketad/usr/share/doc
fi
mkdir -p $kokdizin/var/lib/pkg/DB/"$paketad" &&
cp -v -afr kur.$paketad/* $kokdizin > kur.$paketad/kurulan
cp kur.$paketad/kurulan /tmp/ &&cat kur.$paketad/kurulan | cut -d '>' -f2 > $kokdizin/var/lib/pkg/DB/"$paketad"/kurulan &&
#mv kur.$paketad/.MTREE /var/lib/pkg/DB/"$paketad"/files &&
mv kur.$paketad/.META $kokdizin/var/lib/pkg/DB/"$paketad"/META &&
#kur-kos calistirilmasi
if [ -f kur.$paketad/.POST ];then
if [ "$kokdizin" == "/" ];then
bash kur.$paketad/.POST
else
cp kur.$paketad/.POST $kokdizin/tmp/$paketad.POST
fi
rm kur.$paketad/.POST
fi
rm -r kur.$paketad
if [ -f $kokdizin/etc/ld.so.conf ];then
ldconfig -r $kokdizin
fi
ryaz 34 $paketad" paketi kuruldu."
loglama "$paketad paketi kuruldu."
}
paket_sil(){
local paket kkont sil_onay oto_silme
paket="$1"
if [ "$2" ]; then
oto_silme="$2"
fi
if [ "$tpk" = "evet" ] && [ -d "$talimatname_dizin/temel/$1" ];then
ryaz 31 "$1 temel sistem paketidir.Silinemez!!!"
else
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
if [ -f "/var/lib/pkg/DB/$paket/kurulan" ];then
#dizin koruma
kurban_kurtar $1
cat /var/lib/pkg/DB/$paket/kurulan | cut -d '>' -f2 > /tmp/$paket.sil
ryaz 31 "ters bagimliliklar"
ryaz 31 "------------------"
ters_bagimli_kontrol "$paket"
ryaz 31 "------------------"
ryaz 31 "kurban dosyalar"
ryaz 31 "------------------"
silme_kurban_kontrol /tmp/$paket.sil
ryaz 31 "------------------"
if [ "$oto_silme" = "evet" ];then
sil_onay="e"
else
while true; do
ryaz 34 $paket" 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
fi
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."
loglama "$paket paketi silindi."
rm -f /tmp/$paket.sil
else
rm -f /tmp/$paket.sil
fi
else
ryaz 31 "kritik mesaj:kurulanlar dosyası yok."
fi
else
ryaz 32 "paket zaten kurulu değil!"
fi
fi
}
paket_ara(){
paket="$1"
for pkt in `cat /depo/paketler/paket.vt | grep $paket | awk '{print $1}'`; do
pakdesc=$(find /root/talimatname -name "$pkt" | xargs -I % sed -n '1{p;q}' %/talimat | sed s'/# Description: //g');
ryaz 34 "$pkt - $pakdesc";
done
}
kelime_bul(){
grep --color -H -ri "$1" /root/talimatname/
}
paket_bilgi2(){
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
}
paket_bilgi(){
local paket kkont
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
paket="$1"
satir=`sed -n '1p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "AD:" ${satir:1:${#satir}-1}
satir=`sed -n '2p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "TN:" ${satir:1:${#satir}-1}
satir=`sed -n '3p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "UR:" ${satir:1:${#satir}-1}
satir=`sed -n '4p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "YP:" ${satir:1:${#satir}-1}
satir=`sed -n '5p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "PK:" ${satir:1:${#satir}-1}
satir=`sed -n '6p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "--:" ${satir:1:${#satir}-1}
satir=`sed -n '7p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "VS:" ${satir:1:${#satir}-1}
satir=`sed -n '8p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "RL:" ${satir:1:${#satir}-1}
satir=`sed -n '9p' < /var/lib/pkg/DB/"$paket"/META`
ryaz 32 "DZ:" `date -d @${satir:1:${#satir}-1}`
else
echo "paket kurulu değil!"
fi
}
yeniden_paketle(){
cd $1
bsdtar -r -f ../"$1".mps .META
bsdtar -r -f ../"$1".mps *
cd ..
lzip -9 "$1".mps
}
derleme_listyap(){
bagimlist=`bagimlilar "$1"`
if [ "$bagimlist" != "talimatyok" ];then
for bagim in $bagimlist;do
if [ "`cat tumbag.liste | grep $bagim`" != "$bagim" ];then
derleme_listyap "$bagim"
fi
done
if ! grep -Fxq "$1" tumbag.liste
then
ana="`find $talimatname_dizin -name $1`"
echo ${ana#"$talimatname_dizin"}
#sadece genel bagimliliklar derlenecek
echo "$1" >> tumbag.liste
if [ -d "$talimatname_dizin/genel/$1" ];then
echo "$1" >> bag.liste
fi
fi
else
ryaz 31 "$1 talimatı bulunamadı."
exit 1
fi
}
derleme_listbilgi(){
ryaz 34 "yapim asamasında"
}
paket_derle_liste(){
for dpkt in `cat $1`;do
echo $dpkt "derleniyor...."
zorla_derle="yok"
paket_derle $dpkt
done
}
#otomatik derle kontrollu kur
paket_derle_kur(){
tekrarkur="hayir"
mps -dly "$1" && mps -derlist bag.liste
}
oto_derle_kur_paketle(){
mps -G
mps -kur $1 &&
if [ -f "$talimatname_dizin/genel/$1/$1.sira" ];then
ryaz 32 "sıralı derleme yapılacak."
mps -derlist "$talimatname_dizin/genel/$1/$1.sira"
else
mps -derle $1
fi
}
paket_kur_oto(){
local kpkt pkt pak kliste
if [ "$1" = "-H" ];then
ls *.mps.lz > "otokur.list"
kliste="otokur.list"
else
kliste="$1"
fi
for kpkt in `cat $kliste`;do
for pkt in `ls $kpkt* | cut -d'#' -f1`;do
pak=`ls "$pkt#"*`
mps -k "$pak" && mps -kur "$pkt"
done
done
rm -rf otokur.list
}
paket_kur_oto_zorla(){
local kpkt pkt pak kliste
if [ "$1" = "-H" ];then
ls *.mps.lz > "otokur.list"
kliste="otokur.list"
else
kliste="$1"
fi
for kpkt in `cat $kliste`;do
for pkt in `ls $kpkt* | cut -d'#' -f1`;do
pak=`ls "$pkt#"*`
paket_sil "$pkt" "evet"
mps -k "$pak" && mps -kur "$pkt"
done
done
rm -rf otokur.list
}
paket_kur_liste(){
local kpkt pkt pak
for kpkt in `cat $1`;do
for pkt in `ls $kpkt* | cut -d'#' -f1`;do
pak=`ls "$pkt#"*`
mps -k "$pak"
done
done
}
paket_kur_liste_zorla(){
local kpkt pkt pak
for kpkt in `cat $1`;do
for pkt in `ls $kpkt* | cut -d'#' -f1`;do
pak=`ls "$pkt#"*`
paket_sil "$kpkt" "evet"
mps -k "$pak"
done
done
}
#otomatik kontrollu kur
paket_kur_oto2(){
mps -dly "$1" > /dev/null && mps -ok bag.liste
}
paket_inkur_liste_direk(){
local kpkt
for kpkt in `cat $1`;do
mps -ik "$kpkt"
done
}
paket_inkur_liste(){
local kpkt
for kpkt in `cat $1`;do
mps -kur "$kpkt"
done
}
#otomatik kontrollu kur
paket_inkur_oto(){
mps -dly "$1" | grep "bulunamadı"
#derleme_listyap "$1" > mps.log &&
local kpkt
for kpkt in `cat bag.liste`;do
mps -ik "$kpkt"
done
rm -rf *.liste *.eski
}
paket_sil_oto(){
local spkt
for spkt in `cat $1`;do
oto_silme="evet"
paket_sil "$spkt" "$oto_silme"
done
}
paket_sil_oto_onayli(){
local spkt
cat $1
for spkt in `cat $1`;do
paket_sil "$spkt"
done
}
paket_guncelle(){
surum_kontrol $1
devir_kontrol $1
}
paket_guncelle_oto(){
mps -dly "$1" > /dev/null &&
local kpkt
for kpkt in `cat bag.liste`;do
mps -g "$kpkt"
done
rm bag.liste tumbag.liste
}
sistem_guncelle(){
local kpkt
mps -GG
mps -G
for kpkt in `mps -kl`;do
paket_guncelle "$kpkt"
done
}
surum_kontrol(){
local ksurum version pkt dusuk yuksek durum
durum="belirsiz"
satir=`sed -n '7p' < /var/lib/pkg/DB/"$1"/META`
ksurum=${satir:1:${#satir}-1}
pkt="`find $talimatname_dizin -name $1`"
source $pkt/talimat
dusuk=`echo -e "$ksurum\n$version" | sort -V | head -n1`
if [ "$ksurum" = "$version" ];then
durum="guncel"
ryaz 33 "$1 sürümü güncel"
else
if [ "$ksurum" = "$dusuk" ];then
durum="yukselt"
else
durum="dusur"
fi
gun_onay="h"
if [ "$durum" <> "guncel" ];then
while true; do
ryaz 34 "$1 sürüm $durum""me işlemi uygulanacak. $ksurum <> $version ";read -p "e veya h-> " eh
case $eh in
[Ee]* ) gun_onay="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
if [ "$gun_onay" = "e" ];then
paket_sil "$1" "evet"
mps -ik $1
ryaz 33 "$1 sürüm güncellemesi yapıldı"
else
ryaz 31 "$1 sürüm güncellemesi yapılmadı"
fi
fi
fi
}
devir_kontrol(){
local kdevir release pkt dusuk yuksek durum gun_onay
durum="belirsiz"
satir=`sed -n '8p' < /var/lib/pkg/DB/"$1"/META`
kdevir=${satir:1:${#satir}-1}
pkt="`find $talimatname_dizin -name $1`"
source $pkt/talimat
dusuk=`echo -e "$kdevir\n$release" | sort -V | head -n1`
if [ "$kdevir" = "$release" ];then
durum="guncel"
ryaz 33 "$1 deviri güncel"
else
if [ "$kdevir" = "$dusuk" ];then
durum="yukselt"
else
durum="dusur"
fi
gun_onay="h"
if [ "$durum" <> "guncel" ];then
while true; do
ryaz 34 "$1 devir $durum""me işlemi uygulanacak. $kdevir <> $release ";read -p "e veya h-> " eh
case $eh in
[Ee]* ) gun_onay="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
if [ "$gun_onay" = "e" ];then
paket_sil "$1" "evet"
mps -ik $1
ryaz 33 "$1 devir güncellemesi yapıldı"
else
ryaz 31 "$1 devir güncellemesi yapılmadı"
fi
fi
fi
}
paket_derle(){
#eski derleme kalıntılarını temizle
if [ -d tmp.* ];then
rm -r tmp.*
fi
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
derleme_onay="h"
else
echo "-----"
derleme_onay="e"
fi
if [ "$derleme_onay" = "e" ];then
ryaz 33 "$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 ../
else
ryaz 32 "paket zaten kurulu,yine de derlemek için:
mps -zd $1"
fi
cd ..
rm -r tmp."$1"
else
ryaz 31 "talimat dosyası bulunamadı."
fi
}
bagimlilar(){
local bagimd konum
konum="`find "$talimatname_dizin" -name $1`"
if [ -f "$konum/talimat" ];then
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
else
echo "talimatyok"
exit 1
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`"
}
bagimli_bilgi_dosyala(){
rm -f "$1.gerekler.liste"
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 >> "$1.gerekler.liste"
done
fi
echo "$1" >> "$1.gerekler.liste"
}
ters_bagimli(){
local ara
ara=" $1 "
sy=`grep -o "/" <<<"$talimatname_dizin" | wc -l`
grep -rli "$ara" "$talimatname_dizin" | cut -d'/' -f`expr $sy + 3`
}
silme_kurban_kontrol(){
local dizin
for f in $(cat $1) ; do
dizin="${f%\'}"
dizin="${dizin#\'}"
if [ -d "$dizin" ];then
for g in `ls "$dizin"` ; do
if ! grep -Fxq " '$dizin/$g'" "$1"
then
echo "$dizin/$g"
fi
done
fi
done
}
log_analiz(){
local zaman durum
zaman=$1
durum=$2
if [ -f "/var/log/mps/mps.log" ];then
cat $logdosya | grep "$zaman" | grep "$durum" | cut -d' ' -f3
else
ryaz 31 "mps.log bulunamadı!"
fi
}
kurban_kurtar(){
local dizin paket
paket=$1
if [ -f /var/lib/pkg/DB/$paket/kurulan ];then
cat /var/lib/pkg/DB/$paket/kurulan | cut -d '>' -f2 > /tmp/$paket.sil
for f in $(cat /tmp/$paket.sil) ; do
dizin="${f%\'}"
dizin="${dizin#\'}"
if [ -d "$dizin" ];then
for g in `ls "$dizin"` ; do
if ! grep -Fxq " '$dizin/$g'" "/tmp/$paket.sil"
then
if [ -f /tmp/$paket.kurtar ];then
rm /tmp/$paket.kurtar
fi
echo " '$dizin'" >> "/tmp/$paket.kurtar"
fi
done
fi
done
if [ -f /tmp/$paket.kurtar ];then
mv /var/lib/pkg/DB/$paket/kurulan /var/lib/pkg/DB/$paket/ilk.kurulan
grep -v -F -x -f "/tmp/$paket.kurtar" "/tmp/$paket.sil" > /var/lib/pkg/DB/$paket/kurulan
ryaz 32 "$paket kurban dosyaları kurtarıldı."
else
ryaz 32 "$paket kurban dosyası yok."
fi
rm -f /tmp/$paket.sil
else
ryaz 31 "kurulan paket yok!"
fi
}
ters_bagimli_kontrol(){
ters_bagimli "$1" | sort > tersb.liste
ls /var/lib/pkg/DB/ | sed "/$1/d" | sort > simdiki.liste
comm -12 tersb.liste simdiki.liste
rm tersb.liste simdiki.liste
}
kurulu_kontrol(){
if [ -d "$kokdizin/var/lib/pkg/DB/$1" ];then
echo "kurulu"
exit 1
fi
echo "degil"
}
sistem_kur(){
local spaket
for spaket in `cat $1`;do
./$betikad -ik "$spaket" -kok $2;
done
}
kaynakdizin_kontrol(){
if [ ! -d $DERLEME_KAYNAKDIZIN ];then
mkdir $DERLEME_KAYNAKDIZIN
fi
}
logdizin_kontrol(){
if [ ! -d $kokdizin$LOGDIZIN ];then
mkdir $kokdizin$LOGDIZIN
fi
if [ ! -d $kokdizin$LOGDIZIN/derleme ];then
mkdir $kokdizin$LOGDIZIN/derleme
fi
if [ ! -f $kokdizin$LOGDIZIN/mps.log ];then
touch $kokdizin$LOGDIZIN/mps.log
fi
}
tarihce_dkontrol(){
if [ ! -d $TARIHCE_DIZIN ];then
mkdir $TARIHCE_DIZIN
fi
}
temel_tarihce_kontrol(){
if [ ! -f $TARIHCE_DIZIN/temel-pkvt.tar.lz ];then
tarihce_olustur "temel"
fi
}
tarihce_liste(){
tarihce_dkontrol
ls $TARIHCE_DIZIN/
}
tarihce_yap(){
tarihce_dkontrol
local t_isim
if [ "$temel_tarihce" = "evet" ];then
t_isim="temel"
else
t_isim=`date +%m-%d-%y.%H%M%S`
fi
tarihce_olustur "$t_isim"
}
tarihce_olustur(){
bsdtar -P -r -f $TARIHCE_DIZIN/"$1"-pkvt.tar $VT
lzip -9 $TARIHCE_DIZIN/"$1"-pkvt.tar
}
tarihce_yukle(){
tarihce_dkontrol
local islem_onay cikis
sil_onay="h"
if [ -f $TARIHCE_DIZIN/"$1-pkvt.tar.lz" ];then
bsdtar -p -o -C /tmp -xf $TARIHCE_DIZIN/"$1-pkvt.tar.lz" 2>/dev/null
ls /tmp/var/lib/pkg/DB/ > hedef.pkvt
ls /var/lib/pkg/DB/ > simdiki.pkvt
grep -v -F -x -f hedef.pkvt simdiki.pkvt > sil.liste
grep -v -F -x -f simdiki.pkvt hedef.pkvt > kur.liste
#rm hedef.pkvt simdiki.pkvt
rm -r /tmp/var
cikis=""
if [ -s sil.liste ];then
ryaz 32 "silinecekler"
ryaz 32 "------------"
cat sil.liste
fi
if [ -s kur.liste ];then
ryaz 32 "kurulacaklar"
ryaz 32 "------------"
cat kur.liste
fi
if [ ! -s sil.liste ] && [ ! -s kur.liste ];then
ryaz 32 "sistem zaten hedef durumda!"
exit 1
fi
while true; do
ryaz 34 "otomatik geri dönüşüm başlasın mı?";read -p "e veya h-> " eh
case $eh in
[Ee]* ) islem_onay="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
if [ "$islem_onay" = "e" ];then
mps -os sil.liste
mps -kurul kur.liste
mv sil.liste silinenler.liste
mv kur.liste kurulanlar.liste
exit 1
fi
mv sil.liste sil_iptal.liste
mv kur.liste kur_iptal.liste
else
ryaz 31 "ilgili tarihce dosyası bulunamadı!"
fi
}
tarihce_sil(){
tarihce_dkontrol
if [ -f $TARIHCE_DIZIN/"$1-pkvt.tar.lz" ];then
rm -f $TARIHCE_DIZIN/"$1-pkvt.tar.lz"
else
ryaz 31 "ilgili tarihce dosyası bulunamadı!"
fi
}
loglama(){
logdizin_kontrol
echo "$(date +'%F %T') $1" >> "$kokdizin/$LOGDIZIN/mps.log"
}
dosyadan_talimat_islem(){
local dosya
dosya=$1
urlkont='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
if [[ $dosya =~ $urlkont ]]
then
ryaz 32 "talimat linkten cekilecek"
gdosya=`mktemp`
wget $2 $dosya -O $gdosya
dosya=$gdosya
fi
if [[ $2 =~ "-6" ]]; then
ryaz 32 "talimat linkten cekilecek"
gdosya=`mktemp`
wget $2 $dosya -O $gdosya
dosya=$gdosya
fi
if [ ! -f $dosya ];then
ryaz 31 "$dosya talimat dosyasi yok!"
exit 1
fi
local paketisim
paketisim=`grep -ri 'name=' $dosya | cut -d'=' -f 2`
if [ ! -n "$paketisim" ]; then
ryaz 31 "paket ismi degiskeni bulunamadı!"
exit 1
fi
if [ ! -f /root/talimatname/genel/$paketisim ];then
mkdir /root/talimatname/genel/$paketisim
cp -f $dosya /root/talimatname/genel/$paketisim/talimat
ryaz 32 "$paketisim talimatı hazırlandı."
else
ryaz 31 "$paketisim talimatı zaten talimatnamede var!"
fi
}
talimat_olustur(){
if [ "$1" = '?' ];then
ryaz 34 "kullanım : mps -to paket_ismi"
else
local name
name=$1
mkdir -p $name
tee "$name/talimat" > /dev/null <<EOF
# description:x
# url:x
# packager:milisarge
# Depends on:
name=$name
version=1
release=1
source=()
build () {
cd name-version
./autogen.sh
./configure --prefix=/usr
make
make DESTDIR=$PKG install
}
EOF
ryaz 34 $name "talimatı oluşturuldu."
fi
}
git_guncelle() {
kaynakdizin_kontrol
gitayar_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
rsync -av /sources/milis.git/rootfs/* /
else
cd milis.git
git pull
fi
cd `dirname $talimatname_dizin`
ryaz 33 "yerele eşitleniyor."
rm -r $talimatname_dizin
mkdir -p $talimatname_dizin
rsync -aviz -q --delete $DERLEME_KAYNAKDIZIN/milis.git/talimatname/ $talimatname_dizin
rm -r `dirname $talimatname_dizin`/bin/*
rsync -aviz -q --delete $DERLEME_KAYNAKDIZIN/milis.git/bin/ `dirname $talimatname_dizin`/bin
rm -r `dirname $talimatname_dizin`/ayarlar/*
rsync -aviz -q --delete $DERLEME_KAYNAKDIZIN/milis.git/ayarlar/ `dirname $talimatname_dizin`/ayarlar
#ikili dosyaların /usr/bin altına kısayol atılması
for i in /root/bin/*; do
j=`basename $i`
if [ ! -f /usr/bin/$j ];then
ln -s /root/bin/$j /usr/bin/$j
fi
done
}
git_proje_kur(){
local proje proj_dizin git_link
git_link="https://github.com/milisarge"
proje="$1"
proj_dizin="/opt"
mkdir -p $proj_dizin
if [ -d "$proj_dizin/$proje" ];then
cd $proj_dizin/$proje
git pull
if [ -f mops ];then
. mops
mops_gun
fi
else
git clone "$git_link/$proje" "$proj_dizin/$proje"
cd $proj_dizin/$proje
if [ -f mops ];then
. mops
mops_kur
mops_sil
mops_gun
fi
fi
}
paketvt_guncelle(){
temel_tarihce_kontrol
wget -q --spider "$sunucu""paket.vt"
#if wget -P /tmp -q "$sunucu""paket.vt" > /dev/null; then
if [ $? -eq 0 ]; then
ryaz 32 "paket veritabanı guncellenıyor." "$paketdepo""paket.vt"
if [ -f "$paketdepo""paket.vt" ];then
mv "$paketdepo""paket.vt" "$paketdepo""paket.vt.eski"
fi
wget -q --show-progress -P "$paketdepo" "$sunucu""paket.vt"
#rm /tmp/paket.vt*
mps -kudo
exit 1
fi
ryaz 31 "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
ryaz 32 "paket sunucu aktif"
else
ryaz 31 "sunucu erişim dışı"
exit 1
fi
}
gitayar_kontrol(){
if [ ! -f /root/.gitconfig ];then
git_ssl_iptal
git_otokimlik
fi
}
kurulum_dogrulama(){
for kuruland in `ls $VT`
do
if [ ! -f "$VT/$kuruland/kurulan" ]; then
ryaz 32 "$kuruland hasarlı kurulum tesbiti!"
rm -r $VT/$kuruland
mps -i $kuruland
mps -k "$paketdepo/$kuruland"*.mps.lz
ryaz 32 "$kuruland hasarlı kurulum onarıldı."
fi
done
}
kurulum_dosya_listele(){
cat "$VT/$1/kurulan"
}
paketvt_kontrol(){
mkdir -p /depo/paketler
if [ ! -f /depo/paketler/paket.vt ];then
touch /depo/paketler/paket.vt
fi
}
pvt_olustur(){
if [ ! -f paket.vt ];then
touch paket.vt
fi
if [ -f "paket.vt" ];then
mv "paket.vt" "paket.vt.eski"
fi
ryaz 32 "paket.vt oluşturuluyor...."
for paket in `ls *.mps.lz`
do
paketad="`echo $paket|cut -d "#" -f1`"
shaek=`sha1sum $paket`
echo $paketad $shaek >> paket.vt
done
ryaz 32 "paket.vt oluşturuldu."
}
paket_indir(){
local pkt
if [ -f "$paketdepo""paket.vt" ];then
pkt=`cat "$paketdepo""paket.vt" | grep "^$1 " | cut -d' ' -f3`
ekontdeg=`cat "$paketdepo""paket.vt" | grep "^$1 " | cut -d' ' -f2`
cpaket="${pkt/'#'/'%23'}"
wget -nc -q --show-progress -P "$paketdepo" "$sunucu$cpaket"
if [[ "$?" != 0 ]]; then
ryaz 31 "indirme hatalı"
else
ryaz 34 "$1 indirildi"
fi
mkontdeg=`sha1sum "$paketdepo$pkt" | cut -d' ' -f1`
if [ "$ekontdeg" != "$mkontdeg" ];then
ryaz 31 "sha1sum uyusmaslik tesbit edildi,paket tekrar indiriliyor."
rm -f "$paketdepo$pkt"
paket_indir "$1"
fi
fi
}
yardim(){
echo "yardim"
}
ayarlar() {
while [ "$1" ]; do
case $1 in
-i|--indir)
ikaynak="ag"
kurulum_onay="olumsuz";;
-ik|--inku)
if [ "$3" == "-kok" ] && [ -d "$4" ]; then
kokdizin="$4"
fi
ikaynak="ag" ;;
-ikz|--inkuzo)
ikaynak="ag"
tekrarkur="evet" ;;
-k|--yrku)
if [ "$3" == "-kok" ] && [ -d "$4" ]; then
kokdizin="$4"
tekrarkur="evet"
fi
ikaynak="yerel" ;;
-s|sil)
if [[ "$2" == "py-"* ]]; then
pypaket=`echo "$2" | cut -d'-' -f 2`
echo $pypaket "pip2 ile silinecek"
pip uninstall $pypaket
exit 1
fi
if [[ "$2" == "py3-"* ]]; then
pypaket=`echo "$2" | cut -d'-' -f 2`
echo $pypaket "pip3 ile silinecek"
pip3 uninstall $pypaket
exit 1
fi
paket_sil "$2" ;;
-sz|zorsil)
paket_sil "$2" "evet";;
-S|silgrub)
mps -bbd "$2"
paket_sil_oto_onayli "$2.gerekler.liste" ;;
-pa|ara)
paket_ara "$2" ;;
bul)
kelime_bul "$2" ;;
-d|--pkde)
zorla_derle="yok"
kurulum_onay="olumsuz"
paket_derle "$2" ;;
-zd|--pkzde)
zorla_derle="evet"
kurulum_onay="olumsuz"
paket_derle "$2" ;;
odkp)
oto_derle_kur_paketle "$2" ;;
-dk|--pkdk)
paket_derle "$2" ;;
-derlist)
paket_derle_liste "$2" ;;
-derle)
paket_derle_kur "$2" ;;
-ok|--pkok)
paket_kur_oto "$2" ;;
-okz)
paket_kur_oto_zorla "$2" ;;
-okl|--pkokl)
paket_kur_liste "$2" ;;
-oklz)
paket_kur_liste_zorla "$2" ;;
-kh)
local templist
templist=`mktemp`
ls *.mps.lz > $templist
mps -okz -H $templist ;;
-ko|--pkko)
paket_kur_oto2 "$2" ;;
-kuruld)
paket_inkur_liste_direk "$2" ;;
-kurul)
paket_inkur_liste "$2" ;;
-kur)
paket_inkur_oto "$2" ;;
kur)
if [[ "$2" == "py-"* ]]; then
pypaket=`echo "$2" | cut -d'-' -f 2`
echo $pypaket "pip2 ile kurulacak"
pip install $pypaket
exit 1
fi
if [[ "$2" == "py3-"* ]]; then
pypaket=`echo "$2" | cut -d'-' -f 2`
echo $pypaket "pip3 ile kurulacak"
pip3 install $pypaket
exit 1
fi
if [[ "$2" == *"mps.lz"* ]]; then
if [ "$3" == "-kok" ] && [ -d "$4" ]; then
kokdizin="$4"
tekrarkur="evet"
fi
ikaynak="yerel"
else
paket_inkur_oto "$2"
fi ;;
gitkur)
git_proje_kur "$2" ;;
kurkos)
local pkt
pkt="`find $talimatname_dizin -name $2`"
if [ -f $pkt/$2.kur-kos ];then
bash $pkt/$2.kur-kos
else
ryaz 31 "$2 kur-kos yok!"
fi ;;
koskur)
local pkt
pkt="`find $talimatname_dizin -name $2`"
if [ -f $pkt/$2.kos-kur ];then
bash $pkt/$2.kos-kur
else
ryaz 31 "$2 kos-kur yok!"
fi ;;
silkos)
local pkt
pkt="`find $talimatname_dizin -name $2`"
if [ -f $pkt/$2.sil-kos ];then
bash $pkt/$2.sil-kos
else
ryaz 31 "$2 kur-kos yok!"
fi ;;
kossil)
local pkt
pkt="`find $talimatname_dizin -name $2`"
if [ -f $pkt/$2.kos-sil ];then
bash $pkt/$2.kos-sil
else
ryaz 31 "$2 kur-kos yok!"
fi ;;
-kdl)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
exit 1
fi
kurulum_dosya_listele "$2" ;;
-pak|--paketle)
if [ ! "$2" ]; then
ryaz 31 "paketlenecek dizin ismi eksik"
exit 1
fi
yeniden_paketle "$2" ;;
-psk|--paksiskur)
if [ ! "$2" ]; then
ryaz 31 "paket liste yok"
exit 1
fi
if [ ! "$3" ]; then
ryaz 31 "hedef dizin yok"
exit 1
fi
sistem_kur "$2" "$3" ;;
-po)
pvt_olustur ;;
-os|--pkos)
if [ ! "$2" ]; then
ryaz 31 "silme listesi yok"
exit 1
fi
paket_sil_oto "$2" ;;
-kl|--kurulu-liste)
ls $VT ;;
-dly|--drly)
if [ -f tumbag.liste ];then
mv tumbag.liste tumbag.liste.eski
fi
if [ -f bag.liste ];then
mv bag.liste bag.liste.eski
fi
touch tumbag.liste
touch bag.liste
derleme_listyap "$2" ;;
-dlb|--drlb)
derleme_listbilgi "$2";;
-b|--pkbl)
paket_bilgi "$2" ;;
#sunucu bilgisi alma
-sun|sunucu)
ryaz 32 $sunucu ;;
-bb|--pkbb)
bagimli_bilgi "$2" | column -t;;
-bbd)
bagimli_bilgi_dosyala "$2" ;;
-tb|--pktb)
ters_bagimli "$2" ;;
-tbk|--pktbk)
ters_bagimli_kontrol "$2" ;;
-talb|--talb)
talimat_bilgi "$2" | column -t;;
-to)
if [ ! "$2" ]; then
ryaz 31 "talimat ismi eksik"
exit 1
fi
talimat_olustur "$2" ;;
log)
local logyardim
logyardim="mps log zaman durum (ör: mps log 2017-01-01 silindi)"
if [ ! "$2" ]; then
ryaz 31 "zaman parametresi eksik"
ryaz 32 $logyardim
exit 1
fi
if [ ! "$3" ]; then
ryaz 31 "durum parametresi eksik"
ryaz 32 $logyardim
exit 1
fi
log_analiz "$2" "$3" ;;
guncelle)
mps -GG && mps -G ;;
-Ggit|-GG)
git_guncelle ;;
-G|--pvtg)
paketvt_guncelle
mps -kudo ;;
#komple kurulu sistemin guncellenmesi
-GS)
sistem_guncelle ;;
#tekil paket guncelleme-single package updating
-g|--pkgu)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
exit 1
fi
paket_guncelle "$2";;
#bagimliliklariyla beraber paket guncelleme-package updating with depencies
-go|--pkgo)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
exit 1
fi
paket_guncelle_oto "$2";;
-kk|--kurulu-kontrol)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
exit 1
fi
ryaz 31 `kurulu_kontrol "$2"`;;
-kudo)
kurulum_dogrulama ;;
-kdk)
kurban_kurtar $2 ;;
-suko)
sunucu_kontrol ;;
-dota)
dosyadan_talimat_islem $2 $3 ;;
-cf|--config-file)
if [ ! "$2" ]; then
echo "ayardosyası gerek $1"
exit 1
fi
ayar_dosyasi="$2"
shift ;;
-tro)
tarihce_yap ;;
-trot)
temel_tarihce="evet"
tarihce_yap ;;
-try)
if [ ! "$2" ]; then
ryaz 31 "tarihce dosyasi eksik $1"
exit 1
fi
tarihce_yukle "$2"
shift ;;
-trl)
tarihce_liste ;;
-trs)
if [ ! "$2" ]; then
ryaz 31 "parametre eksik $1"
exit 1
fi
tarihce_sil "$2"
shift ;;
-v)
ryaz 33 "$betikad $versiyon $iletisim"
exit 0 ;;
-h|--help)
yardim
exit 0 ;;
esac
shift
done
}
yardim() {
cat <<_EOF
$betikad $versiyon Milis Paket Sistemi
Secenekler:
-G ikili paket veritabanını günceller
-Ggit git sunucusundan talimatname ve sistem gunceller
-kur paket_ismi ilgili paketi bagimliliklariyla agdan cekip kurar
-s paket_ismi ilgili paketi kaldirir
-k paket_ismi yereldeki paketi bagimliliksiz kurar
-kl kurulu paket listesini verir
-kk paket_ismi ilgili paketin kurulu olma durumunu verir
-d paket_ismi ilgili paketin talimat dosyasına göre
sadece derler,paketler
-derle paket_ismi ilgili paketin talimat dosyasına göre bagimliliklariyla
beraber derler,paketler ve kurar.
_EOF
exit 1
}
ana(){
if [ `id -u` = 0 ] ; then
ayarlar "$@"
if [ "$ikaynak" = "ag" ]; then
local kontroldeg
kkont=`kurulu_kontrol "$2"`
if [ "$kkont" = "degil" ] || [ "$tekrarkur" = "evet" ];then
pkt=`cat "$paketdepo""paket.vt" | grep "^$2 " | cut -d' ' -f3`
if [ ! -z "$pkt" -a "$pkt" != "" ]; then
cpaket="${pkt/'#'/'%23'}"
ryaz 33 "agdan cekiliyor:" "$2"
#paket sunucuda varsa
wget -q --spider "$sunucu$cpaket"
#if wget -P /tmp -q "$sunucu$cpaket" > /dev/null; then
if [ $? -eq 0 ]; then
#wget -P "$paketdepo" "$sunucu$cpaket"
paket_indir "$2"
if [ "$kurulum_onay" = "evet" ];then
if [ "$tekrarkur" = "evet" ];then
paket_sil "$2" "evet"
fi
icerik_ekle "$paketdepo$pkt"
exit 1
fi
else
ryaz 31 "paket sunucuda yok!"
fi
else
ryaz 31 "$2 paket sunucuda yok!( mps -G komutuyla güncelleme yapınız. )"
fi
else
ryaz 32 "$2 paketi zaten kurulu!"
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
echo $tekrarkur
if [ "$tekrarkur" = "hayir" ];then
while true; do
ryaz 31 "$2 paketi zaten kurulu silinip kurulsun mu?"
read -p "e veya h -> " eh
case $eh in
[Ee]* ) silme="e"; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
fi
if [ "$silme" = "e" ];then
ryaz 33 "silinecekelerin kontrolu için"
paket_sil "$paketad"
icerik_ekle "$2"
fi
fi
else
ryaz 31 "yerelde mps paketi bulunamadı."
fi
fi
else
sudo mps "$@"
fi
}
ana "$@"
#31 kirmizi
#32 yesil
#33 sari
#34 mavi
#34 mor