From 5d32fc3ee0373ef61da08b73552296ed22e0889a Mon Sep 17 00:00:00 2001 From: milisbir Date: Fri, 26 Jan 2018 04:42:01 +0200 Subject: [PATCH] mps-dly --- bin/mps | 169 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 98 insertions(+), 71 deletions(-) diff --git a/bin/mps b/bin/mps index adc50be96..15e49b1de 100755 --- a/bin/mps +++ b/bin/mps @@ -1,6 +1,6 @@ #!/bin/bash -versiyon="1.1.8 Milis Paket Sistemi" +versiyon="1.1.9 Milis Paket Sistemi" iletisim="milisarge@gmail.com" betikad=${0##*/} @@ -129,8 +129,8 @@ hata_olustu(){ "_talimatsiz_dizin") _mesaj="$_talimatsiz_dizin" ;; - "_paket_adi_gerekli") - _mesaj="$_paket_adi_gerekli" + "_talimat_bulunamadi") + _mesaj="$_talimat_bulunamadi" ;; *) _mesaj="böyle bir hata yok" @@ -735,10 +735,13 @@ gerekleri_dosyala(){ gerekleri_listele(){ derleme_listyap_kontrol - local _paket _konum + local _paket _konum _pkvt _konum="$talimatname $ektalimatname" [ $1 ] && _paket=$1 || hata_olustu "_talimat_bulunamadi" - echo $_paket | awk -v arama_konum="$_konum" ''' + _pkvt="" + [ "$2" = "--kurulu_atla" ] && _pkvt="$VT" + echo $_paket | awk -v arama_konum="$_konum" -v PKVT="$_pkvt" \ + ''' function gerekbul(paket,gerekler) { if (ISLENDI[paket]) { return @@ -752,8 +755,12 @@ gerekleri_listele(){ if ( i > 1 && length(gerekler[i]) > 0 ){ ara=gerekler[i] konum=talimat_bul(ara); + if (konum != ""){ - gerekbul(konum); + if (length(PKVT) > 0 ){ + (kk(PKVT "/" ara))? yaz("."):gerekbul(konum) + } + else {gerekbul(konum)} } } } @@ -766,7 +773,15 @@ gerekleri_listele(){ system("echo $(basename $(dirname " paket ")) >> gerek.liste") close(paket) } - + # kurulu kontrol + function kk(p) { + return !system("test -d \""p"\""); + } + + function yaz(_param){ + printf _param + } + function talimat_bul(ara){ cmd= "find " arama_konum " -name " ara " | head -n1 " #print cmd @@ -829,7 +844,7 @@ kly_yeni(){ fi } -derleme_listyap(){ +derleme_listyap_eski(){ ryaz 32 "$1 $_gerekler_belirleniyor" dlyD="" dlymap="" @@ -838,6 +853,11 @@ derleme_listyap(){ echo "${dlyD}" } +derleme_listyap(){ + ryaz 32 "$1 $_gerekler_belirleniyor" + gerekleri_listele $@ +} + kurulum_listyap(){ klyD="" klymap="" @@ -967,17 +987,18 @@ paket_inkur_oto(){ local konum anakonum kurdurum _agdan_kur_onay derleme_listyap_kontrol - kurulum_listyap "$1" | grep "bulunamadı" - local kpkt - for paketkonum in `cat gerek.konum.liste`;do + #kurulum_listyap "$1" | grep "bulunamadı" + derleme_listyap $1 "--kurulu_atla" + + for kpkt 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 # depo ve talimatname sürüm kontrolü - _gncdurum=$(surum_karsilastir ${kpkt}) + _gncdurum="" + [ "$(kurulu_kontrol ${kpkt})" = "kurulu" ] && _gncdurum=$(surum_karsilastir ${kpkt}) _agdan_kur_onay="x" if [ "${_gncdurum}" == "degil" ];then _agdan_kur_onay="h" @@ -988,9 +1009,10 @@ paket_inkur_oto(){ $_yaz_uyari "$kpkt talimat eşitsizliğinden atlandı." fi [ $_agdan_kur_onay == "x" ] && exit 1 - [ $_agdan_kur_onay == "e" ] && agdan_kur "$kpkt" "$cikti" + [ $_agdan_kur_onay == "e" ] && agdan_kur "$kpkt" "$_cikti" + # ek talimatlar için sürüm karşılaştırma henüz yok.farklı depolara bakılarak sağlanacak elif [ -f "$ekkonum/talimat" ];then - agdan_kur "$kpkt" "$cikti" + agdan_kur "$kpkt" "$_cikti" else $_yaz_uyari "$kpkt talimatı bulunamadı!" fi @@ -1022,29 +1044,40 @@ paket_sil_oto_onayli(){ done } -paket_sil_gerekli(){ - local _onay _tbs - if [ -d $VT/$1 ];then - bagimli_bilgi_dosyala "$1" - rm -f /tmp/$1.silinecekler - touch /tmp/$1.silinecekler - _tbsnc=$(ters_bagimli_bilgi $1 "kurulu") - _tbs=$(echo $_tbsnc | wc -l) +paket_sil_gereklerle(){ + local _onay _tbs _tbsnc _paket _ustgerek + [ $1 ] && _paket="$1" || hata_olustu "_paket_adi_gerekli" + if [ -d $VT/${_paket} ];then + bagimli_bilgi_dosyala "${_paket}" + rm -f /tmp/${_paket}.silinecekler + touch /tmp/${_paket}.silinecekler + _tbsnc=$(ters_bagimli_bilgi ${_paket} "kurulu") + if [ -z "${_tbsnc}" ];then _tbs=0 + else _tbs=$(echo "$_tbsnc" | wc -l) + fi if [ $_tbs -gt 0 ];then - ryaz 31 "$1 silinemez." - echo "ters gerekleri: $_tbsnc" + ryaz 31 "${_paket} silinemez." + echo "ters gerekleri:";echo "$_tbsnc" exit 1 fi - for pkaltb in $(tac /tmp/$1.gerekler.liste);do + for pkaltb in $(cat /tmp/${_paket}.gerekler.liste);do if [ -d $VT/$pkaltb ];then - tbsonuc="" - tbsonuc=$(ters_bagimli_bilgi $pkaltb "kurulu") - if [ $(echo $tbsonuc | wc -l) -eq 0 ];then + _tbsnc="" + _tbsnc=$(ters_bagimli_bilgi $pkaltb "kurulu") + if [ -z "${_tbsnc}" ];then _tbs=0 + else _tbs=$(echo "$_tbsnc" | wc -l) + fi + echo "$pkaltb >" + if [ -f ${pkaltb}.tbk.txt ];then + _ustgerek=$(cat /tmp/${_paket}.silinecekler | grep -f ${pkaltb}.tbk.txt) + [ ${_ustgerek} ] && _tbs=0 + fi + if [ $_tbs -eq 0 ];then ryaz 32 "$pkaltb silinebilir." - echo "$pkaltb" >> /tmp/$1.silinecekler - elif [ "$tbsonuc" = "$1" ];then + echo "$pkaltb" >> /tmp/${_paket}.silinecekler + elif [ "$_tbsnc" = "${_paket}" ];then ryaz 32 "$pkaltb silinebilir." - echo "$pkaltb" >> /tmp/$1.silinecekler + echo "$pkaltb" >> /tmp/${_paket}.silinecekler else ryaz 31 "$pkaltb silinemez." echo "ters gerekleri: $tbsonuc" @@ -1056,14 +1089,14 @@ paket_sil_gerekli(){ _onay="onay" # otomatik onay verme durum kontrolü if [ ! -z "$2" ];then _onay="$2";fi - #cat /tmp/$1.silinecekler + #cat /tmp/${_paket}.silinecekler if [ $_onay = "oto" ];then - paket_sil_oto "/tmp/$1.silinecekler" + paket_sil_oto "/tmp/${_paket}.silinecekler" else - paket_sil_oto_onayli "/tmp/$1.silinecekler" + paket_sil_oto_onayli "/tmp/${_paket}.silinecekler" fi else - ryaz 32 "$_zaten $1 $_paket_kurulu_degil" + ryaz 32 "$_zaten ${_paket} $_paket_kurulu_degil" exit 1 fi } @@ -1101,7 +1134,7 @@ paket_guncelle_oto(){ paket_guncelle "$kpkt" fi done - rm gerek.konum.liste gerek.liste + listeleri_temizle } dongu_gosterge(){ @@ -1530,7 +1563,7 @@ ters_bagimli_bilgi(){ local gtbpaket _sadece_kurulu _sadece_kurulu="hepsi" gtbpaket=$1 - if [ ! -z "$2" ];then _sadece_kurulu="$2";fi + [ "$2" ] && _sadece_kurulu="$2" 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 ; @@ -1647,19 +1680,6 @@ silme_etkilenen_kontrol(){ done } -# bir paket ile kurulacak yeni paketlerin listesini verir. -# comm yerine diff li çözüm olacak -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 gerek.liste) - #diff --changed-group-format='***%>' --unchanged-group-format='' --new-group-format='+++%>' \ - #/tmp/mevcut_kurulu.liste gerek.liste | cut -d' ' -f1 | sort -d - [ -f gerek.liste ] && rm -rf gerek.liste - [ -f gerek.konum.liste ] && rm -rf gerek.konum.liste -} - # güncellemelerin alınması talimatname üzerinden guncellemeler(){ #diff --changed-group-format='***%>' --unchanged-group-format='' --new-group-format='+++%>' \ @@ -2542,9 +2562,15 @@ yuzdelik_filtre () done } +listeleri_temizle(){ + [ -f gerek.liste ] && rm -rf gerek.liste + [ -f gerek.konum.liste ] && rm -rf gerek.konum.liste +} + paket_indir(){ if [ -f "$paketdepo""paket.vt" ];then - local pkt cikti _yaz _yaz_uyari + local _ipaket pkt cikti _yaz _yaz_uyari + [ $1 ] && _ipaket="$1" || hata_olustu "_paket_adi_gerekli" cikti="--renkli" if [ "$2" ]; then cikti="$2" @@ -2567,20 +2593,20 @@ paket_indir(){ 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" + pkt=`cat "$paketdepo$pktvt" | grep "^${_ipaket} " | cut -d' ' -f3` + #ryaz 32 "${_ipaket} 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` + #ryaz 32 "${_ipaket} paketi $pktsunucu altında bulundu" + ekontdeg=`cat "$paketdepo$pktvt" | grep "^${_ipaket} " | cut -d' ' -f2` cpaket="${pkt/'#'/'%23'}" #paketin sunucuda varlık kontrolu wget -q --spider "$pktsunucu$cpaket" if [ $? -eq 0 ]; then - $_yaz "$1 $_indiriliyor" + $_yaz "${_ipaket} $_indiriliyor" if [ "$cikti" == "--normal" ];then - wget --progress=dot:force -nc --no-check-certificate -P "$paketdepo" "$pktsunucu$cpaket" 2>&1 | tee /tmp/$1_indirme.log | sed -u -n 's/[0-9]*%/&/p' + wget --progress=dot:force -nc --no-check-certificate -P "$paketdepo" "$pktsunucu$cpaket" 2>&1 | tee /tmp/${_ipaket}_indirme.log | sed -u -n 's/[0-9]*%/&/p' else - wget --no-check-certificate -nc -q --show-progress -P "$paketdepo" "$pktsunucu$cpaket" #2>&1 | tee /tmp/$1_indirme.log + wget --no-check-certificate -nc -q --show-progress -P "$paketdepo" "$pktsunucu$cpaket" #2>&1 | tee /tmp/${_ipaket}_indirme.log fi if [[ "$?" != 0 ]]; then $_yaz_uyari "indirme hatalı" @@ -2591,16 +2617,16 @@ paket_indir(){ $_yaz_uyari "$_shasum_uyumsuzluk,paket tekrar indiriliyor." hataloglama "sha1sum uyusmaslik tespit edildi,paket tekrar indiriliyor." rm -f "$paketdepo$pkt" - paket_indir "$1" "$cikti" + paket_indir "${_ipaket}" "$cikti" #else - #ryaz 32 "$_zaten $1 $_paket_onbellek_depoda_var" + #ryaz 32 "$_zaten ${_ipaket} $_paket_onbellek_depoda_var" fi fi else - $_yaz_uyari "$1 paketi bulunamadı $pktsunucu dan silinmiş olmalı!" + $_yaz_uyari "${_ipaket} paketi bulunamadı $pktsunucu dan silinmiş olmalı!" fi else - $_yaz_uyari "$pktsunucu $1 paketi bulunmuyor!" + $_yaz_uyari "$pktsunucu ${_ipaket} paketi bulunmuyor!" fi done else @@ -2744,11 +2770,11 @@ ayarlar() { exit 0 ;; ### mps -S paketismi = ilgili paketi altbağımlılıklarını da sorarak kaldırır. -S) - paket_sil_gerekli "$2" + paket_sil_gereklerle "$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" + paket_sil_gereklerle "$2" "oto" exit 0 ;; ### mps ara aranan = paket isimleri ve açıklamalarında anahtar kelime arar. -pa|ara) @@ -3030,17 +3056,18 @@ ayarlar() { 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 ;; - glist) - gerekleri_listele "$2" + shift + derleme_listyap "$@" exit 0 ;; ### mps -kly paketismi = ilgili paketin ve kurulması gereken altgereklerini verir,oluştur. -kly) - kurulum_listyap "$2" ;; + kurulum_listyap "$2" + exit 0 ;; ### mps -ykp paketismi = ilgili paketin kurulmak istenirse,kurulacak yeni paketleri listeler. -ykp) - yeni_kurulacak_paketler "$2" + #yeni_kurulacak_paketler "$2" + derleme_listyap "$2" "--kurulu_atla" + listeleri_temizle exit 0 ;; #sunucu bilgisi alma -sun2|sunucu)