milis/bin/mps

2732 lines
68 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="1.1.7 Milis Paket Sistemi"
iletisim="milisarge@gmail.com"
paketdepo="/depo/paketler/"
if [ -z ${sunucu+:} ]; then
sunucu="127.0.0.1:8000/"
fi
if [ -z ${git_sunucu+:} ]; then
git_sunucu="https://github.com/milisarge/malfs-milis"
fi
ikaynak=""
betikad=${0##*/}
kurulum_onay="evet"
talimatname="/root/talimatname"
anatalimatname="/sources/milis.git/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
if [ -z ${tpk+:} ]; then
lokal="evet"
fi
if [ -z ${lokal+:} ]; then
lokal="tr"
fi
if [ -z ${docsil+:} ]; then
docsil="evet"
fi
if [ -z ${yerelsil+:} ]; then
yerelsil="silme"
fi
if [ -z ${ektalimatname+:} ]; then
ektalimatname="/root/talimatlar"
[ ! -d /root/talimatlar ] && mkdir -p /root/talimatlar
fi
if [ -z ${sunucular+:} ]; then
declare -a sunucular=("paketler.milislinux.org")
awk ' {print;} NR == 1 { print "sunucular=(paketler.milislinux.org/)"; }' /etc/mps.conf > /etc/mps2.conf
mv /etc/mps2.conf /etc/mps.conf
fi
if [ -z ${silme_esgec+:} ]; then
declare -a silme_esgec=()
fi
# Türkçe Mesajlar
_paket_adi_gerekli="paket ismi eksik!"
_dizin_bulunamadi="dizin bulunamadı!"
_talimat_sayisi_fazla="talimatnameler altında birden fazla talimat mevcut!"
_talimat_bulunamadi="ilgili talimat bulunamadı!"
_dosya_yolu_bulunamadi="dosya yolu bulunamadı!"
_shasum_uyumsuzluk="shasum uyumsuzluğu tespit edildi!"
_gerekler_belirleniyor="bağımlılıkları belirleniyor."
_paket_kuruldu="paketi kuruldu."
_paket_kurulu_degil="paketi kurulu değil!"
_paket_silindi="paketi silindi."
_paket_silinsinmi="paketi kaldırılsın mı?"
_paket_tanimsiz="paketi tanımsız!"
_paket_bulunamadi="ilgili paket bulunamadı!"
_paketvt_guncelleniyor="paket veritabanı güncelleniyor."
_paket_onbellek_depoda_var="paketi önbellek depoda bulunmakta."
_paket_depoda_yok="paket depoda bulunmuyor ve gereksiz,"
_siliniyor="siliniyor"
_git_guncelleniyor="git sunucudan güncelleme çekiliyor."
_git_guncel="git deposu güncel"
_git_guncellendi="git deposu güncellendi."
_yerel_esitlendi="yerele eşitleme tamam."
_yerel_esitleniyor="yerele eşitleniyor."
_devir_kontrol_iptal="devir kontrolü iptal edildi!"
_surum_kontrol_iptal="sürüm kontrolü iptal edildi!"
_zaten="zaten"
icerik_ekle(){
if [ -f "$1" ];then
paketad=`echo "$1" | cut -d'#' -f1`
paketad=`basename $paketad`
ryaz 34 $paketad" paketi kuruluyor-> $kokdizin"
if [ -f /usr/bin/bsdtar ];then
bsdtar -C /tmp --extract --file=$1 .PRE 1 2> /tmp/$paketad_pre.log
else
tar -C /tmp --extract --file=$1 .PRE 1 2> /tmp/$paketad_pre.log
fi
#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 &&
if [ -f /usr/bin/bsdtar ];then
bsdtar xf $1 -C kur.$paketad
else
tar xf $1 -C kur.$paketad
fi
#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$VT/"$paketad" &&
cp -v -afr kur.$paketad/* $kokdizin > kur.$paketad/kurulan
cp kur.$paketad/kurulan /tmp/ &&cat kur.$paketad/kurulan | cut -d '>' -f2 > $kokdizin$VT/"$paketad"/kurulan &&
#mv kur.$paketad/.MTREE $VT/"$paketad"/files &&
mv kur.$paketad/.META $kokdizin$VT/"$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" $_paket_kuruldu"
loglama "$paketad $_paket_kuruldu"
else
ryaz 31 "icerik_ekle:paket konum parametresi boş!!!"
exit 1
fi
}
paket_sil(){
local paket kkont sil_onay oto_silme
local _etkilenen=()
paket="$1"
tersbag_goster="hayir"
if [ "$2" ]; then
oto_silme="$2"
fi
if [ "$3" ]; then
tersbag_goster="evet"
fi
if [ "$tpk" = "evet" ] && [ -d "$talimatname/temel/$1" ];then
ryaz 31 "$1 temel sistem paketidir.Silinemez!!!"
hataloglama "$1 temel sistem paketidir.Silinemez!!!"
else
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
if [ -f "$VT/$paket/kurulan" ];then
#dizin koruma
etkilenen_kurtar $1
cat $VT/$paket/kurulan | cut -d '>' -f2 > /tmp/$paket.sil
if [ "$tersbag_goster" = "evet" ];then
ryaz 31 "ters bagimliliklar"
ryaz 31 "------------------"
ters_bagimli_bilgi "$paket"
ryaz 31 "------------------"
fi
#_etkilenen=$(silme_etkilenen_kontrol /tmp/$paket.sil $paket)
#if [ -f "${_etkilenen[0]}" ];then
ryaz 31 "etkilenen dosyalar"
ryaz 31 "------------------"
silme_etkilenen_kontrol /tmp/$paket.sil $paket
ryaz 31 "------------------"
#fi
if [ "$oto_silme" = "evet" ];then
sil_onay="e"
else
while true; do
ryaz 34 $paket" $_paket_silinsinmi";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
_konum=$(talimat_bul $paket)
[ -f "$_konum/$paket.kos-sil" ] && bash "$_konum/$paket.kos-sil"
xargs rm -r -f < /tmp/$paket.sil &&
rm -r -f "$VT/$paket" &&
[ -f "$_konum/$paket.sil-kos" ] && bash "$_konum/$paket.sil-kos"
ryaz 34 $paket" $_paket_silindi"
loglama "$paket $_paket_silindi"
rm -f /tmp/$paket.sil
else
rm -f /tmp/$paket.sil
fi
else
ryaz 31 "kritik mesaj:kurulanlar dosyası yok."
hataloglama "kritik mesaj:kurulanlar dosyası yok."
fi
elif [ "$kkont" = "degil" ];then
ryaz 32 "$_zaten $_paket_kurulu_degil"
hataloglama "$_zaten $_paket_kurulu_degil"
else
ryaz 32 "$_paket_tanimsiz"
hataloglama "$_paket_tanimsiz"
fi
fi
}
paket_ara(){
paket="$1"
for pkt in `cat /depo/paketler/paket*.vt | grep $paket | awk '{print $1}'`; do
pakdesc=$(find $talimatname -name "$pkt" | xargs -I % sed -n '1{p;q}' %/talimat | sed s'/# Tanım: //g');
ryaz 34 "$pkt - $pakdesc";
done
}
paket_liste(){
mps_paketler_listesi="/tmp/mps_paketler_listesi"
local cikti
cikti="normal"
if [ "$1" ]; then
cikti="$1"
fi
if [ $cikti == "--json" ];then
[ -f $mps_paketler_listesi ] && rm -rf $mps_paketler_listesi
for pkt in $(cat /depo/paketler/paket*.vt | awk '{print $1}'); do
printf "$pkt," >> $mps_paketler_listesi
done
sed -i s'/.$//' $mps_paketler_listesi
else
cat /depo/paketler/paket*.vt | awk '{print $1}'
fi
}
kelime_bul(){
grep --color -H -ri "$1" $talimatname
grep --color -H -ri "$1" $ektalimatname
}
paket_bilgi2(){
local paket kkont
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
paket="$1"
cat "$VT/$paket"/META
elif [ "$kkont" = "degil" ];then
echo "$_paket_kurulu_degil"
else
echo "$_paket_tanimsiz"
fi
}
paket_bilgi(){
local paket kkont cikti _yaz _yaz_uyari
cikti="--renkli"
if [ "$2" ]; then
cikti="$2"
fi
if [ $cikti == "--json" ];then
_yaz="echo"
_yaz_uyari="echo"
elif [ $cikti == "--renkli" ];then
_yaz="ryaz 32"
_yaz_uyari="ryaz 31"
else
cikti="normal"
fi
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "kurulu" ];then
paket="$1"
satir=`sed -n '1p' < $VT/"$paket"/META`
$_yaz "ADI :" ${satir:1:${#satir}-1}
satir=`sed -n '2p' < $VT/"$paket"/META`
$_yaz "TANIM :" ${satir:1:${#satir}-1}
satir=`sed -n '3p' < $VT/"$paket"/META`
$_yaz "URL :" ${satir:1:${#satir}-1}
satir=`sed -n '5p' < $VT/"$paket"/META`
$_yaz "PAKETÇİ :" ${satir:1:${#satir}-1}
satir=`sed -n '6p' < $VT/"$paket"/META`
satir=${satir:1:${#satir}-1}
printf -v boyut '%d\n' "$satir" 2>/dev/null
if [ $boyut -lt 1048576 ];then
boyut=$(($boyut/1024))
_ek="kb"
else
boyut=$(($boyut/1024/1024))
_ek="mb"
fi
$_yaz "KUR BOYUT :" "$boyut $_ek (tahmini)"
satir=`sed -n '7p' < $VT/"$paket"/META`
$_yaz "SÜRÜM :" ${satir:1:${#satir}-1}
satir=`sed -n '8p' < $VT/"$paket"/META`
$_yaz "DEVİR :" ${satir:1:${#satir}-1}
satir=`sed -n '9p' < $VT/"$paket"/META`
$_yaz "PAKETLENME :" `date -d @${satir:1:${#satir}-1}`
satir=`sed -n '10p' < $VT/"$paket"/META`
$_yaz "MİMARİ :" ${satir:1:${#satir}-1}
satir=`sed -n '11p' < $VT/"$paket"/META`
$_yaz "GRUP :" ${satir:1:${#satir}-1}
elif [ "$kkont" = "degil" ];then
$_yaz_uyari "$1 $_paket_kurulu_degil"
else
$_yaz_uyari "$1 $_paket_tanimsiz"
fi
}
yeniden_paketle(){
cd $1
bsdtar -r -f ../"$1".mps .META
bsdtar -r -f ../"$1".mps *
cd ..
lzip -9 "$1".mps
}
talimat_bul(){
if [ -z "$1" ];then echo "$_paket_adi_gerekli";exit 1;fi
local _apaket="$1"
_bulunan=()
#_bulunan=$(find $talimatname $ektalimatname -name $_apaket)
_bulunan=()
while IFS= read -r -d $'\0'; do
_bulunan+=("$REPLY")
done < <(find $talimatname $ektalimatname -name ${_apaket} -print0)
if [ ${#_bulunan[@]} -gt 1 ];then echo "$(date +'%F %T') ${_apaket} $_talimat_sayisi_fazla" >> $LOGDIZIN/mps-hata.log;fi
if [ ${_bulunan[0]} ] ; then
if [ -f "${_bulunan[0]}/talimat" ];then
echo "${_bulunan[0]}"
else
echo "0"
fi
else
echo "-1"
fi
}
paket_analiz(){
_gcc_uyumsuz_paketler="/tmp/gcc_uyumsuz_paketler"
_pkvt="paket.vt"
if [ -z "$1" ];then echo "$_paket_adi_gerekli";exit 1;fi
local pkt _apaket _konum
pkt=$1
if [ -f $pkt ];then
_apaket=$(basename $pkt |cut -d'#' -f 1)
_konum=$(anatalimat_bul $_apaket)
_depo_sha=$(cat "$paketdepo$_pkvt" | grep " $_apaket#" | cut -d' ' -f2)
_paket_sha=$(sha1sum $pkt | cut -d ' ' -f1)
if [[ $_konum != "-1" && $_konum != "0" ]];then
source $_konum/talimat
if [ -f $pkt ];then
bsdtar xf $pkt .META
if [ -f $PWD/.META ];then
mv .META /tmp/$_apaket.META
satir=$(sed -n '7p' < /tmp/$_apaket.META)
psurum=${satir:1:${#satir}-1}
satir2=$(sed -n '8p' < /tmp/$_apaket.META)
pdevir=${satir2:1:${#satir2}-1}
deposurum=`echo -e "$surum" | sort -V | head -n1`
depodevir=`echo -e "$devir" | sort -V | head -n1`
_surumbilgi="gereken_sürüm:$deposurum ! paket_sürüm:$psurum"
_devirbilgi="gereken_devir:$depodevir ! paket_devir:$pdevir"
ryaz 33 "$pkt"
if [ "$deposurum" != "$psurum" ];then
ryaz 31 "$_surumbilgi"
echo "$pkt" >> $_gcc_uyumsuz_paketler
fi
if [ "$depodevir" != "$pdevir" ];then
ryaz 31 "$_devirbilgi"
echo "$pkt" >> $_gcc_uyumsuz_paketler
fi
if [ "$_paket_sha" != "$_depo_sha" ];then
ryaz 31 "$_shasum_uyumsuzluk"
echo "$pkt" >> $_gcc_uyumsuz_paketler
fi
else
ryaz 31 "$_apaket depoda yok. mps -i $_apaket"
fi
else
ryaz 31 "$_apaket depoda yok. mps -i $_apaket"
fi
else
ryaz 31 "$1 $_talimat_bulunamadi"
fi
rm -f /tmp/$_apaket.META
else
ryaz 31 "$pkt $_dosya_yolu_bulunamadi"
exit 0
fi
}
paketdepo_analiz(){
paketvt_guncelle
_aranandepo=$1
_uyumsuz_paketler="/tmp/uyumsuz_paketler"
if [[ -d $_aranandepo && ! -f $_aranandepo ]];then
rm -f $_uyumsuz_paketler
_gcc_uyumsuz_paketler="/tmp/gcc_uyumsuz_paketler"
for pkt in $(ls $_aranandepo*mps.lz);do
paket_analiz $pkt
echo "-"
done
echo "tarama bitti"
sort -u $_gcc_uyumsuz_paketler > $_uyumsuz_paketler
echo "file://$_uyumsuz_paketler"
exit 0
else
ryaz 31 "$1 $_dizin_bulunamadi"
exit 1
fi
}
anatalimat_bul(){
if [ -z "$1" ];then echo "$_paket_adi_gerekli";exit 1;fi
local _apaket="$1"
_bulunan=()
_bulunan=()
while IFS= read -r -d $'\0'; do
_bulunan+=("$REPLY")
done < <(find $anatalimatname -name ${_apaket} -print0)
if [ ${#_bulunan[@]} -gt 1 ];then echo "$(date +'%F %T') ${_apaket} $_talimat_sayisi_fazla" >> $LOGDIZIN/mps-hata.log;fi
if [ ${_bulunan[0]} ] ; then
if [ -f "${_bulunan[0]}/talimat" ];then
echo "${_bulunan[0]}"
else
echo "0"
fi
else
echo "-1"
fi
}
derleme_listyap_kontrol(){
if [ -f tumgerekler.liste ];then
mv tumgerekler.liste tumgerekler.eski.liste
fi
if [ -f gerek.liste ];then
mv gerek.liste gerek.eski.liste
fi
touch tumgerekler.liste
touch gerek.liste
}
gerekleri_dosyala(){
local _altgerek _konum
_altgerek="$1"
_konum=$(talimat_bul $_altgerek)
if [[ $konum != "-1" && $konum != "0" ]];then
printf "."
echo "$_altgerek" >> tumgerekler.liste
if [ ! -d "$talimatname/temel/$_altgerek" ];then
echo "$_konum" >> gerek.liste
fi
else
ryaz 31 "$1 $_talimat_bulunamadi"
fi
}
dly_yeni(){
dlymap["$1"]=1
altgerekler=($(bagimlilar $1))
if [[ "$altgerekler" != "0" && "$altgerekler" != "-1" ]];then
for altgerek in ${altgerekler[@]};do
if [[ ! ${dlymap["$altgerek"]} ]] ; then
dly_yeni $altgerek
fi
done
dlyD+=("$1")
gerekleri_dosyala "$1"
else
ryaz 31 "$1 talimatı bulunamadı."
exit 1
fi
}
kly_yeni(){
#[ ! ${klyD[0]} ] && klyD+=("$1")
[ ! -d "$VT/$1" ] && klymap["$1"]=1
altgerekler=($(bagimlilar $1))
if [[ "$altgerekler" != "0" && "$altgerekler" != "-1" ]];then
for altgerek in ${altgerekler[@]};do
if [ ! -d "$VT/$altgerek" ] ;then
if [[ ! ${klymap["$altgerek"]} ]] ; then
#klyD+=("$altgerek")
#echo ${klyD[-1]}
kly_yeni $altgerek
fi
fi
done
klyD+=("$1")
gerekleri_dosyala ${klyD[-1]}
else
ryaz 31 "$1 talimatı bulunamadı."
exit 1
fi
}
derleme_listyap(){
ryaz 32 "$1 $_gerekler_belirleniyor"
local pkt dlyp
dlyD=()
declare -A dlymap
derleme_listyap_kontrol
dly_yeni $1
echo "${dlyD[@]}"
}
kurulum_listyap(){
klyD=()
declare -A klymap
kly_yeni "$1"
}
derleme_listbilgi(){
ryaz 34 "yapim asamasında"
}
# -derlist
paket_derle_liste(){
for dpktyer in `cat $1`;do
dpkt=`basename $dpktyer`
echo $dpkt "derleniyor...."
zorla_derle="yok"
paket_derle $dpktyer
done
}
#otomatik derle kontrollu kur
# -derle
paket_derle_kur(){
tekrarkur="hayir"
derleme_listyap_kontrol
derleme_listyap "$1" && paket_derle_liste gerek.liste
}
# odkp
oto_derle_kur_paketle(){
paketvt_guncelle
# mps -kur
_konum=$(talimat_bul $1)
paket_inkur_oto $1 &&
if [ -f "$_konum/$1.sira" ];then
ryaz 32 "sıralı derleme yapılacak."
paket_derle_liste "$_konum/$1.sira"
else
paket_derle_kur $1
fi
rm -rf {gerek.eski,gerek,kurulanlar,silinenler,tumgerekler.eski,tumgerekler}.liste
}
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" && paket_inkur_oto "$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" && paket_inkur_oto "$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(){
derleme_listyap_kontrol
derleme_listyap "$1" > /dev/null && mps -ok gerek.liste
}
paket_inkur_liste_direk(){
local kpkt
for kpkt in `cat $1`;do
agdan_kur "$kpkt"
done
}
paket_inkur_liste(){
local kpkt
for kpkt in `cat $1`;do
paket_inkur_oto "$kpkt"
done
}
# otomatik kontrollu kur
# -kur
paket_inkur_oto(){
local konum anakonum kurdurum
derleme_listyap_kontrol
#derleme_listyap "$1" | grep "bulunamadı"
kurulum_listyap "$1" | grep "bulunamadı"
local kpkt
for paketkonum in `cat gerek.liste`;do
# önce talimat-anatalimat karşılaştırması yapılır.
kpkt=`basename $paketkonum`
konum="`find "$talimatname" -name $kpkt`"
anakonum="`find "$anatalimatname" -name $kpkt`"
ekkonum="`find "$ektalimatname" -name $kpkt`"
if [ -f "$anakonum/talimat" ];then
if [ "`dosya_karsilastir $konum/talimat $anakonum/talimat`" = "evet" ];then
agdan_kur "$kpkt"
else
ryaz 31 "$kpkt talimat eşitsizliğinden atlandı."
fi
elif [ -f "$ekkonum/talimat" ];then
agdan_kur "$kpkt"
else
ryaz 31 "$kpkt talimatı bulunamadı!"
fi
done
if [ $(kurulu_kontrol $1) = "degil" ];then
kurdurum="kurulu değil"
elif [ $(kurulu_kontrol $1) = "kurulu" ];then
kurdurum="kurulu"
ryaz 32 "\n$1 $kurdurum "
else
kurdurum="$_paket_tanimsiz"
fi
rm -rf *.liste
}
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
#for spkt in `perl -e 'print reverse <>' $1`;do
for spkt in $(tac $1);do
paket_sil "$spkt" "hayir" "evet"
done
}
paket_sil_gerekli(){
local _onay
if [ -d $VT/$1 ];then
bagimli_bilgi_dosyala "$1"
rm -f /tmp/$1.silinecekler
touch /tmp/$1.silinecekler
for pkaltb in $(cat /tmp/$1.gerekler.liste);do
if [ -d $VT/$pkaltb ];then
tbsonuc=()
tbsonuc=$(ters_bagimli_bilgi $pkaltb "kurulu")
if [ ${#tbsonuc[0]} = 0 ];then
ryaz 32 "$pkaltb silinebilir."
echo "$pkaltb" >> /tmp/$1.silinecekler
elif [ "$tbsonuc" = "$1" ];then
ryaz 32 "$pkaltb silinebilir."
echo "$pkaltb" >> /tmp/$1.silinecekler
else
ryaz 31 "$pkaltb silinemez."
echo "ters gerekleri: $tbsonuc"
fi
else
ryaz 32 "$_zaten $pkaltb $_paket_kurulu_degil"
fi
done
_onay="onay"
# otomatik onay verme durum kontrolü
if [ ! -z "$2" ];then _onay="$2";fi
#cat /tmp/$1.silinecekler
if [ $_onay = "oto" ];then
paket_sil_oto "/tmp/$1.silinecekler"
else
paket_sil_oto_onayli "/tmp/$1.silinecekler"
fi
else
ryaz 32 "$_zaten $1 $_paket_kurulu_degil"
exit 1
fi
}
paketsiz_talimatlar(){
for talimatyol in `( ls -d $talimatname/genel/*/* & ls -d $ektalimatname/*/* ) | cat`;do
#echo $talimat
if [ -d $talimatyol ];then
talimat=$(basename $talimatyol)
if [[ ! $(cat $paketdepo/paket*.vt | grep $talimat#) ]] ;then
if [ -d $talimatname/*/*/$talimat ];then
ack=`grep -e '# Tanım:' $talimatname/genel/*/$talimat/talimat | cut -d':' -f2`
elif [ -d $ektalimatname/*/$talimat ];then
ack=`grep -e '# Tanım:' $ektalimatname/*/$talimat/talimat | cut -d':' -f2`
fi
printf '%s = %s \n' "$talimat" "$ack"
fi
fi
done
}
paket_guncelle(){
surum_kontrol $1 $2
if [ -d "$VT/$1" ];then
devir_kontrol $1 $2
fi
}
paket_guncelle_oto(){
derleme_listyap "$1" > /dev/null &&
local kpkt
for kpkt in `cat gerek.liste`;do
durum=`kurulu_kontrol "$kpkt"`
if [ "$durum" = "kurulu" ]; then
paket_guncelle "$kpkt"
fi
done
rm gerek.liste tumgerekler.liste
}
dongu_gosterge(){
count=0
total=$1
pstr="[=======================================================================]"
while [ $count -lt $total ]; do
sleep 0.5 # yapılacak iş veya uyutulur.
count=$(( $count + 1 ))
pd=$(( $count * 73 / $total ))
printf "\r%3d.%1d%% %.${pd}s" $(( $count * 100 / $total )) $(( ($count * 1000 / $total) % 10 )) $pstr
done
}
guncelleme_tespit(){
local _konum
guncelleme_dosya="/tmp/mps.guncellenecekler"
rm -f $guncelleme_dosya
touch $guncelleme_dosya
for kpaket in $(ls $VT/);do
satir=$(sed -n '7p' < $VT/$kpaket/META)
surum=${satir:1:${#satir}-1}
satir2=$(sed -n '8p' < $VT/$kpaket/META)
devir=${satir2:1:${#satir2}-1}
#deposurum=$(grep " $kpaket#" /depo/paketler/paket.vt | cut -d' ' -f3 | cut -d'#' -f 2 | cut -d'-' -f1)
_konum=$(talimat_bul $kpaket)
if [[ "$_konum" = "0" || "$_konum" = "-1" ]];then
ryaz 31 "$kpaket $_talimat_bulunamadi $_surum_kontrol_iptal"
exit 1
fi
source $_konum/talimat
deposurum=`echo -e "$surum" | sort -V | head -n1`
depodevir=`echo -e "$devir" | sort -V | head -n1`
#echo $kpaket " : $surum ---> $deposurum" "$devir ---> $depodevir"
#sleep 3
if [ "$surum" != "$deposurum" ];then
printf "$kpaket -surum: ";echo "$surum ---> $deposurum"
echo $kpaket >> $guncelleme_dosya
elif [ "$devir" != "$depodevir" ];then
printf "$kpaket -devir: ";echo "$devir ---> $depodevir"
echo $kpaket >> $guncelleme_dosya
fi
done
}
sistem_guncelle(){
count=0
esgec=(xorg xorg-app xorg-font xorg-proto kernel-lts kernel-lts-src vlc)
local kpkt
local pk_guncelle
total=`ls $VT | wc -l`
pstr="[=======================================================================]"
git_guncelle
paketvt_guncelle
GS_CIKTI="H"
while [ $count -lt $total ]; do
count=$(( $count + 1 ))
pd=$(( $count * 73 / $total ))
printf "\r%3d.%1d%% %.${pd}s" $(( $count * 100 / $total )) $(( ($count * 1000 / $total) % 10 )) $pstr
kpkt=$(ls -rct $VT | tr " " "\n" | sed -n ${count}'p')
pk_guncelle="e"
if [[ "${esgec[*]}" =~ "${kpkt}" ]];then
pk_guncelle="h"
fi
if [ "$pk_guncelle" = "e" ];then
paket_guncelle "$kpkt" $GS_CIKTI
#printf "."
else
[ $GS_CIKTI = "E" ] && ryaz 31 $kpkt "güncellemesi atlandı"
#ryaz 31 "$kpkt atlandı"
fi
done
ryaz 32 "\nSistem Güncellemesi Tamamlandı."
}
surum_kontrol(){
local _konum pk_sil _paket
_paket=$1
GS_CIKTI="E"
if [ "$2" ]; then
GS_CIKTI="$2"
fi
local ksurum surum pkt dusuk yuksek durum
durum="belirsiz"
satir=`sed -n '7p' < $VT/$_paket/META`
ksurum=${satir:1:${#satir}-1}
_konum=$(talimat_bul $_paket)
if [[ "$_konum" = "0" || "$_konum" = "-1" ]];then
ryaz 31 "$_paket $_talimat_bulunamadi $_surum_kontrol_iptal"
pk_sil="e"
case "${silme_esgec[@]}" in *"$_paket"*) pk_sil="h" ;; esac
if [ "$pk_sil" = "e" ];then
ryaz 32 "$_paket $_paket_depoda_yok $_siliniyor"
mps -sz $_paket
else
ryaz 32 "$_paket silinmesi es geçildi"
fi
else
source $_konum/talimat
dusuk=`echo -e "$ksurum\n$surum" | sort -V | head -n1`
if [ "$ksurum" = "$surum" ];then
durum="guncel"
[ $GS_CIKTI = "E" ] && ryaz 33 "$_paket sürümü güncel"
#printf "."
else
if [ "$ksurum" = "$dusuk" ];then
durum="yukselt"
else
durum="dusur"
fi
gun_onay="h"
if [ "$durum" <> "guncel" ];then
while true; do
printf "\n"
ryaz 34 "$_paket sürüm $durum""me işlemi uygulanacak. $ksurum <> $surum ";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
if [ -d "$talimatname/temel/$_paket" ]; then
kurulum_dogrulama_icerik $_paket
tpk="hayir"
paket_sil "$_paket" "evet"
paket_indir $_paket
pkt=`cat "$paketdepo""paket.vt" | grep "^$_paket " | cut -d' ' -f3`
icerik_ekle "$paketdepo$pkt"
else
paket_sil "$_paket" "evet"
paket_inkur_oto $_paket
fi
ryaz 33 "$_paket sürüm güncellemesi yapıldı"
else
ryaz 31 "$_paket sürüm güncellemesi yapılmadı"
hataloglama "$_paket sürüm güncellemesi yapılmadı"
fi
fi
fi
fi
}
devir_kontrol(){
local _konum pk_sil _paket
_paket="$1"
GS_CIKTI="E"
if [ "$2" ]; then
GS_CIKTI="$2"
fi
local kdevir devir pkt dusuk yuksek durum gun_onay
durum="belirsiz"
satir=`sed -n '8p' < $VT/$_paket/META`
kdevir=${satir:1:${#satir}-1}
_konum=$(talimat_bul $_paket)
if [[ "$_konum" = "0" || "$_konum" = "-1" ]];then
ryaz 31 "$_paket $_talimat_bulunamadi $_devir_kontrol_iptal"
pk_sil="e"
case "${silme_esgec[@]}" in *"$_paket"*) pk_sil="h" ;; esac
if [ "$pk_sil" = "e" ];then
ryaz 32 "$_paket $_paket_depoda_yok $_siliniyor"
mps -sz $_paket
else
ryaz 32 "$_paket silinmesi es geçildi"
fi
else
source $_konum/talimat
dusuk=`echo -e "$kdevir\n$devir" | sort -V | head -n1`
if [ "$kdevir" = "$devir" ];then
durum="guncel"
[ $GS_CIKTI = "E" ] && ryaz 33 "$_paket deviri güncel"
#printf "."
else
if [ "$kdevir" = "$dusuk" ];then
durum="yukselt"
else
durum="dusur"
fi
gun_onay="h"
if [ "$durum" <> "guncel" ];then
while true; do
printf "\n"
ryaz 34 "$_paket devir $durum""me işlemi uygulanacak. $kdevir <> $devir ";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 "$_paket" "evet"
paket_inkur_oto $_paket
ryaz 33 "$_paket devir güncellemesi yapıldı"
else
ryaz 31 "$_paket devir güncellemesi yapılmadı"
hataloglama "$_paket devir güncellemesi yapılmadı"
fi
fi
fi
fi
}
talimat_surum_takip(){
local konum _takip_uzanti
_takip_uzanti=".takip"
konum=$(talimat_bul $1)
if [[ $konum == "-1" || $konum == "0" ]];then
ryaz 31 "$1 $_talimat_bulunamadi"
exit 1
else
if [ -f "$konum/$1$_takip_uzanti" ];then
source $konum/$1$_takip_uzanti
if [ "`type -t surum_takip`" = "function" ];then
ryaz 32 "$1 paketinin kaynak kod arşivleri inceleniyor..."
surum_takip
else
ryaz 31 "$1 talimatının sürüm takip işlevi yok!"
fi
else
ryaz 31 "$1 talimatının takip betiği yok!"
fi
fi
}
kaynak_kod_indir(){
local konum adres adres2
_kk_indir="wget --no-check-certificate -q --show-progress"
konum=$(talimat_bul $1)
if [[ $konum == "-1" || $konum == "0" ]];then
ryaz 31 "$1 $_talimat_bulunamadi"
exit 1
else
source $konum/talimat
for adres in $kaynak;do
urlkont='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
if [[ $adres =~ $urlkont ]];then
if [[ $adres =~ "::" ]];then
adres2=$(echo $adres | cut -d':' -f-2)
ryaz 32 "$adres2 indiriliyor."
$_kk_indir $adres2
else
ryaz 32 "$adres indiriliyor."
$_kk_indir $adres
fi
else
ryaz 32 "$adres kopyalanıyor."
[ -f $konum/$adres ] && cp $konum/$adres .
fi
done
fi
}
paket_derle(){
#parametre olarak direk konum gelecek
#eski derleme kalıntılarını temizle
rm -rf tmp.*
kaynakdizin_kontrol
local konum derleme_onay eh bagimd derpaket
derleme_onay="h"
if [ -d "$1" ];then
konum="$1"
derpaket=`basename $1`
else
konum=$(talimat_bul $1)
if [[ $konum == "-1" || $konum == "0" ]];then
ryaz 31 "$1 $_talimat_bulunamadi"
exit 1
fi
derpaket="$1"
fi
if [ -d "$konum" ];then
mkdir -p tmp."$derpaket"
cp -a $konum/* tmp."$derpaket"/
cd tmp."$derpaket"
if [ "`kurulu_kontrol "$derpaket"`" = "kurulu" ] && [ "$zorla_derle" = "yok" ];then
derleme_onay="h"
else
derleme_onay="e"
fi
if [ "$derleme_onay" = "e" ];then
ryaz 33 "$derpaket" "derleniyor...."
echo "------------------------"
mpsd -d 2>&1|tee /tmp/"$derpaket".log
if ( grep "^=======>" /tmp/"$derpaket".log| tail -1 |grep "ERROR" > /dev/null);then
echo "derleme sisteminde hata oluştu -----> " /tmp/"$derpaket".log
exit 1
fi
if [ "$kurulum_onay" = "evet" ];then
for kpkt in `ls $derpaket* | cut -d'#' -f1`;do
mps -k "$kpkt#"*
done
fi
mv *.mps.lz ../
else
ryaz 32 "$_zaten $_paket_kurulu,yine de derlemek için:
mps -zd $derpaket"
fi
cd ..
rm -r tmp."$derpaket"
else
ryaz 31 "talimat dosyası bulunamadı."
hataloglama "talimat dosyası bulunamadı."
fi
}
bagimlilar_eski(){
local bagimd konum
konum="`find "$talimatname" -name $1`"
konumek="`find "$ektalimatname" -name $1`"
if [ -f "$konum/talimat" ];then
bagimd=`cat $konum/talimat | grep "Gerekler" | cut -d':' -f2`
if [ -n "$bagimd" ]; then
bagimd=`echo "$bagimd" | sed 's/,/ /g'`
#sıralı gösterme
echo `echo "$bagimd" | sed 's/,/ /g'`
fi
elif [ -f "$konumek/talimat" ];then
bagimd=`cat $konumek/talimat | grep "Gerekler" | 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
}
##_ bagimlilar() : talimatta yer alan gereklerin listesinin alınması.
bagimlilar(){
local bagimd konum
konum=$(talimat_bul $1)
if [[ $konum != "-1" && $konum != "0" ]];then
bagimd=`cat $konum/talimat | grep "Gerekler" | cut -d':' -f2`
bagimd=$(echo "$bagimd" | sed 's/,/ /g')
echo "$bagimd"
else
echo "$konum"
fi
}
ters_bagimli_bilgi(){
local gtbpaket _sadece_kurulu
_sadece_kurulu="hepsi"
gtbpaket=$1
if [ ! -z "$2" ];then _sadece_kurulu="$2";fi
tbgdosya=$(mktemp)
grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}\s" $talimatname > $tbgdosya ;
grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}\s" $ektalimatname >> $tbgdosya ;
grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}$" $ektalimatname >> $tbgdosya ;
grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}$" $talimatname >> $tbgdosya ;
cat $tbgdosya | xargs -I {} dirname {} | xargs -I {} basename {} | sort > /tmp/${gtbpaket}.tb.txt
rm -f $tbgdosya
[ -f /tmp/${gtbpaket}.tbk.txt ] && rm -f /tmp/${gtbpaket}.tbk.txt
if [ $_sadece_kurulu = "kurulu" ];then
for _kurulu_pkt in $(cat /tmp/${gtbpaket}.tb.txt);do
if [ -d $VT/$_kurulu_pkt ];then
echo "$_kurulu_pkt" >> /tmp/${gtbpaket}.tbk.txt
fi
done
[ -f /tmp/${gtbpaket}.tbk.txt ] && cat "/tmp/${gtbpaket}.tbk.txt"
else
cat "/tmp/${gtbpaket}.tb.txt"
fi
rm -rf $tbgdizin
}
kirik_ters_bagimli_bilgi(){
ryaz 32 "Aşağıdaki kurulu ters bağımlılıklarda kırılım araması yapılacaktır."
ters_bagimli_bilgi $1
ryaz 32 "........"
talimatlar=$(cat /tmp/$1.tb.txt)
for tal in $talimatlar;do
#paket kuruluysa kontrolu yapılacak
if [ -d "$VT/$tal" ];then
ryaz 34 "$tal paketi araştırılıyor:"
kirik_kontrol_paket $tal
ryaz 34 "--------------------------"
fi
done
}
bagimli_bilgi(){
local bagimd konum bag
bkonum="`find "$talimatname" -name $1`"
bekkonum="`find "$ektalimatname" -name $1`"
if [ $bkonum ];then
konum=$bkonum
elif [ $bekkonum ];then
konum=$bekkonum
else
ryaz 31 "$1 talimatı bulunamadı!"
exit 1
fi
bagimd=`cat $konum/talimat | grep "Gerekler" | 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
if [ "$2" = "dogrula" ];then
kurulum_dogrulama_icerik "$bag"
else
echo "$bag" "`kurulu_kontrol $bag`"
fi
done
fi
if [ "$2" = "dogrula" ];then
kurulum_dogrulama_icerik "$1"
else
echo "$1" "`kurulu_kontrol $1`"
fi
}
bagimli_bilgi_dosyala(){
rm -f "/tmp/$1.gerekler.liste"
local bagimd konum bag
bkonum="`find "$talimatname" -name $1`"
bekkonum="`find "$ektalimatname" -name $1`"
if [ $bkonum ];then
konum=$bkonum
elif [ $bekkonum ];then
konum=$bekkonum
else
ryaz 31 "$1 talimatı bulunamadı!"
exit 1
fi
bagimd=`cat $konum/talimat | grep "Gerekler" | 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 >> "/tmp/$1.gerekler.liste"
done
fi
echo "$1" >> "/tmp/$1.gerekler.liste"
}
silme_etkilenen_kontrol(){
paketet="$2"
mkdir -p /var/lib/pkg/etkilenen
mkdir -p /var/lib/pkg/etkilenen/$paketet
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"
cp -rf "$dizin/$g" /var/lib/pkg/etkilenen/$paketet
fi
done
fi
done
}
# bir paket ile kurulacak yeni paketlerin listesini verir.
yeni_kurulacak_paketler(){
[ -f /tmp/mevcut_kurulu.liste ] && rm -rf /tmp/mevcut_kurulu.liste
ls $VT > /tmp/mevcut_kurulu.liste
derleme_listyap $1 &> /dev/null
comm -13 <(sort /tmp/mevcut_kurulu.liste) <(sort tumgerekler.liste)
[ -f tumgerekler.liste ] && rm -rf tumgerekler.liste
[ -f gerek.liste ] && rm -rf gerek.liste
}
# iki dosyanın içerik karşılaştırması yapar.
dosya_karsilastir(){
if cmp -s "$1" "$2"
then
echo "evet"
else
echo "degil"
fi
}
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ı!"
hataloglama "mps.log bulunamadı!"
fi
}
etkilenen_kurtar(){
local dizin paket
paket=$1
if [ -f $VT/$paket/kurulan ];then
cat $VT/$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 $VT/$paket/kurulan $VT/$paket/ilk.kurulan
grep -v -F -x -f "/tmp/$paket.kurtar" "/tmp/$paket.sil" > $VT/$paket/kurulan
ryaz 32 "$paket etkilenen dosyaları kurtarıldı."
else
ryaz 32 "$paket etkilenen dosyası yok."
fi
rm -f /tmp/$paket.sil
else
ryaz 31 "kurulan paket yok!"
hataloglama "kurulan paket yok!"
fi
}
ters_bagimli_kontrol(){
ters_bagimli_bilgi $1
cat /tmp/${1}.tb.txt | sort > tersb.liste
ls $VT/ | sed "/$1/d" | sort > simdiki.liste
comm -12 tersb.liste simdiki.liste
rm tersb.liste simdiki.liste
}
kurulu_kontrol(){
local _konum _apaket
_apaket=$1
if [ -d "$kokdizin$VT/$_apaket" ];then
echo "kurulu"
exit 0
fi
_konum=$(talimat_bul $_apaket)
if [[ "$_konum" = "0" || "$_konum" = "-1" ]];then
echo "tanimsiz"
else
echo "degil"
fi
exit 1
}
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
if [ ! -f $kokdizin$LOGDIZIN/mps-hata.log ];then
touch $kokdizin$LOGDIZIN/mps-hata.log
fi
if [ ! -f $kokdizin$LOGDIZIN/mps-git.log ];then
touch $kokdizin$LOGDIZIN/mps-git.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$VT/ > hedef.pkvt
ls $VT/ > 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ı!"
hataloglama "ilgili tarihce dosyası bulunamadı!"
fi
[ -f $PWD/hedef.pkvt ] && rm $PWD/hedef.pkvt
[ -f $PWD/simdiki.pkvt ] && rm $PWD/simdiki.pkvt
}
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ı!"
hataloglama "ilgili tarihce dosyası bulunamadı!"
fi
}
sunucu_ayarla(){
wget -q --spider "$1/paket.vt"
yenisun="$1"
if [ $? -eq 0 ]; then
sed -i.bak 's/^\(sunucu=\).*/\1"xverix\/"/' /etc/mps.conf
sed -i "s|xverix|$1|" /etc/mps.conf
mps -sun
else
ryaz 31 "Tanımsız paket sunucusu!"
hataloglama "Tanımsız paket sunucusu!"
fi
}
sunucu_ayarla_y(){
wget -q --spider "$1/paket.vt"
yenisun="$1"
if [ $? -eq 0 ]; then
source /etc/mps.conf
ydizi=("${sunucular[@]}")
ydizi[0]="$1"
echo ${ydizi[@]}
esnc=${sunucular[0]}
ysnc=${ydizi[0]}
sed -i "/^sunucular/s/"${esnc}"\'"$ysnc"'/g" /etc/mps.conf
else
ryaz 31 "Tanımsız paket sunucusu!"
fi
}
loglama(){
logdizin_kontrol
echo "$(date +'%F %T') $1" >> "$kokdizin/$LOGDIZIN/mps.log"
}
hataloglama(){
logdizin_kontrol
echo "$(date +'%F %T') $1" >> "$kokdizin/$LOGDIZIN/mps-hata.log"
}
indir_talimat_paketle(){
local dosya _ip _talkonum
_wget="wget --quiet --no-check-certificate"
if [ ! -z "$1" ];then dosya=$1;else ryaz 31 "link parametre eksik";exit 1;fi
if [ ! -z "$2" ];then _ip=$2;else ryaz 31 "ip tipi parametresi eksik";exit 1;fi
if [ ! -z "$3" ];then _talkonum=$3;else ryaz 31 "talimatname konum parametre eksik";exit 1;fi
urlkont='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
if [[ $dosya =~ $urlkont ]];then
gdosya=`mktemp`
if [[ $_ip =~ "-6" ]]; then
ryaz 32 "talimat ipv6 linkten cekilecek"
$_wget $_ip $dosya -O $gdosya
else
ryaz 32 "talimat ipv4 linkten cekilecek"
$_wget $_ip $dosya -O $gdosya
fi
dosya=$gdosya
else
ryaz 31 "link geçersiz"
exit 1
fi
if [ ! -f $dosya ];then
ryaz 31 "$dosya talimat dosyasi yok!"
exit 1
fi
local _isim
_isim=()
_isim=`grep 'name=' $dosya | cut -d'=' -f 2`
paketisim="${_isim[0]}"
if [ ! -n "$paketisim" ]; then
ryaz 31 "paket ismi degiskeni bulunamadı!"
exit 1
fi
if [ ! -d $_talkonum/${paketisim:0:1}/$paketisim ];then
mkdir -p $_talkonum/${paketisim:0:1}/$paketisim
cp -f $dosya $_talkonum/${paketisim:0:1}/$paketisim/talimat
talimat_degisken_cevrim $_talkonum/${paketisim:0:1}/$paketisim/talimat
ryaz 32 "$paketisim talimatı hazırlandı."
else
ryaz 31 "$paketisim talimatı zaten talimatnamede var!"
fi
}
talimat_degisken_cevrim(){
_dosya=$1
if [ -f $_dosya ];then
sed -i 's/name=/isim=/g' $_dosya
sed -i 's/$name/$isim/g' $_dosya
sed -i 's/${name}/${isim}/g' $_dosya
sed -i 's/version=/surum=/g' $_dosya
sed -i 's/$version/$surum/g' $_dosya
sed -i 's/${version}/${surum}/g' $_dosya
sed -i 's/${version%.*}/${surum%.*}/g' $_dosya
sed -i 's/release=/devir=/g' $_dosya
sed -i 's/$release/$devir/g' $_dosya
sed -i 's/${release}/${devir}/g' $_dosya
sed -i 's/source=/kaynak=/g' $_dosya
sed -i 's/build()/derle()/g' $_dosya
sed -i 's/build ()/derle()/g' $_dosya
sed -i 's/Description:/Tanım:/g' $_dosya
sed -i 's/Description=/Tanım:/g' $_dosya
sed -i 's/Url=/Url:/g' $_dosya
sed -i 's/description:/Tanım:/g' $_dosya
sed -i 's/Description :/Tanım:/g' $_dosya
sed -i 's/Packager:/Paketçi:/g' $_dosya
sed -i 's/packager:/Paketçi:/g' $_dosya
sed -i 's/Packagers:/Paketçi:/g' $_dosya
sed -i 's/Packager :/Paketçi:/g' $_dosya
sed -i 's/Depends on:/Gerekler:/g' $_dosya
sed -i 's/Depends:/Gerekler:/g' $_dosya
sed -i 's/Depends on :/Gerekler:/g' $_dosya
sed -i '/Maintainer:/d' $_dosya
sed -i '/Optional:/d' $_dosya
else
ryaz 31 "ilgili talimat dosyası bulunamadı."
fi
}
talimat_olustur(){
if [ "$1" = '?' ];then
ryaz 34 "kullanım : mps -to paket_ismi"
else
local isim
isim=$1
mkdir -p $isim
tee "$isim/talimat" > /dev/null <<EOF
# Tanım: paket açıklaması
# Url: paketin ilgili web sayfası
# Paketçi: paketçi
# Gerekler:
isim=$isim
surum=1
devir=1
kaynak=()
derle() {
cd \$isim-\$surum
./autogen.sh
./configure --prefix=/usr
make
make DESTDIR=\$PKG install
}
EOF
ryaz 34 $isim "talimatı oluşturuldu."
fi
}
git_guncelle() {
kaynakdizin_kontrol
gitayar_kontrol
cd $DERLEME_KAYNAKDIZIN
#git sunucudan guncelleme
ryaz 33 "$_git_guncelleniyor"
if [ ! -d milis.git ];then
git clone $git_sunucu milis.git
rsync -av /sources/milis.git/rootfs/* /
else
cd milis.git
git pull >& $LOGDIZIN/mps-git.log
if grep -q "Already\ up-to-date" $LOGDIZIN/mps-git.log; then
ryaz 32 "$_git_guncel"
else
#ryaz 32 `cat $LOGDIZIN/mps-git.log`
ryaz 32 "$_git_guncellendi"
fi
#baslangic betiklerinin guncellenmesi
rsync -aviz -q --delete /sources/milis.git/rootfs/lib/services/* /lib/services/
fi
cd `dirname $talimatname`
ryaz 33 "$_yerel_esitleniyor"
rm -r $talimatname
mkdir -p $talimatname
rsync -aviz -q --delete $DERLEME_KAYNAKDIZIN/milis.git/talimatname/ $talimatname
rm -r `dirname $talimatname`/bin/*
rsync -aviz -q --delete $DERLEME_KAYNAKDIZIN/milis.git/bin/ `dirname $talimatname`/bin
rm -r `dirname $talimatname`/ayarlar/*
rsync -aviz -q --delete $DERLEME_KAYNAKDIZIN/milis.git/ayarlar/ `dirname $talimatname`/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
ryaz 32 "$_yerel_esitlendi"
}
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
}
op_kur(){
local mopsyol mops
mops=$1
mopsyol="~/mops/$mops"
# talimatnameye bak
if [ -d $mopsyol ]; then
$mopsyol/talimat kur
# yerelde ara
elif [ -f $PWD/"$mops" ]; then
./"$mops" kur
else
ryaz 31 "$1 mops talimatı bulunamadı!"
fi
}
op_sil(){
local mopsyol mops
mops=$1
mopsyol="~/mops/$mops"
# talimatnameye bak
if [ -d $mopsyol ]; then
$mopsyol/talimat sil
# yerelde ara
elif [ -f $PWD/"$mops" ]; then
./"$mops" sil
else
ryaz 31 "$1 mops talimatı bulunamadı!"
fi
}
servis_kur(){
cd /sources/milis.git/ayarlar/servisler
if make kur-$1
then
ryaz 32 "$1 servisi kuruldu"
else
ryaz 31 "$1 servisi kurulum olumsuz!!!"
hataloglama "$1 servisi kurulum olumsuz!!!"
fi
cd -
}
servis_sil(){
cd /sources/milis.git/ayarlar/servisler
if make sil-$1
then
ryaz 32 "$1 servisi silindi"
else
ryaz 31 "$1 servisi silme olumsuz!!!"
hataloglama "$1 servisi silme olumsuz!!!"
fi
cd -
}
servisler_kontrol(){
servisler=`ls /sources/milis.git/ayarlar/servisler/mbd/init.d`
for ser in $(ls /etc/init.d/) ; do
if [ ! -f /sources/milis.git/ayarlar/servisler/mbd/init.d/$ser ];then
printf "%12s %s\n" "$ser mbd kaydı bulunamadı!"
else
if cmp -s "/sources/milis.git/ayarlar/servisler/mbd/init.d/$ser" "$ser"
then
printf "%12s %s\n" "$ser" "mbd uyumsuz"
else
#ryaz 32 "$ser mbd +++++"
printf "%12s %s\n" "$ser" "mbd +++++"
fi
fi
done
}
talimat_bilgi(){
local _konum _apaket
_apaket=$1
_konum=$(talimat_bul $_apaket)
if [[ "$_konum" = "0" || "$_konum" = "-1" ]];then
ryaz 31 "$_apaket $_paket_tanimsiz"
exit 1
else
grep "build()" -B 12 $_konum/talimat |sed '$ d'
ryaz 32 "file://$_konum/talimat"
ryaz 32 "https://raw.githubusercontent.com/milisarge/malfs-milis/master/$(echo $_konum | cut -d'/' -f3-6)/talimat"
fi
}
sistem_kontrol(){
paketvt_kontrol
sunucu_kontrol
}
sunucu_kontrol(){
uzunluk=${#sunucular[@]}
for ((i=1;i<=$uzunluk;i++)); do
pktsunucu=${sunucular[$i-1]}
wget --no-check-certificate -q --spider "$pktsunucu/paket.vt"
if [ $? -eq 0 ]; then
ryaz 32 "$pktsunucu paket sunucu aktif"
else
ryaz 31 "$pktsunucu sunucu erişim dışı"
fi
done
}
gitayar_kontrol(){
if [ ! -f /root/.gitconfig ];then
git_ssl_iptal
git_otokimlik
fi
}
kirik_kontrol_sistem(){
local onek sonek
onek="'"
sonek="'"
for paket in `ls $VT/`
do
ryaz 33 $paket "kontrol ediliyor."
kirik_kontrol_paket $paket
ryaz 33 $paket "kontrol edildi."
done
}
kirik_kontrol_paket(){
local onek sonek
onek="'"
sonek="'"
for kdosya in `kurulum_dosya_listele $1`
do
dosya=${kdosya#$onek}
dosya=${dosya%$sonek}
#echo "${dosya}"
if [ -f $dosya ];then
if [[ $(milis-ldd -d $dosya | grep not\ found) ]] ;then
echo $kdosya
fi
fi
done
}
kurulum_dogrulama(){
for kuruland in `ls $VT`
do
if [ ! -f "$VT/$kuruland/kurulan" ]; then
ryaz 32 "$kuruland hasarlı kurulum tesbiti!"
rm -r $VT/$kuruland
paket_indir $kuruland
mps -k "$paketdepo/$kuruland"*.mps.lz
ryaz 32 "$kuruland hasarlı kurulum onarıldı."
fi
done
}
paket_icerik_dogrulama(){
local dosyayol kontpaketadi tempmpslz pidanayol
kontpaketadi="$1"
if [ -f "$paketdepo/$kontpaketadi#"*.mps.lz ];then
tempmpslz=$(mktemp)
if [ -d $2 ];then
pidanayol="$2"
tar tf "$paketdepo/$kontpaketadi#"*.mps.lz > $tempmpslz
IFS=''
while read dosyayol;do
if [ ! -f $pidanayol$dosyayol ] && [ ! -d $pidanayol$dosyayol ] && [ $dosyayol != ".MTREE" ] && [ $dosyayol != ".META" ]; then
ryaz 31 "$pidanayol$dosyayol hasarlı"
while true; do
ryaz 34 $kontpaketadi" paketi yenilensin mi?";read -p "e veya h-> " eh
case $eh in
[Ee]* ) tekrarkur="evet";agdan_kur "$kontpaketadi";break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
fi
done < $tempmpslz
else
ryaz 31 "$2 kök dizini bulunamadı!"
exit 1
fi
else
ryaz 31 "$1 paketi bulunamadı!"
exit 1
fi
}
kurulum_dogrulama_icerik_tum(){
ryaz 33 "paket veritabanı yedekleniyor"
tarihce_yap
for kurulanpak in `ls $VT`
do
if [ -f "$VT/$kurulanpak/kurulan" ]; then
kurulum_dogrulama_icerik $kurulanpak
ryaz 32 "$kurulanpak kurulum icerik onarıldı."
fi
done
}
chr_yordam() {
[ "$1" -lt 256 ] || return 1
printf "\\$(printf '%03o' "$1")"
}
ord_yordam() {
LC_CTYPE=C printf '%d' "'$1"
}
kurulum_dogrulama_icerik(){
paketadi="$1"
onar="hayir"
#echo $VT
#tarihce_yap
ryaz 33 "$paketadi içeriği kontrol ediliyor."
if [ -f "$VT/$paketadi/kurulan" ]; then
ilksatir=`head -n 1 $VT/$paketadi/kurulan`
if [[ `echo ${ilksatir}` =~ ^ ]] ; then
ryaz 32 "temel sistem paket kurulan hatası düzeltildi!"
sed -i 's//'\''\//;s//'\''/' $VT/$paketadi/kurulan
fi
#for dosyayol in $(cat $VT/$paketadi/kurulan);do
while read dosyayol; do
#for dosyayol in $(<$VT/$paketadi/kurulan);do
dosyayol=$(echo $dosyayol | sed 's/^.\(.*\).$/\1/')
netdosyayol="${dosyayol:1:${#dosyayol}-1}"
if [ ! -f $dosyayol ] && [ ! -d $dosyayol ] ; then
ryaz 31 "$dosyayol hasarlı"
onar="evet"
fi
done < $VT/$paketadi/kurulan
if [ $onar = "evet" ];then
ryaz 34 "$paketadi hasarlı dosya barındırıyor,düzeltilsin mi?";read -p "e veya h-> " eh
case $eh in
[Ee]* ) tekrarkur="evet";agdan_kur "$paketadi";;
[Hh]* ) ryaz 31 "$paketadi pas geçildi.";;
* ) echo "e veya h";;
esac
fi
ryaz 32 "$paketadi kurulum doğrulama tamamlandı."
elif [ -d "$VT/$paketadi" ]; then
cp -rf $VT $VT.yedek
ryaz 31 "$paketadi hasarlı kurulum tesbiti!"
#onarma
rm -r $VT/$paketadi
paket_indir $paketadi
mps -k "$paketdepo/$paketadi#"*.mps.lz
ryaz 32 "$paketadi hasarlı kurulum onarıldı."
else
ryaz 31 "$paketadi $_paket_kurulu_degil"
fi
}
tamir_temel_kurulan(){
if [ ! -d $VT ] ; then
ryaz 31 "paket kurulum vt bulunamadı!"
exit 1
fi
for paketadi in `ls $VT`
do
sed -i 's//'\''\//;s//'\''/' $VT/$paketadi/kurulan
done
}
depo_paketler_liste(){
ls $paketdepo*.mps.lz
}
depo_paketler_sil(){
while true; do
pktsay="0"
[[ $(ls $paketdepo*.mps.lz) ]] && pktsay=$(ls $paketdepo/*.mps.lz | wc -l)
ryaz 34 "$paketdepo altındaki $pktsay paket silinecek?";read -p "e veya h-> " eh
case $eh in
[Ee]* ) rm $paketdepo/*.mps.lz;ryaz 32 "$paketdepo paketler temizlendi."; break;;
[Hh]* ) break;;
* ) echo "e veya h";;
esac
done
}
kurulum_dosya_listele(){
cat "$VT/$1/kurulan"
}
# bir dosyanın kurulmuş hangi pakette olduğunu bulur.
kurulan_dosya_bul(){
grep -rli "$1" "$VT/" | cut -d "/" -f6
}
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."
}
paketvt_guncelle(){
uzunluk=${#sunucular[@]}
#for snc in "${sunucular[@]}"
for ((i=1;i<=$uzunluk;i++)); do
pktsunucu=${sunucular[$i-1]}
pkvt=""
if [ $i = 1 ];then
pktvt="paket.vt"
else
pktvt="paket${i-1}.vt"
fi
wget --no-check-certificate -q --spider "$pktsunucu""paket.vt"
if [ $? -eq 0 ]; then
ryaz 32 $pktsunucu
ryaz 32 "$_paketvt_guncelleniyor" "$paketdepo""$pktvt"
if [ -f "$paketdepo""$pktvt" ];then
mv "$paketdepo""$pktvt" "$paketdepo""$pktvt.eski"
fi
wget --no-check-certificate -q --show-progress -P "$paketdepo" "$pktsunucu""paket.vt" -O "$paketdepo""$pktvt"
#rm /tmp/paket.vt*
else
ryaz 31 "$pktsunucu paket veritabanı güncelleme olumsuz."
hataloglama "paket veritabanı güncelleme olumsuz."
fi
done
}
paket_indir(){
if [ -f "$paketdepo""paket.vt" ];then
local pkt
uzunluk=${#sunucular[@]}
#paketin paketin sunucularında aranaması,buldugu sunucudan indirmesi
for ((i=1;i<=$uzunluk;i++)); do
pktsunucu=${sunucular[$i-1]}
pkvt=""
if [ $i = 1 ];then
pktvt="paket.vt"
else
pktvt="paket${i-1}.vt"
fi
pkt=`cat "$paketdepo$pktvt" | grep "^$1 " | cut -d' ' -f3`
#ryaz 32 "$1 paketi $pktsunucu altında aranıyor"
if [ $pkt ];then
#ryaz 32 "$1 paketi $pktsunucu altında bulundu"
ekontdeg=`cat "$paketdepo$pktvt" | grep "^$1 " | cut -d' ' -f2`
cpaket="${pkt/'#'/'%23'}"
#paketin sunucuda varlık kontrolu
wget -q --spider "$pktsunucu$cpaket"
if [ $? -eq 0 ]; then
wget --no-check-certificate -nc -q --show-progress -P "$paketdepo" "$pktsunucu$cpaket"
if [[ "$?" != 0 ]]; then
ryaz 31 "indirme hatalı"
hataloglama "indirme hatalı"
else
mkontdeg=`sha1sum "$paketdepo$pkt" | cut -d' ' -f1`
if [ "$ekontdeg" != "$mkontdeg" ];then
ryaz 31 "$_shasum_uyumsuzluk,paket tekrar indiriliyor."
hataloglama "sha1sum uyusmaslik tespit edildi,paket tekrar indiriliyor."
rm -f "$paketdepo$pkt"
paket_indir "$1"
#else
#ryaz 32 "$_zaten $1 $_paket_onbellek_depoda_var"
fi
fi
else
ryaz 31 "$1 paketi bulunamadı $pktsunucu dan silinmiş olmalı!"
fi
else
ryaz 31 "$pktsunucu $1 paketi bulunmuyor!"
fi
done
else
ryaz 31 "$paketdepo altında paket.vt dosyanız yok.Güncelleme yapınız!"
fi
}
yerelden_kur(){
local silme
pkontrol=`basename $1 | grep -w "mps.lz"`
if [ ! -z "$pkontrol" -a "$pkontrol" != "" ]; then
paketad=`echo "$1" | cut -d'#' -f1`
kkont=`kurulu_kontrol "$paketad"`
if [ "$kkont" = "degil" ];then
icerik_ekle "$1"
elif [ "$kkont" = "kurulu" ];then
if [ "$tekrarkur" = "hayir" ];then
while true; do
ryaz 31 "$1 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 "$1"
fi
else
icerik_ekle "$1"
#while true; do
#ryaz 31 "$1 paketi talimatname dışı.Yine de kurulsun mu? (kokdizin=$kokdizin) "
#read -p "e veya h -> " eh
#case $eh in
# [Ee]* ) icerik_ekle "$1"; break;;
# [Hh]* ) break;;
# * ) echo "e veya h";;
#esac
#done
fi
else
ryaz 31 "yerelde mps paketi bulunamadı."
fi
}
agdan_kur(){
local kontroldeg
kkont=`kurulu_kontrol "$1"`
if [ "$kkont" = "degil" ] || [ "$tekrarkur" = "evet" ];then
paket_indir "$1"
if [ $(find $paketdepo -name $1#* | head -1) ];then
if [ -f $(ls -1t "$paketdepo$1#"* | head -1) ];then
if [ "$kurulum_onay" = "evet" ];then
if [ "$tekrarkur" = "evet" ];then
paket_sil "$1" "evet"
fi
#depo/paketler altında birden fazla sürüm kontrolü yapılır,güncel olan seçilir.
surumler=$(ls "$paketdepo$1#"* | wc -l)
if [ $surumler = 1 ];then
icerik_ekle $(ls "$paketdepo$1#"*)
elif [ $surumler -gt 1 ];then
ryaz 31 "$1 paketinin birden fazla sürümü var!"
kurulacak_guncel_paket=$(ls -1t "$paketdepo$1#"* | head -1)
ryaz 32 "$kurulacak_guncel_paket sürümü kuruluyor"
icerik_ekle $kurulacak_guncel_paket
fi
fi
else
ryaz 31 "$1 indirme hatası"
fi
fi
elif [ "$kkont" = "kurulu" ];then
#ryaz 32 "$1 paketi zaten kurulu!"
printf "."
else
ryaz 31 "tanımsız paket veya tekrar kurulum iptali var!"
fi
}
ayarlar() {
while [ "$1" ]; do
case $1 in
### Milis_Paket_Sistemi_Yardim
### --------------------------
### mps -i paketismi = sadece paketi indirir,paket kurulmaz.
-i|--indir)
kurulum_onay="olumsuz"
paket_indir "$2"
exit 0 ;;
### mps -ik paketismi = ilgili paketi indirirve kurar.
-ik|--inku)
if [ "$3" == "-kok" ] && [ -d "$4" ]; then
kokdizin="$4"
fi
agdan_kur "$2" ;;
### mps -ikz|yekur paketismi = ilgili indirip tekrardan kurar,kurulu olmasına bakılmaz.
-ikz|yekur)
tekrarkur="evet"
agdan_kur "$2" ;;
### mps -k paketismi..mps.lz = yerel dizindeki paketi kurar.
-k)
if [ "$3" == "-kok" ] && [ -d "$4" ]; then
kokdizin="$4"
tekrarkur="evet"
fi
yerelden_kur "$2" ;;
### mps sil|-s paketismi = ilgili paketi onaylı kaldırır.
-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"
exit 0 ;;
### mps zorsil|-sz paketismi = ilgili paketi onaysız kaldırır.
-sz|zorsil)
paket_sil "$2" "evet"
exit 0 ;;
### mps gsil paketismi = ilgili paketi güvenli(ters bağımlılıklarına da bakarak) kaldırır.
gsil)
paket_sil "$2" "hayir" "evet"
exit 0 ;;
### mps -S paketismi = ilgili paketi altbağımlılıklarını da sorarak kaldırır.
-S)
paket_sil_gerekli "$2"
exit 0 ;;
### mps -Sz paketismi = ilgili paketi altbağımlılıklarını da sormadan sırayla kaldırır.
-Sz)
paket_sil_gerekli "$2" "oto"
exit 0 ;;
### mps ara aranan = paket isimleri ve açıklamalarında anahtar kelime arar.
-pa|ara)
paket_ara "$2"
exit 0 ;;
### mps bul aranan = talimat dosyaları içinde anahtar kelimeyi arar.
bul)
kelime_bul "$2"
exit 0 ;;
### mps -d paketisimi = sadece paketi bağımlıksız derler.Genelde bağımlılığı olmayan paketler için kullanılır.
-d|--pkde)
zorla_derle="yok"
kurulum_onay="olumsuz"
paket_derle "$2"
exit 0 ;;
### mps -zd paketismi = Pake kurulu olsa bile derleme yapılır.Bağımlıksız derleme için kullanılır.
-zd|--pkzde)
zorla_derle="evet"
kurulum_onay="olumsuz"
paket_derle "$2"
exit 0 ;;
### mps odkp paketismi = bir paketi bağımlılık zinciri çıkarıp gereklileri önce kurar gerekli olanları derler,paketler ve kurar.
odkp)
if [ -d "$talimatname/temel/$2" ] ; then
ryaz 31 "temel paket için odkp kullanılamaz!"
exit 1
fi
oto_derle_kur_paketle "$2"
exit 0 ;;
-dk|--pkdk)
paket_derle "$2" ;;
### mps -derlist liste = verilen liste dosyasındaki paketleri derler.Alt alta yazılı olmalıdır.
-derlist)
paket_derle_liste "$2" ;;
### mps derle paketismi = paketismi için bağımlılık zinciri çıkarıp gerekli tüm paketleri derler,paketler ve kurar.
derle)
paket_derle_kur "$2"
exit 0 ;;
-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" ;;
### mps kurul liste = verilen liste dosyasındaki paketleri kurar.Alt alta yazılı olmalıdır.
kurul)
if [ -f $PWD/mps-liste ]; then
paket_inkur_liste mps-liste
else
paket_inkur_liste "$2"
fi ;;
-kur)
paket_inkur_oto "$2" ;;
### mps gkur paketismi = git-paketvt günceller ve yerelde mps.lz varsa yereldekini yoksa sunucudan paketi indirip kurar.
gkur)
git_guncelle && paketvt_guncelle && paket_inkur_oto "$2" ;;
### mps kur paketismi = yerelde mps.lz varsa yereldekini yoksa sunucudan paketi indirip kurar.
kur)
if [[ "$2" == "py-"* ]]; then
pypaket=`echo "$2" | cut -d'-' -f 2`
echo $pypaket "pip2 ile kurulacak"
pip install $pypaket
exit 0
fi
if [[ "$2" == "py3-"* ]]; then
pypaket=`echo "$2" | cut -d'-' -f 2`
echo $pypaket "pip3 ile kurulacak"
pip3 install $pypaket
exit 0
fi
if [[ "$2" == *"mps.lz"* ]]; then
if [ "$3" == "-kok" ] && [ -d "$4" ]; then
kokdizin="$4"
tekrarkur="evet"
fi
yerelden_kur "$2"
else
paket_inkur_oto "$2"
fi
exit 0 ;;
### mps kaynak paketismi = ilgili paketin kaynak kodunu indirir.
kaynak)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
exit 1
fi
kaynak_kod_indir "$2"
exit 0 ;;
# özel git projesi kurmak için
gitkur)
git_proje_kur "$2" ;;
# otomatik proje sistemi
# özel git projesi kurmak için
opk)
op_kur "$2" ;;
# özel git projesi silmek için
ops)
op_sil "$2" ;;
### mps serkur paketismi = ilgili paketin servisini kurar
serkur)
servis_kur "$2"
exit 0 ;;
### mps sersil paketismi = ilgili paketin servisini siler
sersil)
servis_sil "$2"
exit 0 ;;
### mps serkon paketismi = servislerin değişmemezlik kontrolünü yapar.
serkon)
servisler_kontrol
exit 0 ;;
### mps kurkos paketismi = ilgili paketin kurulumdan sonraki çalışması gereken betiğini çalıştırır.
kurkos)
local pkt
pkt=$(talimat_bul $2)
if [ -f $pkt/$2.kur-kos ];then
bash $pkt/$2.kur-kos
else
ryaz 31 "$2 kur-kos yok!"
hataloglama "$2 kur-kos yok!"
exit 1
fi;;
### mps koskur paketismi = ilgili paketin kurulumdan önceki çalışması gereken betiğini çalıştırır.
koskur)
local pkt
pkt=$(talimat_bul $2)
if [ -f $pkt/$2.kos-kur ];then
bash $pkt/$2.kos-kur
else
ryaz 31 "$2 kos-kur yok!"
hataloglama "$2 kos-kur yok!"
exit 1
fi ;;
### mps silkos paketismi = ilgili paketin silindikten sonraki çalışması gereken betiğini çalıştırır.
silkos)
local pkt
pkt=$(talimat_bul $2)
if [ -f $pkt/$2.sil-kos ];then
bash $pkt/$2.sil-kos
else
ryaz 31 "$2 sil-kos yok!"
hataloglama "$2 sil-kos yok!"
exit 1
fi ;;
### mps kossil paketismi = ilgili paketin silindikten önceki çalışması gereken betiğini çalıştırır.
kossil)
local pkt
pkt=$(talimat_bul $2)
if [ -f $pkt/$2.kos-sil ];then
bash $pkt/$2.kos-sil
else
ryaz 31 "$2 kos-sil yok!"
hataloglama "$2 kos-sil yok!"
exit 1
fi ;;
### mps -kdl paketismi = ilgili paketin sistemdeki kurulmuş olması gereken dosyalarını gösterir.
-kdl)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
hataloglama "(-kdl) paket ismi eksik"
exit 1
fi
kurulum_dosya_listele "$2"
exit 0 ;;
### mps -kkp paketismi = ilgili paketin çalışması için eksik olan dosyaları tespit eder.
-kkp)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
hataloglama "(-kkp) paket ismi eksik"
exit 1
fi
kirik_kontrol_paket "$2"
exit 0 ;;
### mps kirma paketismi = ilgili paketin sistemde kırdığı paketler tespit edilir.
kirma)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
hataloglama "(kirma) paket ismi eksik"
exit 1
fi
kirik_ters_bagimli_bilgi "$2"
exit 0 ;;
### mps -kks . = sistemde kurulu tüm paketlerin kırık kontrolünü yapar.Eksik dosyaları tespit eder.
-kks)
kirik_kontrol_sistem
exit 0 ;;
-pak|--paketle)
if [ ! "$2" ]; then
ryaz 31 "paketlenecek dizin ismi eksik"
hataloglama "paketlenecek dizin ismi eksik"
exit 1
fi
yeniden_paketle "$2"
exit 0 ;;
-psk|--paksiskur)
if [ ! "$2" ]; then
ryaz 31 "paket liste yok"
hataloglama "paket liste yok"
exit 1
fi
if [ ! "$3" ]; then
ryaz 31 "hedef dizin yok"
hataloglama "hedef dizin yok"
exit 1
fi
sistem_kur "$2" "$3"
exit 0 ;;
-po)
pvt_olustur ;;
-os|--pkos)
if [ ! "$2" ]; then
ryaz 31 "silme listesi yok"
hataloglama "silme listesi yok"
exit 1
fi
paket_sil_oto "$2" ;;
### mps liste . = sistemde kurulu olan paket listesini verir.
-kl|liste)
ls $VT ;;
### mps paketler . = paket deposundaki paket listesini verir.
-ptl|paketler)
paket_liste "$2"
exit 0 ;;
### mps -dly paketismi = ilgili paketin genel ve tüm bağımlılık listesini verir,oluşturur.
-dly|dliste)
derleme_listyap "$2"
exit 0 ;;
### mps -kly paketismi = ilgili paketin ve kurulması gereken altgereklerini verir,oluştur.
-kly)
kurulum_listyap "$2" ;;
### mps -ykp paketismi = ilgili paketin kurulmak istenirse,kurulacak yeni paketleri listeler.
-ykp)
yeni_kurulacak_paketler "$2"
exit 0 ;;
#sunucu bilgisi alma
-sun2|sunucu)
ryaz 32 $sunucu ;;
### mps sunucular . = paket sunucularını verir.
-sun|sunucular)
ryaz 32 ${sunucular[@]} ;;
sun)
if [ ! "$2" ]; then
ryaz 31 "sunucu bilgi eksik"
hataloglama "sunucu bilgi eksik"
exit 1
fi
sunucu_ayarla "$2" ;;
-bb|bagbil)
bagimli_bilgi "$2" | column -t;;
-bbdog|bdogrula)
bagimli_bilgi "$2" "dogrula";;
-bbd)
bagimli_bilgi_dosyala "$2" ;;
### mps -tb talimatismi = ilgili talimata gerek duyan(ters-gerekler) talimatları listeler.
-tb|tersbag)
ters_bagimli_bilgi "$2"
exit 0;;
-tbk)
ters_bagimli_kontrol "$2" ;;
### mps pka paketismi = ilgili paketin depo-gitdepo uyumluluğunu kontrol eder.
pka)
paket_analiz "$2"
exit 0;;
### mps pda paketdepo = paketlerin olduğu dizindeki paketlerin depo-gitdepo uyumluluğunu kontrol eder.
pda)
paketdepo_analiz "$2"
exit 0 ;;
### mps tbilgi paketismi = ilgili paketin talimat bilgilerini verir.
tbilgi)
talimat_bilgi "$2"
exit 0 ;;
### mps -b paketismi = ilgili paketin kurulum bilgilerini verir.
-b)
if [ $2 ];then
touch "/tmp/mps_paket_bilgi_$2"
paket_bilgi "$2" "$3" | tee "/tmp/mps_paket_bilgi_$2"
else
ryaz 31 "paket ismi eksik"
exit 1
fi
exit 0 ;;
### mps bilgi paketismi = ilgili paketin talimat ve kurulum bilgilerini verir.
bilgi)
paket_bilgi "$2"
talimat_bilgi "$2"
exit 0 ;;
-to)
if [ ! "$2" ]; then
ryaz 31 "talimat ismi eksik"
hataloglama "talimat ismi eksik"
exit 1
fi
talimat_olustur "$2"
exit 0 ;;
### mps log yyyy-aa-gg olay = mps.log verisi çekmek için (ör: mps log 2017-01-01 silindi)
log)
local logyardim
logyardim="mps log zaman durum (ör: mps log 2017-01-01 silindi)"
if [ ! "$2" ]; then
ryaz 31 "zaman parametresi eksik"
hataloglama "zaman parametresi eksik"
ryaz 32 $logyardim
exit 1
fi
if [ ! "$3" ]; then
ryaz 31 "durum parametresi eksik"
hataloglama "durum parametresi eksik"
ryaz 32 $logyardim
exit 1
fi
log_analiz "$2" "$3" ;;
### mps guncelle . = paket veritabanı ve git güncellemesi-talimatname bilgilerini günceller.
guncelle)
mps -GG && mps -G
exit 0 ;;
### mps -GG . = git güncellemelerini ve talimatname bilgilerini günceller.
-Ggit|-GG)
git_guncelle
exit 0 ;;
### mps -G . = paket veritabanı bilgilerini günceller.
-G|--pvtg)
paketvt_guncelle
mps -kudo
exit 0 ;;
### mps tespit . = tüm sistemin güncellemesi için güncellenecek paket listesini gösterir.
tespit)
guncelleme_tespit
exit 0 ;;
### mps yukselt . = tüm sistemin güncellemesini gerçekleştirir.
-GS|yukselt)
sistem_guncelle
exit 0 ;;
#tekil temel paket guncelleme-single base package updating
-tg)
paket_sil "$2" "evet" && mps -ik $2 ;;
### mps -g paketismi = ilgili paketi tekil günceller.
-g|--pkgu)
git_guncelle && paketvt_guncelle
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
hataloglama "paket ismi eksik"
exit 1
fi
local durum
durum=`kurulu_kontrol "$2"`
if [ "$durum" = "kurulu" ]; then
paket_guncelle "$2"
elif [ "$durum" = "degil" ]; then
ryaz 31 "$2 $_paket_kurulu_degil"
hataloglama "$2 $_paket_kurulu_degil"
else
ryaz 31 "$2 $_paket_tanimsiz"
hataloglama "$_paket_tanimsiz"
fi
exit 0 ;;
#bagimliliklariyla beraber paket guncelleme-package updating with depencies
-go|--pkgo)
if [ ! "$2" ]; then
ryaz 31 "$_paket_adi_gerekli"
exit 1
fi
paket_guncelle_oto "$2";;
### mps -kk paketismi = ilgili paketin kurulu olma durumunu gösterir.
-kk|--kurulu-kontrol)
if [ ! "$2" ]; then
ryaz 31 "$_paket_adi_gerekli"
exit 1
fi
ryaz 31 `kurulu_kontrol "$2"`
exit 0 ;;
-kudo)
kurulum_dogrulama
exit 0 ;;
-kdi|dogrula)
if [ ! "$2" ]; then
ryaz 31 "$_paket_adi_gerekli"
exit 1
fi
kurulum_dogrulama_icerik "$2" ;;
-pid|pdogrula)
kokdzn=""
if [ ! "$2" ]; then
ryaz 31 "$_paket_adi_gerekli"
exit 1
elif [ ! "$3" ]; then
kokdzn="/"
else
kokdzn="$3"
fi
paket_icerik_dogrulama "$2" "$kokdzn";;
-kdit|tumdogrula)
kurulum_dogrulama_icerik_tum
exit 0 ;;
-kdk)
etkilenen_kurtar $2 ;;
-suko)
sunucu_kontrol ;;
### mps -pot . = talimatı olup ta paketi henüz depoda yer almayan talimatları listeler.
-pot)
paketsiz_talimatlar
exit 0 ;;
-dpl|deplist)
depo_paketler_liste
exit 0 ;;
-dps|depsil)
depo_paketler_sil
exit 0 ;;
### mps link url_adres = verilen url adresindeki talimatı ektalimatname/topluluk altına inidirir.
link)
mkdir -p $ektalimatname/topluluk
indir_talimat_paketle $2 "-4" "$ektalimatname/topluluk"
exit 0 ;;
ti)
indir_talimat_paketle $2 "-4" "$talimatname/genel"
exit 0 ;;
-cf|--config-file)
if [ ! "$2" ]; then
echo "ayardosyası gerek $1"
exit 1
fi
ayar_dosyasi="$2"
shift ;;
### mps -hp aranan = ilgili aranan ifadenin hangi paketlerde olabileceğini listeler.
-hp)
if [ ! "$2" ]; then
ryaz 31 "paket ismi eksik"
exit 1
fi
kurulan_dosya_bul "$2"
exit 0 ;;
### mps tgs talimat = ilgili talimatın kaynak kodunun yeni sürümü olup olmadığını kontrol eder.
tgs)
if [ ! "$2" ]; then
ryaz 31 "talimat ismi eksik"
exit 1
fi
talimat_surum_takip "$2"
exit 0 ;;
-tro)
tarihce_yap
exit 0 ;;
-trot)
temel_tarihce="evet"
tarihce_yap
exit 0 ;;
-try)
if [ ! "$2" ]; then
ryaz 31 "tarihce dosyasi eksik $1"
hataloglama "tarihce dosyasi eksik $1"
exit 1
fi
tarihce_yukle "$2"
shift ;;
-trl)
tarihce_liste ;;
### mps tdc talimat_dosyası = ilgili talimat dosyasının Türkçe değişken çevrimii yapar.
tdc)
talimat_degisken_cevrim $2
exit 0 ;;
-tamir-tk)
tamir_temel_kurulan ;;
dos)
tarihce_yukle "temel"
exit 0 ;;
-trs)
if [ ! "$2" ]; then
ryaz 31 "parametre eksik $1"
hataloglama "parametre eksik $1"
exit 1
fi
tarihce_sil "$2"
shift ;;
### mps -v . = mps sürüm bilgilerini gösterir.
-v)
ryaz 33 "$betikad $versiyon $iletisim"
exit 0 ;;
-y|-h|yardim)
yardim_icerik
exit 0 ;;
*)
ryaz 31 "Geçersiz Parametre! --> mps yardim "
exit 0 ;;
esac
shift
done
}
yardim_icerik(){
cat /root/bin/mps | sed -e 's/^[ \t]*//' | sed -n '/^###/p' | sed '/ /s/^###//g' | awk '{split($0,a,"="); printf "%-6s %-13s %-18s %-40s \n",$1,$2,$3,a[2]}'
}
ana(){
if [ `id -u` = 0 ] ; then
ayarlar "$@"
else
sudo mps "$@"
fi
}
ana "$@"
#31 kirmizi
#32 yesil
#33 sari
#34 mavi
#34 mor