mps 105 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906
  1. #!/bin/bash
  2. versiyon="1.2.5 Milis Paket Sistemi"
  3. iletisim="milisarge@gmail.com"
  4. betikad=${0##*/}
  5. betikyol="$0"
  6. shelltip=$(basename `cat $betikyol | head -n1 | cut -d'!' -f2 | cut -d' ' -f1`)
  7. _tar="bsdtar"
  8. # sistem araçlarının tespiti ve atanması
  9. #if [ ${shelltip} = "busybox" ] || [ ${shelltip} = "ash" ];then
  10. if [ ${BASH_VERSION} ];then
  11. wget_progress="--show-progress"
  12. else
  13. alias sed="busybox sed"
  14. alias wget="busybox wget"
  15. wget_progress=""
  16. fi
  17. #alias sed="sed"
  18. if [ -f /etc/mps.conf ];then
  19. . /etc/mps.conf
  20. else
  21. echo "/etc/mps.conf ayar dosyası bulunamadı!"
  22. fi
  23. if [ -z ${paketdepo+:} ]; then
  24. paketdepo="/depo/paketler/"
  25. fi
  26. if [ -z ${sunucu+:} ]; then
  27. sunucu="127.0.0.1:8000/"
  28. fi
  29. git_sunucu="https://notabug.org"
  30. git_sunucu_eski="https://github.com"
  31. [ -d /sources/milis.git/.git ] && cat /sources/milis.git/.git/config | grep "url =" | grep "${git_sunucu_eski}" &> /dev/null
  32. if [ $? -eq 0 ];then
  33. echo "eski git sunucusundan göç ediliyor."
  34. _gockom="mv /sources/milis.git /sources/milis.git.eski"
  35. if [ $(whoami) == "root" ];then
  36. $_gockom
  37. else
  38. sudo $_gockom
  39. fi
  40. fi
  41. if [ -z ${hesap_repo+:} ]; then
  42. hesap_repo="milislinux/milis"
  43. fi
  44. # kaynak kodların indiği dizin
  45. if [ -z ${kaynak_dizin+:} ]; then
  46. kaynak_dizin="/sources"
  47. fi
  48. # resmi git reposu adresi
  49. if [ -z ${git_repo+:} ]; then
  50. git_repo="${git_sunucu}/${hesap_repo}"
  51. fi
  52. # resmi git reposuna ek takip edilecek talimatname depoları
  53. if [ -z ${git_ekrepo+:} ]; then
  54. git_ekrepo=""
  55. fi
  56. # ek git repolarının kayıt edildiği konum
  57. if [ -z ${git_yereldepo+:} ]; then
  58. git_ekyereldepo="${kaynak_dizin}"
  59. fi
  60. # resmi git reposunun kayıt edildiği konum
  61. if [ -z ${git_yereldepo+:} ]; then
  62. git_yereldepo="/sources/milis.git"
  63. fi
  64. if [ -z ${anatalimatname+:} ]; then
  65. anatalimatname="${git_yereldepo}/talimatname"
  66. fi
  67. if [ -z ${ektalimatname_repo+:} ]; then
  68. ektalimatname_repo="${git_sunucu}/milislinux/ek-talimatlar"
  69. fi
  70. if [ -z ${talimatname+:} ]; then
  71. talimatname="/root/talimatname"
  72. fi
  73. if [ -z ${kokdizin+:} ]; then
  74. kokdizin="/"
  75. fi
  76. #temel paket koruma
  77. if [ -z ${tpk+:} ]; then
  78. tpk="evet"
  79. fi
  80. if [ -z ${lokal+:} ]; then
  81. lokal="tr"
  82. fi
  83. if [ -z ${docsil+:} ]; then
  84. docsil="evet"
  85. fi
  86. if [ -z ${yerelsil+:} ]; then
  87. yerelsil="silme"
  88. fi
  89. if [ -z ${ektalimatname+:} ]; then
  90. ektalimatname="/root/talimatlar"
  91. [ ! -d /root/talimatlar ] && mkdir -p /root/talimatlar
  92. fi
  93. if [ -z ${sunucular+:} ]; then
  94. sunucular="paketler.milislinux.org"
  95. awk ' {print;} NR == 1 { print "sunucular=\"paketler.milislinux.org/\""; }' /etc/mps.conf > /etc/mps2.conf
  96. mv /etc/mps2.conf /etc/mps.conf
  97. else
  98. _satirno=$(grep -nr "sunucular=(" /etc/mps.conf | cut -d':' -f1)
  99. if [ ! -z ${_satirno} ];then
  100. echo "mps.conf düzeltildi.kontrol ediniz."
  101. sed "${_satirno}s/(/"\""/;${_satirno}s/)/"\""/" /etc/mps.conf > /etc/mps.conf.yeni
  102. mv /etc/mps.conf.yeni /etc/mps.conf
  103. fi
  104. fi
  105. if [ -z ${renklendirme+:} ]; then
  106. renkdurum="--renkli"
  107. fi
  108. if [ -z ${silme_esgec+:} ]; then
  109. silme_esgec=""
  110. fi
  111. if [ -z ${esgec+:} ]; then
  112. esgec=""
  113. fi
  114. esgec="xorg xorg-app"
  115. kurulum_onay="evet"
  116. # Bir paketin silinme onayı 1 ise silme onaylanır.
  117. onayli_sil=1
  118. # Bir paketin silinirken etkilenen dizin kontrolü
  119. silme_etki_kontrol=1
  120. # Bir paketin silinirken ters gereklerinin gösterilmesi
  121. silme_tersbag=0
  122. # Sistem güncellemeleri için paketlerin onaylı güncellenmesi
  123. onayli_guncelle=1
  124. VT="/var/lib/pkg/DB"
  125. TARIHCE_DIZIN="/var/lib/pkg/tarihce"
  126. LOGDIZIN="/var/log/mps"
  127. tekrarkur="hayir"
  128. logdosya="/var/log/mps/mps.log"
  129. GRUP_DOSYA="/sources/milis.git/ayarlar/gruplar"
  130. _guncelleme_dosya=""
  131. # Türkçe Mesajlar
  132. _paket_adi_gerekli="paket ismi eksik!"
  133. _dizin_bulunamadi="dizin bulunamadı!"
  134. _vt_dizin_bulunamadi="veritabanı dizini bulunamadı!"
  135. _gd_dosya_bulunamadi="güncelleme dosyası bulunamadı!"
  136. _talimat_sayisi_fazla="talimatnameler altında birden fazla talimat mevcut!"
  137. _talimat_bulunamadi="ilgili talimat bulunamadı!"
  138. _ek_talimatname_bulunamadi="mps.conf git_ekrepo değişkeni tanımlanmalı!"
  139. _talimatsiz_dizin="ilgili dizinde talimat bulunamadı!"
  140. _dosya_yolu_bulunamadi="dosya yolu bulunamadı!"
  141. _shasum_uyumsuzluk="shasum uyumsuzluğu tespit edildi!"
  142. _gerekler_belirleniyor="bağımlılıkları belirleniyor."
  143. _yerel_paket_yok="mevcut dizinde mps.lz paketi yok!"
  144. _paket_kuruldu="paketi kuruldu."
  145. _paket_kurulu="kurulu"
  146. _paket_kurulu_degil="paketi kurulu değil!"
  147. _paket_silindi="paketi silindi."
  148. _paket_silinsinmi="paketi kaldırılsın mı?"
  149. _paket_tanimsiz="paketi tanımsız!"
  150. _paket_bulunamadi="ilgili paket bulunamadı!"
  151. _paketvt_guncelleniyor="paket veritabanı güncelleniyor."
  152. _paket_onbellek_depoda_var="paketi önbellek depoda bulunmakta."
  153. _paket_depoda_yok="paket depoda bulunmuyor ve gereksiz,"
  154. _siliniyor="siliniyor"
  155. _git_guncelleniyor="git sunucudan güncelleme çekiliyor."
  156. _git_guncel="git deposu güncel"
  157. _git_guncellendi="git deposu güncellendi."
  158. _yerel_esitlendi="yerele eşitleme tamam."
  159. _yerel_esitlendi_olumsuz="yerele eşitleme olumsuz."
  160. _yerel_esitleniyor="yerele eşitleniyor."
  161. _devir_kontrol_iptal="devir kontrolü iptal edildi!"
  162. _surum_kontrol_iptal="sürüm kontrolü iptal edildi!"
  163. _zaten="zaten"
  164. _indiriliyor="indiriliyor"
  165. export _paketguncel=0
  166. hata_olustu(){
  167. local _hata _mesaj
  168. [ -z $1 ] && exit 1
  169. _hata=$1
  170. case $_hata in
  171. "_paket_adi_gerekli")
  172. _mesaj="$_paket_adi_gerekli"
  173. ;;
  174. "_talimatsiz_dizin")
  175. _mesaj="$_talimatsiz_dizin"
  176. ;;
  177. "_talimat_bulunamadi")
  178. _mesaj="$_talimat_bulunamadi"
  179. ;;
  180. "_yerel_paket_yok")
  181. _mesaj="$_yerel_paket_yok"
  182. ;;
  183. "_vt_yolu_yok")
  184. _mesaj="$_vt_dizin_bulunamadi"
  185. ;;
  186. "_gd_dosya_yok")
  187. _mesaj="$_gd_dosya_bulunamadi"
  188. ;;
  189. *)
  190. _mesaj="böyle bir hata yok"
  191. ;;
  192. esac
  193. echo ${_mesaj}
  194. exit 1
  195. }
  196. cikti_renk_ayarla(){
  197. local cikti
  198. cikti="--renkli"
  199. if [ "$1" ]; then
  200. if [ "$1" = "--renksiz" ];then
  201. cikti="--renksiz"
  202. fi
  203. fi
  204. if [ $cikti = "--renkli" ];then
  205. _yaz="ryaz 32"
  206. _yaz_tm="ryaz 34"
  207. _yaz_uyari="ryaz 31"
  208. _yaz_bilgi="ryaz 33"
  209. else
  210. _yaz="echo"
  211. _yaz_tm="echo"
  212. _yaz_uyari="echo"
  213. _yaz_bilgi="echo"
  214. fi
  215. }
  216. icerik_ekle(){
  217. if [ -f "$1" ];then
  218. # kurulan paketin sha1sum değerinin alınması
  219. local _hash1=$(sha1sum $1)
  220. paketad=`echo "$1" | cut -d'#' -f1`
  221. paketad=`basename $paketad`
  222. $_yaz_tm "$paketad paketi kuruluyor-> $kokdizin"
  223. ${_tar} -C /tmp --extract --file=$1 .PRE 1 2> /tmp/$paketad_pre.log &> /dev/null
  224. # kos-kur kontrolu
  225. if [ -f /tmp/.PRE ];then
  226. if [ "$kokdizin" == "/" ];then
  227. bash /tmp/.PRE
  228. else
  229. cp /tmp/.PRE $kokdizin/tmp/$paketad.PRE
  230. fi
  231. rm /tmp/.PRE
  232. fi
  233. mkdir -p kur.$paketad &&
  234. ${_tar} xf $1 -C kur.$paketad &> /dev/null
  235. # yerelsil aktif ise istenmeyen paket dil desteklerinin silinmesi
  236. if [ -d kur.$paketad/usr/share/locale ] && [ "$yerelsil" == "evet" ];then
  237. for lkl in `ls kur.$paketad/usr/share/locale/`;do
  238. if [ "$lkl" != "$lokal" ];then rm -r kur.$paketad/usr/share/locale/$lkl; fi
  239. done
  240. fi
  241. # docsil aktif ise paketinin /usr/share/doc dizininin silinmesi
  242. if [ -d kur.$paketad/usr/share/doc ] && [ "$docsil" == "evet" ];then
  243. rm -r kur.$paketad/usr/share/doc
  244. fi
  245. mkdir -p $VT/"$paketad" &&
  246. cp -v -afr kur.$paketad/* $kokdizin > kur.$paketad/kurulan
  247. cp kur.$paketad/kurulan /tmp/ && cat kur.$paketad/kurulan | cut -d '>' -f2 > ${VT}/"$paketad"/kurulan &&
  248. # kurulan paketin shasum değerinin kurulu paket dosya kaydı
  249. echo ${_hash1} > ${VT}/"$paketad"/sha1
  250. #mv kur.$paketad/.MTREE $VT/"$paketad"/files &&
  251. mv kur.$paketad/.META ${VT}/"$paketad"/META &&
  252. # kur-kos calistirilmasi
  253. if [ -f kur.$paketad/.POST ];then
  254. if [ "$kokdizin" == "/" ];then
  255. bash kur.$paketad/.POST
  256. else
  257. cp kur.$paketad/.POST $kokdizin/tmp/$paketad.POST
  258. fi
  259. rm kur.$paketad/.POST
  260. fi
  261. rm -r kur.$paketad
  262. if [ -f $kokdizin/etc/ld.so.conf ];then
  263. ldconfig -r $kokdizin
  264. fi
  265. $_yaz_tm "$paketad $_paket_kuruldu"
  266. loglama "$paketad $_paket_kuruldu"
  267. else
  268. $_yaz_uyari "icerik_ekle:paket konum parametresi boş!!!"
  269. exit 1
  270. fi
  271. }
  272. # paket silme işlevinin parametrelerinin işlenmesi
  273. _paket_sil_args(){
  274. if [[ "${args}" =~ "--onayla" ]];then
  275. _arg="--onayla";_arg_sil
  276. onayli_sil=0
  277. fi
  278. if [[ "${args}" =~ "--sekyok" ]];then
  279. _arg="--sekyok";_arg_sil
  280. silme_etki_kontrol=0
  281. fi
  282. if [[ "${args}" =~ "--tersbag" ]];then
  283. _arg="--tersbag";_arg_sil
  284. silme_tersbag=1
  285. fi
  286. if [[ "${args}" =~ "-kok" ]];then
  287. _arg="-kok";_arg_sil
  288. _args=( $args )
  289. kokdizin="${_args[1]}"
  290. _arg="${kokdizin}";_arg_sil
  291. VT="${_args[1]}/var/lib/pkg/DB"
  292. [ ! -d $VT ] && hata_olustu "_vt_yolu_yok"
  293. fi
  294. # gerekl parametreler genel değişkenlere aktarılıp
  295. # kalan parametrelerle silme işlevi yerine getirilecek
  296. paket_sil ${args}
  297. }
  298. paket_sil(){
  299. local paket kkont sil_onay _silinecekler _sek
  300. [ -z $1 ] && hata_olustu "_paket_adi_gerekli" || paket=$1
  301. _silinecekler=/tmp/$paket.sil
  302. if [ "$tpk" = "evet" ] && [ -d "$talimatname/temel/$1" ];then
  303. $_yaz_uyari "$1 temel sistem paketidir.Silinemez!!!"
  304. hataloglama "$1 temel sistem paketidir.Silinemez!!!"
  305. else
  306. kkont=`kurulu_kontrol "$1"`
  307. if [ "$kkont" = "kurulu" ];then
  308. if [ -f "$VT/$paket/kurulan" ];then
  309. #eski dizin koruma
  310. #etkilenen_kurtar $1 $cikti
  311. cat $VT/$paket/kurulan | cut -d '>' -f2 > ${_silinecekler}
  312. if [ ${silme_tersbag} -eq 1 ];then
  313. $_yaz_uyari "ters bagimliliklar"
  314. $_yaz_uyari "------------------"
  315. ters_bagimli_bilgi "$paket"
  316. $_yaz_uyari "------------------"
  317. fi
  318. # yeni silme etkilenen kurtarma
  319. # kernel için ayrı paket silme uygulanır.
  320. if [ ${paket} = "kernel" ];then
  321. for _kkurtar in \
  322. '/boot/grub' \
  323. '/boot'
  324. do
  325. sed -i '\|'\'${_kkurtar}\''|d' ${_silinecekler}
  326. done
  327. silme_etki_kontrol=0
  328. fi
  329. # diğer paketler için
  330. [ ${silme_etki_kontrol} -eq 1 ] && silme_etkilenme_tespit $paket
  331. # silme listesi güncelleme - dizin koruma
  332. # bir paket silinirken dizin yapısındaki diğer paketlerin dosyaları korunacak.
  333. if [ -f /tmp/${paket}_kd.liste ];then
  334. for _kurtar in $(cat /tmp/${paket}_kd.liste);do
  335. echo "$(grep -v "'${_kurtar}'" ${_silinecekler})" > ${_silinecekler}
  336. done
  337. $_yaz_bilgi "etkilenen konumlar korundu."
  338. #else
  339. #$_yaz_bilgi "kurtarılacak dosya yok."
  340. fi
  341. if [ ${onayli_sil} -eq 0 ];then
  342. sil_onay="e"
  343. else
  344. while true; do
  345. $_yaz_tm $paket" $_paket_silinsinmi";read -p "e veya h-> " eh
  346. case $eh in
  347. [Ee]* ) sil_onay="e"; break;;
  348. [Hh]* ) break;;
  349. * ) echo "e veya h";;
  350. esac
  351. done
  352. fi
  353. if [ "$sil_onay" = "e" ];then
  354. _konum=$(talimat_bul $paket)
  355. [ -f "$_konum/$paket.kos-sil" ] && bash "$_konum/$paket.kos-sil"
  356. xargs rm -r -f < ${_silinecekler} &&
  357. rm -r -f "$VT/$paket" &&
  358. [ -f "$_konum/$paket.sil-kos" ] && bash "$_konum/$paket.sil-kos"
  359. $_yaz_tm $paket" $_paket_silindi"
  360. loglama "$paket $_paket_silindi"
  361. rm -f ${_silinecekler}
  362. else
  363. rm -f ${_silinecekler}
  364. fi
  365. else
  366. $_yaz_uyari "kritik mesaj:kurulanlar dosyası yok."
  367. hataloglama "kritik mesaj:kurulanlar dosyası yok."
  368. fi
  369. elif [ "$kkont" = "degil" ];then
  370. $_yaz "$_zaten $paket $_paket_kurulu_degil"
  371. hataloglama "$_zaten $paket $_paket_kurulu_degil"
  372. else
  373. $_yaz "$_paket_tanimsiz"
  374. hataloglama "$_paket_tanimsiz"
  375. fi
  376. fi
  377. }
  378. paket_ara(){
  379. local paket="$1"
  380. for pkt in `cat /depo/paketler/paket*.vt | grep $paket | awk '{print $1}'`; do
  381. pakdesc=$(find $talimatname $ektalimatname -name "$pkt" | xargs -I % sed -n '1{p;q}' %/talimat | sed s'/# Tanım: //g');
  382. $_yaz_tm "$pkt - $pakdesc";
  383. done
  384. }
  385. paket_ara_grup(){
  386. local grup="$1"
  387. for pkt in `paket_liste $grup`; do
  388. pakdesc=$(find $talimatname $ektalimatname -name "$pkt" | xargs -I % sed -n '1{p;q}' %/talimat | sed s'/# Tanım: //g');
  389. $_yaz_tm "$pkt - $pakdesc";
  390. done
  391. }
  392. paket_liste(){
  393. mps_paketler_listesi="/tmp/mps_paketler_listesi"
  394. local cikti _grup
  395. _grup="yok"
  396. cikti="--renksiz"
  397. if [ "$1" ]; then
  398. if [ "$1" == "--json" ];then
  399. cikti="--json"
  400. else
  401. _grup="$1"
  402. fi
  403. fi
  404. if [ "$2" ]; then
  405. cikti="$2"
  406. fi
  407. #echo "cikti:$cikti"
  408. #echo "grup:$_grup"
  409. #exit 1
  410. if [ $_grup == "yok" ];then
  411. if [ $cikti == "--json" ];then
  412. [ -f $mps_paketler_listesi ] && rm -rf $mps_paketler_listesi
  413. for pkt in $(cat /depo/paketler/paket*.vt | awk '{print $1}'); do
  414. printf "$pkt," >> $mps_paketler_listesi
  415. done
  416. sed -i s'/.$//' $mps_paketler_listesi
  417. else
  418. cat /depo/paketler/paket*.vt | awk '{print $1}'
  419. fi
  420. else
  421. if [ $cikti == "--json" ];then
  422. grup_paketler_liste $_grup $cikti
  423. else
  424. grup_paketler_liste $_grup
  425. fi
  426. fi
  427. }
  428. paket_grup_liste(){
  429. mps_paket_grup_listesi="/tmp/mps_paket_grup_listesi"
  430. local cikti _altdizins _ektalname
  431. cikti="normal"
  432. if [ "$1" ]; then
  433. cikti="$1"
  434. fi
  435. _altdizins=`find $ektalimatname/ -maxdepth 1 -type d | wc -l`
  436. if [ $_altdizins -gt 1 ]
  437. then
  438. _ektalname=$ektalimatname/*
  439. else
  440. _ektalname=""
  441. fi
  442. _gruplar=`grep -ri "Grup:" $talimatname/* $_ektalname | cut -d':' -f3 | cut -d' ' -f2 | sed 's/^ *//;s/ *$//' | sort -u`
  443. if [ $cikti == "--json" ];then
  444. [ -f $mps_paket_grup_listesi ] && rm -rf $mps_paket_grup_listesi
  445. #printf "[" >> $mps_paket_grup_listesi
  446. for grp in $(grep -ri "Grup:" $talimatname/* $_ektalname | cut -d':' -f3 | cut -d' ' -f2 | sed 's/^ *//;s/ *$//' | sort -u); do
  447. printf "$grp," >> $mps_paket_grup_listesi
  448. done
  449. sed -i s'/.$//' $mps_paket_grup_listesi
  450. #printf "]" >> $mps_paket_grup_listesi
  451. else
  452. echo $_gruplar
  453. fi
  454. }
  455. grup_paketler_liste(){
  456. mps_grup_paketler_listesi="/tmp/mps_grup_paketler_listesi"
  457. local cikti _grup _paketler
  458. _grup="$1"
  459. cikti="normal"
  460. if [ "$2" ]; then
  461. cikti="$2"
  462. fi
  463. _paketler=`grep -rli "Grup: .*$_grup" $talimatname/* $ektalimatname/* | cut -d':' -f3 | sed 's/^ *//;s/ *$//' | xargs -I {} dirname {} | xargs -I {} basename {} | sort -u`
  464. if [ $cikti == "--json" ];then
  465. [ -f $mps_grup_paketler_listesi ] && rm -rf $mps_grup_paketler_listesi
  466. #printf "[" >> $mps_paket_grup_listesi
  467. for pkt in $(grep -rli "Grup: .*$_grup" $talimatname/* $ektalimatname/* | cut -d':' -f3 | sed 's/^ *//;s/ *$//' | xargs -I {} dirname {} | xargs -I {} basename {} | sort -u); do
  468. printf "$pkt," >> $mps_grup_paketler_listesi
  469. done
  470. sed -i s'/.$//' $mps_grup_paketler_listesi
  471. #printf "]" >> $mps_paket_grup_listesi
  472. else
  473. echo $_paketler
  474. fi
  475. }
  476. kelime_bul(){
  477. grep --color -H -ri "$1" $talimatname
  478. grep --color -H -ri "$1" $ektalimatname
  479. }
  480. kurulu_kontrol_test(){
  481. local _paket kkont _cikti _yaz _yaz_uyari
  482. _paket=$1
  483. _cikti="--renkli"
  484. [ "$2" ] && _cikti="$2"
  485. cikti_renk_ayarla ${_cikti}
  486. kkont=`kurulu_kontrol "$1"`
  487. if [ "$kkont" == "degil" ];then
  488. $_yaz_uyari "$_paket $_paket_kurulu_degil"
  489. exit 1
  490. elif [ "$kkont" == "tanimsiz" ];then
  491. $_yaz_uyari "$_paket $_paket_tanimsiz"
  492. exit 1
  493. fi
  494. }
  495. paket_bilgi(){
  496. local _paket kkont _cikti
  497. _paket="$1"
  498. _cikti="--renkli"
  499. [ "$2" ] && _cikti="$2"
  500. cikti_renk_ayarla ${_cikti}
  501. kkont=`kurulu_kontrol "$1"`
  502. if [ "$kkont" = "kurulu" ];then
  503. satir=`sed -n '1p' < $VT/"${_paket}"/META`
  504. $_yaz "ADI :" ${satir:1:${#satir}-1} #$_yaz_son
  505. satir=`sed -n '2p' < $VT/"${_paket}"/META`
  506. $_yaz "TANIM :" ${satir:1:${#satir}-1} #$_yaz_son
  507. satir=`sed -n '3p' < $VT/"${_paket}"/META`
  508. $_yaz "URL :" ${satir:1:${#satir}-1} #$_yaz_son
  509. satir=`sed -n '5p' < $VT/"${_paket}"/META`
  510. $_yaz "PAKETÇİ :" ${satir:1:${#satir}-1} #$_yaz_son
  511. satir=`sed -n '6p' < $VT/"${_paket}"/META`
  512. satir=${satir:1:${#satir}-1}
  513. printf -v boyut '%d\n' "$satir" 2>/dev/null
  514. if [ $boyut -lt 1048576 ];then
  515. boyut=$(($boyut/1024))
  516. _ek="kb"
  517. else
  518. boyut=$(($boyut/1024/1024))
  519. _ek="mb"
  520. fi
  521. $_yaz "KUR BOYUT :" "$boyut $_ek (tahmini)" #$_yaz_son
  522. satir=`sed -n '7p' < $VT/"${_paket}"/META`
  523. $_yaz "SÜRÜM :" ${satir:1:${#satir}-1} #$_yaz_son
  524. satir=`sed -n '8p' < $VT/"${_paket}"/META`
  525. $_yaz "DEVİR :" ${satir:1:${#satir}-1} #$_yaz_son
  526. satir=`sed -n '9p' < $VT/"${_paket}"/META`
  527. $_yaz "PAKETLENME :" `date -d @${satir:1:${#satir}-1}` #$_yaz_son
  528. satir=`sed -n '10p' < $VT/"${_paket}"/META`
  529. $_yaz "MİMARİ :" ${satir:1:${#satir}-1} #$_yaz_son
  530. satir=`sed -n '11p' < $VT/"${_paket}"/META`
  531. $_yaz "GRUP :" ${satir:1:${#satir}-1} #$_yaz_son
  532. elif [ "$kkont" = "degil" ];then
  533. _konum=$(talimat_bul $1)
  534. source ${_konum}/talimat
  535. _ad=$(basename ${_konum})
  536. _tanim=$(grep -ri "# Tanım:" $_konum/talimat | cut -d ':' -f2-)
  537. _url=$(grep -ri "# Url:" $_konum/talimat | cut -d ':' -f2-)
  538. _paketci=$(grep -ri "# Paketçi:" $_konum/talimat | cut -d ':' -f2-)
  539. _surum=${surum}
  540. _devir=${devir}
  541. _grup=$(grep -ri "# Grup:" $_konum/talimat | head -1 | cut -d ':' -f2)
  542. $_yaz "ADI :" ${_ad} #$_yaz_son
  543. $_yaz "TANIM :" ${_tanim} #$_yaz_son
  544. $_yaz "URL :" ${_url} #$_yaz_son
  545. $_yaz "PAKETÇİ :" ${_paketci} #$_yaz_son
  546. $_yaz "SÜRÜM :" ${_surum} #$_yaz_son
  547. $_yaz "DEVİR :" ${_devir} #$_yaz_son
  548. $_yaz "GRUP :" ${_grup} #$_yaz_son
  549. $_yaz_uyari "${_paket} $_paket_kurulu_degil"
  550. else
  551. $_yaz_uyari "${_paket} $_paket_tanimsiz"
  552. fi
  553. }
  554. paket_bilgi_html(){
  555. _simgedepo="/srv/http/mpsweb/static/simgeler"
  556. _simgehtmldepo="/static/simgeler"
  557. _simgedosya=""
  558. _dosya=$1
  559. _paket=`echo "${_dosya}" | cut -d'_' -f4-5`
  560. icerik="<table border=1>"
  561. # ikon arşive baktırılacak varsa programın kendi ikonu yoksa öntanımlı ikon kullanılacak
  562. if [ -f $_simgedepo/${_paket}.png ];then
  563. _simgedosya="$_simgehtmldepo/$_paket.png"
  564. elif [ -f /usr/share/icons/hicolor/32x32/apps/${_paket}.png ];then
  565. cp /usr/share/icons/hicolor/32x32/apps/${_paket}.png $_simgedepo/${_paket}.png
  566. _simgedosya="$_simgehtmldepo/$_paket.png"
  567. elif [ `ls $_simgedepo/${_paket}_* 2>/dev/null | head -n1` ];then
  568. _gecicidosya=`ls $_simgedepo/${_paket}_* 2>/dev/null | head -n1`
  569. _simgedosya="$_simgehtmldepo/$(ls $_gecicidosya | xargs -I {} basename {})"
  570. else
  571. _simgedosya="$_simgehtmldepo/package.png"
  572. fi
  573. icerik+="<tr><td align=center><img src='${_simgedosya}' alt='' weight=40 height=40></img><td></tr>"
  574. while IFS='' read -r satir || [[ -n "$line" ]]; do
  575. icerik+="<tr>"
  576. _sutun_baslik="$(echo $satir | cut -d':' -f1)"
  577. _sutun_deger="$(echo $satir | cut -d':' -f2-)"
  578. #icerik+="<td>$_sutun_deger</td>"
  579. if [ "${_sutun_baslik}" != "${_sutun_deger}" ];then
  580. icerik+="<td>$_sutun_baslik</td>"
  581. icerik+="<td>$_sutun_deger</td>"
  582. fi
  583. icerik+="</tr>"
  584. done < "$_dosya"
  585. if [[ "${_sutun_baslik}" == *"${_paket_kurulu_degil}"* ]] || [[ "${_sutun_baslik}" == *"${_paket_tanimsiz}"* ]];then
  586. icerik+="<tr bgcolor='red'><td>DURUM</td><td>${_sutun_baslik}</td></tr>"
  587. else
  588. icerik+="<tr bgcolor='green'><td>DURUM</td><td>kurulu</td></tr>"
  589. fi
  590. icerik+="</table>"
  591. echo "$icerik" > $_dosya.html
  592. }
  593. # paketlerin toplu tablo gösterimi
  594. paketler_depo_html(){
  595. icerik="<table border=1>"
  596. for _paket in $(ls $VT);do
  597. # ikon arşive baktırılacak varsa programın kendi ikonu yoksa öntanımlı ikon kullanılacak
  598. _simgedosya="/static/package.png"
  599. #echo "dosya: $_simgedepo/${_paket}.png"
  600. [ -f $_simgedepo/${_paket}.png ] && _simgedosya="$_simgehtmldepo/$_paket.png"
  601. [ $(ls $_simgedepo/${_paket}_* | head -n1) ] && _simgedosya="$_simgehtmldepo/$(ls $_simgedepo/${_paket}_* | head -n1 | xargs -I {} basename {})"
  602. icerik+="<tr><td align=center><img src='${_simgedosya}' alt='' weight=40 height=40></img><td><td>$_paket</td></tr>"
  603. done
  604. icerik+="</table>"
  605. echo "$icerik" > /tmp/test.html
  606. }
  607. yeniden_paketle(){
  608. cd $1
  609. ${_tar} -r -f ../"$1".mps .META
  610. ${_tar} -r -f ../"$1".mps *
  611. cd ..
  612. lzip -9 "$1".mps
  613. }
  614. talimat_bul(){
  615. local _apaket _bulunan _sonuc _donus _konum
  616. [ -z $1 ] && hata_olustu "_paket_adi_gerekli"
  617. _konum="$talimatname $ektalimatname"
  618. [ ! -z $2 ] && _konum="$2"
  619. _donus="-1"
  620. _apaket="$1"
  621. _sonuc=$(find $_konum -name ${_apaket} | wc -l)
  622. if [ ${_sonuc} -eq 0 ];then echo $_donus;return; fi
  623. _bulunan=$(find $_konum -name ${_apaket} | head -n1)
  624. #if [ ! -f "${_bulunan}/talimat" ];then hata_olustu "_talimatsiz_dizin";return; fi
  625. if [ ! -f "${_bulunan}/talimat" ];then echo ${_donus};return; fi
  626. [ ${_sonuc} -gt 1 ] && echo "$(date +'%F %T') ${_apaket} $_talimat_sayisi_fazla" >> $LOGDIZIN/mps-hata.log
  627. echo ${_bulunan}
  628. }
  629. paket_analiz(){
  630. _gcc_uyumsuz_paketler="/tmp/gcc_uyumsuz_paketler"
  631. _pkvt="paket.vt"
  632. if [ -z "$1" ];then echo "$_paket_adi_gerekli";exit 1;fi
  633. local pkt _apaket _konum
  634. pkt=$1
  635. if [ -f $pkt ];then
  636. _apaket=$(basename $pkt |cut -d'#' -f 1)
  637. _konum=$(talimat_bul $_apaket $anatalimatname)
  638. _depo_sha=$(cat "$paketdepo$_pkvt" | grep " $_apaket#" | cut -d' ' -f2)
  639. _paket_sha=$(sha1sum $pkt | cut -d ' ' -f1)
  640. if [[ $_konum != "-1" && $_konum != "0" ]];then
  641. source $_konum/talimat
  642. if [ -f $pkt ];then
  643. ${_tar} xf $pkt .META
  644. if [ -f $PWD/.META ];then
  645. mv .META /tmp/$_apaket.META
  646. satir=$(sed -n '7p' < /tmp/$_apaket.META)
  647. psurum=${satir:1:${#satir}-1}
  648. satir2=$(sed -n '8p' < /tmp/$_apaket.META)
  649. pdevir=${satir2:1:${#satir2}-1}
  650. deposurum=`echo -e "$surum" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head -n1`
  651. depodevir=`echo -e "$devir" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head -n1`
  652. _surumbilgi="gereken_sürüm:$deposurum ! paket_sürüm:$psurum"
  653. _devirbilgi="gereken_devir:$depodevir ! paket_devir:$pdevir"
  654. $_yaz_bilgi "$pkt"
  655. if [ "$deposurum" != "$psurum" ];then
  656. $_yaz_uyari "$_surumbilgi"
  657. echo "$pkt" >> $_gcc_uyumsuz_paketler
  658. fi
  659. if [ "$depodevir" != "$pdevir" ];then
  660. $_yaz_uyari "$_devirbilgi"
  661. echo "$pkt" >> $_gcc_uyumsuz_paketler
  662. fi
  663. if [ "$_paket_sha" != "$_depo_sha" ];then
  664. $_yaz_uyari "$_shasum_uyumsuzluk"
  665. echo "$pkt" >> $_gcc_uyumsuz_paketler
  666. fi
  667. else
  668. $_yaz_uyari "$_apaket depoda yok. mps -i $_apaket"
  669. fi
  670. else
  671. $_yaz_uyari "$_apaket depoda yok. mps -i $_apaket"
  672. fi
  673. else
  674. $_yaz_uyari "$1 $_talimat_bulunamadi"
  675. fi
  676. rm -f /tmp/$_apaket.META
  677. else
  678. $_yaz_uyari "$pkt $_dosya_yolu_bulunamadi"
  679. exit 0
  680. fi
  681. }
  682. paketdepo_analiz(){
  683. paketvt_guncelle
  684. _aranandepo=$1
  685. _uyumsuz_paketler="/tmp/uyumsuz_paketler"
  686. if [[ -d $_aranandepo && ! -f $_aranandepo ]];then
  687. rm -f $_uyumsuz_paketler
  688. _gcc_uyumsuz_paketler="/tmp/gcc_uyumsuz_paketler"
  689. for pkt in $(ls $_aranandepo*mps.lz);do
  690. paket_analiz $pkt
  691. echo "-"
  692. done
  693. echo "tarama bitti"
  694. sort -u $_gcc_uyumsuz_paketler > $_uyumsuz_paketler
  695. echo "file://$_uyumsuz_paketler"
  696. exit 0
  697. else
  698. $_yaz_uyari "$1 $_dizin_bulunamadi"
  699. exit 1
  700. fi
  701. }
  702. derleme_listyap_kontrol(){
  703. if [ -f gerek.liste ];then
  704. mv gerek.liste gerek.eski.liste
  705. fi
  706. if [ -f gerek.konum.liste ];then
  707. mv gerek.konum.liste gerek.konum.eski.liste
  708. fi
  709. touch gerek.liste
  710. touch gerek.konum.liste
  711. }
  712. gerekleri_dosyala(){
  713. local _altgerek _konum
  714. _altgerek="$1"
  715. _konum=$(talimat_bul $_altgerek)
  716. if [[ $konum != "-1" && $konum != "0" ]];then
  717. printf "."
  718. echo "$_altgerek" >> gerek.liste
  719. if [ ! -d "$talimatname/temel/$_altgerek" ];then
  720. echo "$_konum" >> gerek.konum.liste
  721. fi
  722. else
  723. $_yaz_uyari "$1 $_talimat_bulunamadi"
  724. fi
  725. }
  726. deps_recursive(){
  727. local _talimat _deps _temp _pkt _konum _kurkon bagimd
  728. local _ekle=1
  729. [ $1 ] && _pkt=$1 || hata_olustu "_talimat_bulunamadi"
  730. [ $2 ] && _kurkon=$2 || echo "kurkon tanımsız"
  731. [ $3 ] && _depsf=$3 || echo "depsf tanımsız"
  732. printf "-"
  733. _konum=$(talimat_bul $_pkt)
  734. _talimat="${_konum}/talimat"
  735. [ $_kurkon -eq 1 ] && [ `kurulu_kontrol $_pkt` = "kurulu" ] && _ekle=0
  736. [ $_ekle -eq 1 ] && echo "@$bag@" >> ${_depsf}
  737. _deps=$(cat $_talimat | awk '/^#[[:blank:]]*Gerek*/ {print}' | cut -d':' -f2)
  738. if [ -n "$_deps" ]; then
  739. bagimd=`echo "$_deps" | sed 's/,/ /g'`
  740. for bag in $bagimd;do
  741. #[ $_ekle -eq 1 ] && echo "@$bag@" >> ${_depsf}
  742. _temp=$(grep -rli "@${bag}@" ${_depsf})
  743. [ ! -z $_temp ] || deps_recursive $bag $_kurkon ${_depsf}
  744. done
  745. fi
  746. }
  747. deps(){
  748. local _depsf="/tmp/deps"
  749. local _kurkon=0
  750. local _pkt
  751. [ $1 ] && _pkt=$1 || hata_olustu "_talimat_bulunamadi"
  752. $_yaz "$1 $_gerekler_belirleniyor"
  753. [ $2 ] && [ $2 == "--kurulu_atla" ] && _kurkon=1
  754. [ -f ${_depsf} ] && rm -f ${_depsf} && touch ${_depsf}
  755. deps_recursive $_pkt $_kurkon ${_depsf}
  756. sed -i 's/@//g' ${_depsf}
  757. #printf "\n"
  758. cat ${_depsf}
  759. }
  760. gerekleri_listele(){
  761. derleme_listyap_kontrol
  762. local _paket _konum _pkvt
  763. _konum="$talimatname $ektalimatname"
  764. [ $1 ] && _paket=$1 || hata_olustu "_talimat_bulunamadi"
  765. _pkvt=""
  766. [ "$2" = "--kurulu_atla" ] && _pkvt="$VT"
  767. #echo "arama konum: $_konum"
  768. echo $_paket | awk -v arama_konum="$_konum" -v PKVT="$_pkvt" \
  769. '''
  770. function gerekbul(paket,gerekler) {
  771. if (ISLENDI[paket]) {
  772. return
  773. }
  774. while((getline satir<paket) >0) {
  775. if (satir ~ "# Gerekler:" ){
  776. split(satir,gerekb,":");
  777. split(gerekb[2], gerekler, /[ ,]+/);
  778. if ( length(gerekler) > 0 ){
  779. for (i in gerekler){
  780. if ( i > 1 && length(gerekler[i]) > 0 ){
  781. ara=gerekler[i]
  782. konum=talimat_bul(ara);
  783. if (konum != ""){
  784. if (length(PKVT) > 0 ){
  785. (kk(PKVT "/" ara))? yaz("."):gerekbul(konum)
  786. }
  787. else {gerekbul(konum)}
  788. }
  789. }
  790. }
  791. }
  792. }
  793. }
  794. ISLENDI[paket]=1 ;
  795. printf "."
  796. system("echo $(dirname " paket ") >> gerek.konum.liste")
  797. system("echo $(basename $(dirname " paket ")) >> gerek.liste")
  798. close(paket)
  799. }
  800. # kurulu kontrol
  801. function kk(p) {
  802. return !system("test -d \""p"\"");
  803. }
  804. function yaz(_param){
  805. printf _param
  806. }
  807. function talimat_bul(ara){
  808. cmd= "find " arama_konum " -name " ara " | head -n1 "
  809. _bulundu=0
  810. while ( ( cmd | getline talimatyol ) > 0 ) {
  811. _bulundu=1
  812. break
  813. }
  814. close(cmd)
  815. if ( _bulundu == 0 ) {
  816. print ara " talimatı bulunamadı";
  817. exit 1
  818. }
  819. return talimatyol "/talimat"
  820. }
  821. {
  822. #print FILENAME
  823. _talimat=$1
  824. _paket=talimat_bul(_talimat)
  825. if ( length(_paket) > 0 ){gerekbul(_paket);}
  826. else {print _talimat " talimatı bulunumadı!"}
  827. exit 1
  828. }
  829. '''
  830. [ -f gerek.liste ] && cat gerek.liste | tr "\n" " ";echo
  831. }
  832. derleme_listyap(){
  833. [ "$2" = "--renksiz" ] && cikti_renk_ayarla "$2"
  834. [ "$3" = "--renksiz" ] && cikti_renk_ayarla "$3"
  835. $_yaz "$1 $_gerekler_belirleniyor"
  836. gerekleri_listele $@
  837. }
  838. # -derlist
  839. paket_derle_liste(){
  840. for dpktyer in `cat $1`;do
  841. dpkt=`basename $dpktyer`
  842. echo $dpkt "derleniyor...."
  843. zorla_derle="yok"
  844. paket_derle $dpktyer
  845. done
  846. }
  847. #otomatik derle kontrollu kur
  848. # -derle
  849. paket_derle_kur(){
  850. tekrarkur="hayir"
  851. derleme_listyap_kontrol
  852. derleme_listyap "$1" && paket_derle_liste gerek.konum.liste
  853. }
  854. # odkp
  855. oto_derle_kur_paketle(){
  856. paketvt_guncelle
  857. # mps -kur
  858. _konum=$(talimat_bul $1)
  859. paket_inkur_oto $1 &&
  860. if [ -f "$_konum/$1.sira" ];then
  861. $_yaz "sıralı derleme yapılacak."
  862. paket_derle_liste "$_konum/$1.sira"
  863. else
  864. paket_derle_kur $1
  865. fi
  866. rm -rf {gerek.konum.eski,gerek.konum,gerek,kurulanlar,silinenler,gerek.eski}.liste
  867. }
  868. paket_kur_oto(){
  869. local kpkt pkt pak kliste
  870. if [ "$1" = "-H" ];then
  871. ls *.mps.lz > "otokur.list"
  872. kliste="otokur.list"
  873. else
  874. kliste="$1"
  875. fi
  876. for kpkt in `cat $kliste`;do
  877. for pkt in `ls $kpkt* | cut -d'#' -f1`;do
  878. pak=`ls "$pkt#"*`
  879. yerelden_kur "$pak" && paket_inkur_oto "$pkt"
  880. done
  881. done
  882. rm -rf otokur.list
  883. }
  884. paket_kur_oto_zorla(){
  885. local _pak _kliste
  886. [ ! -z $1 ] && _kliste=$1
  887. for _kpkt in `cat $_kliste`;do
  888. for _pkt in `ls $_kpkt* | cut -d'#' -f1`;do
  889. _pak=`ls "$_pkt#"*`
  890. paket_sil "$_pkt" "--onayla"
  891. echo $_pak
  892. yerelden_kur "$_pak" && paket_inkur_oto "$_pkt"
  893. done
  894. done
  895. rm -rf $_kliste
  896. }
  897. paket_kur_liste(){
  898. local kpkt pkt pak
  899. for kpkt in `cat $1`;do
  900. for pkt in `ls $kpkt* | cut -d'#' -f1`;do
  901. pak=`ls "$pkt#"*`
  902. yerelden_kur "$pak"
  903. done
  904. done
  905. }
  906. paket_kur_liste_zorla(){
  907. local kpkt pkt pak
  908. for kpkt in `cat $1`;do
  909. for pkt in `ls $kpkt* | cut -d'#' -f1`;do
  910. pak=`ls "$pkt#"*`
  911. paket_sil "$kpkt" "--onayla"
  912. yerelden_kur "$pak"
  913. done
  914. done
  915. }
  916. #otomatik kontrollu kur
  917. paket_kur_oto2(){
  918. derleme_listyap_kontrol
  919. derleme_listyap "$1" > /dev/null && mps -ok gerek.konum.liste
  920. }
  921. paket_inkur_liste_direk(){
  922. local kpkt
  923. for kpkt in `cat $1`;do
  924. agdan_kur "$kpkt"
  925. done
  926. }
  927. paket_inkur_liste(){
  928. local kpkt
  929. for kpkt in `cat $1`;do
  930. paket_inkur_oto "$kpkt"
  931. done
  932. }
  933. # otomatik kontrollu kur
  934. # -kur
  935. paket_inkur_oto(){
  936. local _cikti
  937. _cikti="--renkli"
  938. [ $1 ] && _pkt="$1" || hata_olustu "_paket_adi_gerekli"
  939. [ $2 ] && _cikti="$2"
  940. cikti_renk_ayarla $_cikti
  941. local konum anakonum kurdurum _agdan_kur_onay
  942. derleme_listyap_kontrol
  943. derleme_listyap ${_pkt} "--kurulu_atla"
  944. for kpkt in `cat gerek.liste`;do
  945. # önce talimat-anatalimat karşılaştırması yapılır.
  946. konum="`find "$talimatname" -name $kpkt`"
  947. anakonum="`find "$anatalimatname" -name $kpkt`"
  948. ekkonum="`find "$ektalimatname" -name $kpkt`"
  949. if [ -f "$anakonum/talimat" ];then
  950. # depo ve talimatname sürüm kontrolü
  951. _gncdurum=""
  952. [ "$(kurulu_kontrol ${kpkt})" = "kurulu" ] && _gncdurum=$(surum_karsilastir ${kpkt})
  953. _agdan_kur_onay="x"
  954. if [ "${_gncdurum}" == "degil" ];then
  955. _agdan_kur_onay="h"
  956. elif [ "`dosya_karsilastir $konum/talimat $anakonum/talimat`" = "evet" ];then
  957. _agdan_kur_onay="e"
  958. else
  959. _agdan_kur_onay="h"
  960. $_yaz_uyari "$kpkt talimat eşitsizliğinden atlandı."
  961. fi
  962. [ $_agdan_kur_onay == "x" ] && exit 1
  963. [ $_agdan_kur_onay == "e" ] && agdan_kur "$kpkt" "$_cikti"
  964. # ek talimatlar için sürüm karşılaştırma henüz yok.farklı depolara bakılarak sağlanacak
  965. elif [ -f "$ekkonum/talimat" ];then
  966. agdan_kur "$kpkt" "$_cikti"
  967. else
  968. $_yaz_uyari "$kpkt talimatı bulunamadı!"
  969. fi
  970. done
  971. if [ $(kurulu_kontrol ${_pkt}) = "degil" ];then
  972. kurdurum="kurulu değil"
  973. elif [ $(kurulu_kontrol ${_pkt}) = "kurulu" ];then
  974. kurdurum="kurulu"
  975. $_yaz "${_pkt} $kurdurum"
  976. else
  977. kurdurum="$_paket_tanimsiz"
  978. fi
  979. rm -rf *.liste
  980. }
  981. paket_sil_oto(){
  982. local spkt
  983. for spkt in `cat $1`;do
  984. paket_sil "$spkt" "--onayla"
  985. done
  986. }
  987. paket_sil_oto_onayli(){
  988. local spkt
  989. #for spkt in `perl -e 'print reverse <>' $1`;do
  990. for spkt in $(tac $1);do
  991. paket_sil "$spkt" "--tersbag"
  992. done
  993. }
  994. paket_sil_gereklerle(){
  995. local _onay _tbsnc _paket _dosya _silindi
  996. [ $1 ] && _paket="$1" || hata_olustu "_paket_adi_gerekli"
  997. # otomatik onay verme durum kontrolü
  998. _onay="onay"
  999. [ $2 ] && _onay="$2";
  1000. if [ -d $VT/${_paket} ];then
  1001. _dosya=/tmp/${_paket}.gerekler.liste
  1002. rm -f /tmp/${_paket}.silinecekler
  1003. rm -f /tmp/${_paket}.silinemezler
  1004. _sliste=`mktemp`
  1005. _eliste=`mktemp`
  1006. bagimli_bilgi_dosyala "${_paket}"
  1007. for _pk in $(cat ${_dosya});do
  1008. _silindi=0
  1009. _tbsnc=$(ters_bagimli_bilgi ${_pk} "kurulu")
  1010. for _tbb in `echo $_tbsnc`;do
  1011. for _benzer in $(grep -ri "${_tbb}" ${_dosya});do
  1012. if [ ${_tbb} = ${_benzer} ];then
  1013. echo ${_pk} >> ${_sliste}
  1014. _silindi=1
  1015. fi
  1016. done
  1017. if [ ${_tbb} = ${_paket} ];then
  1018. echo ${_pk} >> ${_sliste}
  1019. _silindi=1
  1020. fi
  1021. if [ $_silindi -eq 0 ];then
  1022. echo ${_pk} >> ${_eliste}
  1023. fi
  1024. done
  1025. done
  1026. sort -u ${_sliste} > /tmp/${_paket}.silinecekler
  1027. sort -u ${_eliste} > /tmp/${_paket}.silinemezler
  1028. rm -rf ${_eliste} ${_sliste}
  1029. #cat /tmp/${_paket}.silinecekler
  1030. #cat /tmp/${_paket}.silinemezler
  1031. if [ $_onay = "oto" ];then
  1032. paket_sil_oto "/tmp/${_paket}.silinecekler"
  1033. else
  1034. paket_sil_oto_onayli "/tmp/${_paket}.silinecekler"
  1035. fi
  1036. else
  1037. $_yaz "$_zaten ${_paket} $_paket_kurulu_degil"
  1038. exit 1
  1039. fi
  1040. }
  1041. paket_sil_gereklerle_eski(){
  1042. local _onay _tbs _tbsnc _paket _ustgerek
  1043. [ $1 ] && _paket="$1" || hata_olustu "_paket_adi_gerekli"
  1044. # otomatik onay verme durum kontrolü
  1045. [ $2 ] && _onay="$2";
  1046. _onay="onay"
  1047. if [ -d $VT/${_paket} ];then
  1048. bagimli_bilgi_dosyala "${_paket}"
  1049. rm -f /tmp/${_paket}.silinecekler
  1050. touch /tmp/${_paket}.silinecekler
  1051. _tbsnc=$(ters_bagimli_bilgi ${_paket} "kurulu")
  1052. if [ -z "${_tbsnc}" ];then _tbs=0
  1053. else _tbs=$(echo "$_tbsnc" | wc -l)
  1054. fi
  1055. if [ $_tbs -gt 0 ];then
  1056. $_yaz_uyari "${_paket} silinemez."
  1057. echo "ters gerekleri:";echo "$_tbsnc"
  1058. exit 1
  1059. fi
  1060. for pkaltb in $(cat /tmp/${_paket}.gerekler.liste);do
  1061. if [ -d $VT/$pkaltb ];then
  1062. _tbsnc=""
  1063. _tbsnc=$(ters_bagimli_bilgi $pkaltb "kurulu")
  1064. if [ -z "${_tbsnc}" ];then _tbs=0
  1065. else _tbs=$(echo "$_tbsnc" | wc -l)
  1066. fi
  1067. echo "$pkaltb >"
  1068. if [ -f ${pkaltb}.tbk.txt ];then
  1069. _ustgerek=$(cat /tmp/${_paket}.silinecekler | grep -f ${pkaltb}.tbk.txt)
  1070. [ ${_ustgerek} ] && _tbs=0
  1071. fi
  1072. if [ $_tbs -eq 0 ];then
  1073. $_yaz "$pkaltb silinebilir."
  1074. echo "$pkaltb" >> /tmp/${_paket}.silinecekler
  1075. elif [ "$_tbsnc" = "${_paket}" ];then
  1076. $_yaz "$pkaltb silinebilir."
  1077. echo "$pkaltb" >> /tmp/${_paket}.silinecekler
  1078. else
  1079. $_yaz_uyari "$pkaltb silinemez."
  1080. echo "ters gerekleri: $tbsonuc"
  1081. fi
  1082. else
  1083. $_yaz "$_zaten $pkaltb $_paket_kurulu_degil"
  1084. fi
  1085. done
  1086. #cat /tmp/${_paket}.silinecekler
  1087. if [ $_onay = "oto" ];then
  1088. paket_sil_oto "/tmp/${_paket}.silinecekler"
  1089. else
  1090. paket_sil_oto_onayli "/tmp/${_paket}.silinecekler"
  1091. fi
  1092. else
  1093. $_yaz "$_zaten ${_paket} $_paket_kurulu_degil"
  1094. exit 1
  1095. fi
  1096. }
  1097. paketsiz_talimatlar(){
  1098. for talimatyol in `( ls -d $talimatname/genel/*/* & ls -d $ektalimatname/*/* ) | cat`;do
  1099. #echo $talimat
  1100. if [ -d $talimatyol ];then
  1101. talimat=$(basename $talimatyol)
  1102. if [[ ! $(cat $paketdepo/paket*.vt | grep $talimat#) ]] ;then
  1103. if [ -d $talimatname/*/*/$talimat ];then
  1104. ack=`grep -e '# Tanım:' $talimatname/genel/*/$talimat/talimat | cut -d':' -f2`
  1105. elif [ -d $ektalimatname/*/$talimat ];then
  1106. ack=`grep -e '# Tanım:' $ektalimatname/*/$talimat/talimat | cut -d':' -f2`
  1107. fi
  1108. printf '%s = %s \n' "$talimat" "$ack"
  1109. fi
  1110. fi
  1111. done
  1112. }
  1113. paket_guncelle(){
  1114. surum_kontrol $1 $2 $3
  1115. if [ -d "$VT/$1" ];then
  1116. # paket sürümü güncellenirse devir güncelleme pas geçilecek.
  1117. # paketin güncel olması durumu 1 gelirse
  1118. if [ ${_paketguncel} -eq 0 ];then
  1119. devir_kontrol $1 $2 $3
  1120. fi
  1121. fi
  1122. export _paketguncel=0
  1123. }
  1124. paket_guncelle_oto(){
  1125. derleme_listyap "$1" > /dev/null &&
  1126. local kpkt
  1127. GS_CIKTI="H"
  1128. for kpkt in `cat gerek.konum.liste`;do
  1129. durum=`kurulu_kontrol "$kpkt"`
  1130. if [ "$durum" = "kurulu" ]; then
  1131. paket_guncelle "$kpkt" $GS_CIKTI
  1132. fi
  1133. done
  1134. listeleri_temizle
  1135. }
  1136. dongu_gosterge(){
  1137. count=0
  1138. total=$1
  1139. pstr="[=======================================================================]"
  1140. while [ $count -lt $total ]; do
  1141. sleep 0.5 # yapılacak iş veya uyutulur.
  1142. count=$(( $count + 1 ))
  1143. pd=$(( $count * 73 / $total ))
  1144. printf "\r%3d.%1d%% %.${pd}s" $(( $count * 100 / $total )) $(( ($count * 1000 / $total) % 10 )) $pstr
  1145. done
  1146. }
  1147. t_indeks(){
  1148. # karşılaştırma dosyası -talimatname indeks dönüşü verecek
  1149. [ -z $1 ] && exit 1
  1150. local dosya_t="$1"
  1151. # talimat listesi
  1152. local dosya=`mktemp`
  1153. local dosya_sirasiz=`mktemp`
  1154. local kurulu_liste=`mktemp`
  1155. ls -rct $VT > $kurulu_liste
  1156. find ${talimatname} ${ektalimatname} | \
  1157. grep -f <(sed 's@^@/@; s/$/$/; s/\([\.[\*]\|\]\)/\\\1/g' $kurulu_liste ) > $dosya
  1158. i=1
  1159. sp="/-\|"
  1160. echo -n ' '
  1161. while IFS='' read -r konum || [[ -n "$konum" ]]; do
  1162. printf "\b${sp:i++%${#sp}:1}"
  1163. # Surum-Devir
  1164. isim=$(basename $konum)
  1165. #surum=$(grep -ri ^"surum=" $konum/talimat | cut -d '=' -f2 | awk '{ sub(/[ \t]+$/, ""); print }')
  1166. # sürüm ve devir değişkenlerinin olası boşluklarının kırpılması
  1167. surum=$(grep -ri ^"surum=" $konum/talimat | cut -d '=' -f2 | tr -d [:space:])
  1168. devir=$(grep -ri ^"devir=" $konum/talimat | cut -d '=' -f2 | tr -d [:space:])
  1169. echo "$isim@$surum-$devir" >> $dosya_sirasiz
  1170. done < "$dosya"
  1171. sort $dosya_sirasiz > $dosya_t
  1172. rm -f $dosya $dosya_sirasiz $kurulu_liste
  1173. }
  1174. t_indeks2(){
  1175. # karşılaştırma dosyası -talimatname indeks dönüşü verecek
  1176. [ -z $1 ] && exit 1
  1177. local dosya_t="$1"
  1178. # talimat listesi
  1179. local dosya=`mktemp`
  1180. local dosya_sirasiz=`mktemp`
  1181. local kurulu_liste=`mktemp`
  1182. ls -rct $VT > $kurulu_liste
  1183. find ${talimatname} ${ektalimatname} | \
  1184. grep -f <(sed 's@^@/@; s/$/$/; s/\([\.[\*]\|\]\)/\\\1/g' $kurulu_liste ) > $dosya
  1185. i=1
  1186. cat $dosya | xargs -I {} \
  1187. awk -F'=' '{if($1 == "isim") {gsub(/[[:space:]]*/, "", $2);printf $2 "@";} else if($1 == "surum") {gsub(/[[:space:]]*/, "", $2);printf $2 "-";} else if($1 == "devir") {gsub(/[[:space:]]*/, "", $2);print $2;} }' {}/talimat \
  1188. > $dosya_sirasiz
  1189. sort $dosya_sirasiz > $dosya_t
  1190. rm -f $dosya $dosya_sirasiz $kurulu_liste
  1191. }
  1192. k_indeks(){
  1193. # karşılaştırma dosyası -sıralı dönüş verecek
  1194. [ -z $1 ] && exit 1
  1195. # sistemde kurulum sıralı dosya dönüş verecek
  1196. [ -z $2 ] && exit 1
  1197. local dosya_k="$1"
  1198. local dosya="$2"
  1199. local dosya_sirasiz=`mktemp`
  1200. [ -f $dosya ] && rm -rf $dosya
  1201. ls -rct $VT > $dosya
  1202. for _esgec in `echo ${esgec} | tr " " "\n"`;do
  1203. _satirno=$(grep -wxnr "${_esgec}" ${dosya} | cut -d':' -f1)
  1204. [ ! -z ${_satirno} ] && sed -i "${_satirno}d" ${dosya}
  1205. done
  1206. i=1
  1207. sp="/-\|"
  1208. echo -n ' '
  1209. while IFS='' read -r kpaket || [[ -n "$kpaket" ]]; do
  1210. printf "\b${sp:i++%${#sp}:1}"
  1211. # Surum-Devir
  1212. satir=$(sed -n '1p' < $VT/${kpaket}/META)
  1213. isim=${satir:1:${#satir}-1}
  1214. satir=$(sed -n '7p' < $VT/${kpaket}/META)
  1215. surum=${satir:1:${#satir}-1}
  1216. satir=$(sed -n '8p' < $VT/${kpaket}/META)
  1217. devir=${satir:1:${#satir}-1}
  1218. echo "$isim@$surum-$devir" >> $dosya_sirasiz
  1219. done < "$dosya"
  1220. # alfabetik sıralama
  1221. sort $dosya_sirasiz > $dosya_k
  1222. rm -f $dosya_sirasiz
  1223. }
  1224. # sistem güncelleme işlevinin parametrelerinin işlenmesi
  1225. _sistem_guncelle_args(){
  1226. if [[ "${args}" =~ "--onayla" ]];then
  1227. _arg="--onayla";_arg_sil
  1228. onayli_guncelle=0
  1229. fi
  1230. if [[ "${args}" =~ "--dosya" ]];then
  1231. _arg="--dosya";_arg_sil
  1232. _args=( $args )
  1233. _guncelleme_dosya="${_args}"
  1234. [ ! -f ${_guncelleme_dosya} ] && hata_olustu "_gd_dosya_yok"
  1235. _arg="${_guncelleme_dosya}";_arg_sil
  1236. fi
  1237. sistem_guncelle ${args}
  1238. }
  1239. sistem_guncelle(){
  1240. # girdi yuzdelik_gosterme//1
  1241. # çıktı _guncelleme_dosya, _talimatsiz_dosya
  1242. git_guncelle
  1243. paketvt_guncelle
  1244. if [ -z ${_guncelleme_dosya} ];then
  1245. _guncelleme_dosya="/tmp/mps.guncellenecekler"
  1246. rm -f ${_guncelleme_dosya}
  1247. fi
  1248. local _talimatsiz_dosya="/tmp/mps.talimatsizlar"
  1249. [ -f ${_talimatsiz_dosya} ] && rm -f ${_talimatsiz_dosya}
  1250. [ -z $1 ] && local yuzde=1 || yuzde=$1
  1251. if [ ! -f ${_guncelleme_dosya} ];then
  1252. # talimatname indeks dosyası
  1253. local dosya_t=`mktemp`
  1254. # kurulum indeks dosyası
  1255. local dosya_k=`mktemp`
  1256. # çıktı verilecek dosyalar
  1257. # güncellenecek paket listesi sırasız
  1258. local dosya_g=`mktemp`
  1259. # güncellenecek paket liste
  1260. local dosya_son=`mktemp`
  1261. # kuruluma göre sıralı paket listesi
  1262. local dosya_ks=`mktemp`
  1263. # yüzdelik durdurucu sinyal dosya
  1264. local sinyal=`mktemp`
  1265. rm -f ${sinyal}
  1266. # 10 saniyelik hesaplama öngörülüyor
  1267. [ ${yuzde} -eq 1 ] && yuzdelik_calistir 10 ${sinyal} &
  1268. # k ve t indeksleme paralel çalıştırılacak
  1269. t_indeks $dosya_t &
  1270. (k_indeks $dosya_k $dosya_ks;[ $yuzde -eq 1 ] && touch ${sinyal}) &
  1271. wait $(jobs -p)
  1272. #set -x
  1273. # talimatname ve kurulu sürüm-devir indeks dosya karşılaştırılması
  1274. grep -vxFf $dosya_t $dosya_k > $dosya_g
  1275. # paketleri çekmek için satır sonu @ ekleme
  1276. sed -i 's/$/@/' $dosya_ks
  1277. for _satir in $(cat $dosya_g);do
  1278. _gpaket=$(echo ${_satir} | cut -d'@' -f1)
  1279. # kurulu olup talimatı olmayan paketlerin tespit edilmesi
  1280. grep -nr "^${_gpaket}@" $dosya_t > /dev/null
  1281. if [ $? -eq 0 ];then
  1282. grep -nr "^${_gpaket}@" $dosya_ks >> $dosya_son
  1283. else
  1284. echo "${_gpaket}" >> ${_talimatsiz_dosya}
  1285. fi
  1286. done
  1287. # güncellenecek paketlerin-kurulum sırasına göre sıralanıp, sadeleştirilmesi
  1288. sort $dosya_son | cut -d':' -f2 | cut -d'@' -f1 > ${_guncelleme_dosya}
  1289. # geçici dosyaların silinmesi
  1290. #echo "$dosya_t $dosya_k $dosya_ks $dosya_g $dosya_son"
  1291. rm -f $dosya_t $dosya_k $dosya_ks $dosya_g $dosya_son
  1292. printf "\n"
  1293. fi
  1294. if [ -s ${_talimatsiz_dosya} ];then
  1295. $_yaz_tm "aşağıdaki paketlerin talimatı olmayıp depoda bulunmamaktadırlar!"
  1296. cat ${_talimatsiz_dosya}
  1297. $_yaz_uyari "mps sildos ${_talimatsiz_dosya} - komutuyla ilgili paketleri kaldırabilirsiniz."
  1298. fi
  1299. if [ -s ${_guncelleme_dosya} ];then
  1300. $_yaz_tm "aşağıdaki paketler güncellenecektir:"
  1301. cat ${_guncelleme_dosya}
  1302. $_yaz_uyari "Güncellemesini istemediğiniz paketleri ${_guncelleme_dosya} dosyasından sildikten sonra onay veriniz!"
  1303. if [ ${onayli_guncelle} -eq 1 ];then
  1304. while true; do
  1305. $_yaz_tm "listedeki paketler güncellensin mi?";read -p "e veya h-> " eh
  1306. case $eh in
  1307. [Ee]* ) sistem_guncelle_uygula ${_guncelleme_dosya}; break;;
  1308. [Hh]* ) break;;
  1309. * ) echo "e veya h";;
  1310. esac
  1311. done
  1312. elif [ ${onayli_guncelle} -eq 0 ];then
  1313. sistem_guncelle_uygula ${_guncelleme_dosya}
  1314. else
  1315. echo "güncelleme dosyanız: $guncelleme_dosya"
  1316. exit 1
  1317. fi
  1318. else
  1319. $_yaz_uyari "Güncellenecek paket bulunamadı!"
  1320. fi
  1321. }
  1322. yuzdelik_calistir(){
  1323. # girdi saniye verilir.
  1324. [ ! -z $1 ] && local sn=$1 || exit 1
  1325. [ ! -z $2 ] && local signal=$2 || exit 1
  1326. local count=0
  1327. total=`echo "10 * $sn" | bc -l `
  1328. pstr="[=======================================================================]"
  1329. while [ $count -lt $total ]; do
  1330. count=$(( $count + 1 ))
  1331. pd=$(( $count * 73 / $total ))
  1332. printf "\r%3d.%1d%% %.${pd}s" $(( $count * 100 / $total )) $(( ($count * 1000 / $total) % 10 )) $pstr
  1333. sleep 0.1
  1334. if [ -f $signal ];then
  1335. count=95
  1336. rm -f $signal
  1337. fi
  1338. done
  1339. }
  1340. sistem_guncelle_uygula(){
  1341. [ ${onayli_guncelle} -eq 0 ] && GS_CIKTI="E"
  1342. [ ! -f ${_guncelleme_dosya} ] && exit 1
  1343. for gpkt in `cat ${_guncelleme_dosya}`;do
  1344. durum=`kurulu_kontrol "$gpkt"`
  1345. if [ "$durum" = "kurulu" ]; then
  1346. paket_guncelle "$gpkt" $GS_CIKTI "E"
  1347. fi
  1348. done
  1349. }
  1350. surum_kontrol(){
  1351. local _konum pk_sil _paket
  1352. _paket=$1
  1353. GS_CIKTI="E"
  1354. G_ONAY="H"
  1355. if [ "$2" ]; then
  1356. GS_CIKTI="$2"
  1357. fi
  1358. if [ "$3" ]; then
  1359. G_ONAY="$3"
  1360. fi
  1361. local ksurum surum pkt dusuk yuksek durum
  1362. durum="belirsiz"
  1363. satir=`sed -n '7p' < $VT/$_paket/META`
  1364. ksurum=${satir:1:${#satir}-1}
  1365. _konum=$(talimat_bul $_paket)
  1366. if [ "$_konum" = "-1" ];then
  1367. $_yaz_uyari "$_paket $_talimat_bulunamadi $_surum_kontrol_iptal"
  1368. pk_sil="e"
  1369. for _esgec in `echo ${silme_esgec} | tr " " "\n"`;do
  1370. if [ "${_esgec}" = "${_paket}" ];then
  1371. pk_sil="h"
  1372. break
  1373. fi
  1374. done
  1375. if [ "$pk_sil" = "e" ];then
  1376. $_yaz "$_paket $_paket_depoda_yok $_siliniyor"
  1377. paket_sil "$_paket" "--onayla"
  1378. else
  1379. $_yaz "$_paket silinmesi es geçildi"
  1380. fi
  1381. else
  1382. source $_konum/talimat
  1383. dusuk=`echo -e "$ksurum\n$surum" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head -n1`
  1384. if [ "$ksurum" = "$surum" ];then
  1385. durum="guncel"
  1386. [ $GS_CIKTI = "E" ] && $_yaz_bilgi "$_paket sürümü güncel"
  1387. #printf "."
  1388. else
  1389. if [ "$ksurum" = "$dusuk" ];then
  1390. durum="yukselt"
  1391. else
  1392. durum="dusur"
  1393. fi
  1394. gun_onay="h"
  1395. if [ "$durum" != "guncel" ];then
  1396. if [ $G_ONAY = "H" ];then
  1397. while true; do
  1398. printf "\n"
  1399. $_yaz_tm "$_paket sürüm $durum""me işlemi uygulanacak. $ksurum <> $surum ";read -p "e veya h-> " eh
  1400. case $eh in
  1401. [Ee]* ) gun_onay="e"; break;;
  1402. [Hh]* ) break;;
  1403. * ) echo "e veya h";;
  1404. esac
  1405. done
  1406. else
  1407. gun_onay="e"
  1408. fi
  1409. if [ "$gun_onay" = "e" ];then
  1410. if [ -d "$talimatname/temel/$_paket" ]; then
  1411. kurulum_dogrulama_icerik $_paket
  1412. tpk="hayir"
  1413. paket_sil "$_paket" "--onayla"
  1414. paket_indir $_paket
  1415. pkt=`cat "$paketdepo""paket.vt" | grep "^$_paket " | cut -d' ' -f3`
  1416. icerik_ekle "${paketdepo}${pkt}"
  1417. else
  1418. paket_sil "$_paket" "--onayla"
  1419. paket_inkur_oto $_paket
  1420. fi
  1421. $_yaz_tm "$_paket sürüm güncellemesi yapıldı"
  1422. export _paketguncel=1
  1423. else
  1424. $_yaz_uyari "$_paket sürüm güncellemesi yapılmadı"
  1425. hataloglama "$_paket sürüm güncellemesi yapılmadı"
  1426. fi
  1427. fi
  1428. fi
  1429. fi
  1430. }
  1431. devir_kontrol(){
  1432. local _konum pk_sil _paket
  1433. _paket="$1"
  1434. GS_CIKTI="E"
  1435. G_ONAY="H"
  1436. if [ "$2" ]; then
  1437. GS_CIKTI="$2"
  1438. fi
  1439. if [ "$3" ]; then
  1440. G_ONAY="$3"
  1441. fi
  1442. local kdevir devir pkt dusuk yuksek durum gun_onay
  1443. durum="belirsiz"
  1444. satir=`sed -n '8p' < $VT/$_paket/META`
  1445. kdevir=${satir:1:${#satir}-1}
  1446. _konum=$(talimat_bul $_paket)
  1447. if [ "$_konum" = "-1" ];then
  1448. $_yaz_uyari "$_paket $_talimat_bulunamadi $_devir_kontrol_iptal"
  1449. pk_sil="e"
  1450. for _esgec in `echo ${silme_esgec} | tr " " "\n"`;do
  1451. if [ "${_esgec}" = "${_paket}" ];then
  1452. pk_sil="h"
  1453. break
  1454. fi
  1455. done
  1456. if [ "$pk_sil" = "e" ];then
  1457. $_yaz "$_paket $_paket_depoda_yok $_siliniyor"
  1458. paket_sil "$_paket" "--onayla"
  1459. else
  1460. $_yaz "$_paket silinmesi es geçildi"
  1461. fi
  1462. else
  1463. source $_konum/talimat
  1464. dusuk=`echo -e "$kdevir\n$devir" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head -n1`
  1465. if [ "$kdevir" = "$devir" ];then
  1466. durum="guncel"
  1467. [ $GS_CIKTI = "E" ] && $_yaz_bilgi "$_paket deviri güncel"
  1468. #printf "."
  1469. else
  1470. if [ "$kdevir" = "$dusuk" ];then
  1471. durum="yukselt"
  1472. else
  1473. durum="dusur"
  1474. fi
  1475. gun_onay="h"
  1476. if [ "$durum" != "guncel" ];then
  1477. if [ $G_ONAY = "H" ];then
  1478. while true; do
  1479. printf "\n"
  1480. $_yaz_tm "$_paket devir $durum""me işlemi uygulanacak. $kdevir <> $devir ";read -p "e veya h-> " eh
  1481. case $eh in
  1482. [Ee]* ) gun_onay="e"; break;;
  1483. [Hh]* ) break;;
  1484. * ) echo "e veya h";;
  1485. esac
  1486. done
  1487. else
  1488. gun_onay="e"
  1489. fi
  1490. if [ "$gun_onay" = "e" ];then
  1491. paket_sil "$_paket" "--onayla"
  1492. paket_inkur_oto "$_paket"
  1493. $_yaz_bilgi "$_paket devir güncellemesi yapıldı"
  1494. else
  1495. $_yaz_uyari "$_paket devir güncellemesi yapılmadı"
  1496. hataloglama "$_paket devir güncellemesi yapılmadı"
  1497. fi
  1498. fi
  1499. fi
  1500. fi
  1501. }
  1502. surum_karsilastir(){
  1503. local kpaket _konum
  1504. [ "$1" ] && kpaket="$1" || exit 1
  1505. deposurum=$(grep " $kpaket#" /depo/paketler/paket.vt | cut -d' ' -f3 | cut -d'#' -f 2 | cut -d'-' -f1)
  1506. _konum=$(talimat_bul $kpaket)
  1507. if [ "$_konum" = "-1" ];then
  1508. $_yaz_uyari "$kpaket $_talimat_bulunamadi $_surum_kontrol_iptal"
  1509. exit 1
  1510. fi
  1511. source $_konum/talimat
  1512. tsurum=`echo -e "$surum" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | head -n1`
  1513. if [ "$tsurum" == "$deposurum" ];then
  1514. echo "esit"
  1515. else
  1516. echo "degil"
  1517. fi
  1518. }
  1519. surum_devir_kontrol(){
  1520. local _konum pk_sil _paket _durum pk_guncelle
  1521. _paket=$1
  1522. _durum="yaz"
  1523. pk_guncelle="e"
  1524. [ $2 ] && _durum="$2"
  1525. local kdevir devir ksurum surum pkt dusuk yuksek durum
  1526. durum="belirsiz"
  1527. if [ -d "$VT/$_paket" ];then
  1528. satir=`sed -n '7p' < $VT/$_paket/META`
  1529. ksurum="${satir:1:${#satir}-1}-"
  1530. satir=`sed -n '8p' < $VT/$_paket/META`
  1531. kdevir=${satir:1:${#satir}-1}
  1532. else
  1533. ksurum="(none)"
  1534. kdevir=""
  1535. fi
  1536. _konum=$(talimat_bul $_paket)
  1537. if [ "$_konum" = "-1" ];then
  1538. echo "$_paket $_talimat_bulunamadi $_surum_kontrol_iptal"
  1539. else
  1540. for _esgec in `echo ${esgec} | tr " " "\n"`;do
  1541. if [ "${_esgec}" = ${_paket} ];then
  1542. pk_guncelle="h"
  1543. break
  1544. fi
  1545. done
  1546. if [ $pk_guncelle == "e" ];then
  1547. source $_konum/talimat
  1548. if [ "${_durum}" == "yaz" ];then
  1549. echo "$_paket:"
  1550. echo "kurulu sürüm :$ksurum$kdevir"
  1551. echo "depo sürüm :$surum-$devir"
  1552. echo "--"
  1553. else
  1554. if [ "$ksurum$kdevir" == "$surum-$devir" ];then
  1555. echo "yok"
  1556. else
  1557. echo "var"
  1558. fi
  1559. fi
  1560. else
  1561. echo "$_paket için sürüm-devir kontrolü es geçildi."
  1562. fi
  1563. fi
  1564. }
  1565. _devir_kontrol_durum(){
  1566. local _konum pk_sil _paket
  1567. _paket="$1"
  1568. local kdevir devir pkt dusuk yuksek durum gun_onay
  1569. _kurulu=$(kurulu_kontrol "$_paket")
  1570. if [ ${_kurulu} != "kurulu" ];then
  1571. ryaz 31 "$_paket $_paket_kurulu_degil"
  1572. exit 1
  1573. fi
  1574. durum="belirsiz"
  1575. satir=`sed -n '8p' < $VT/$_paket/META`
  1576. kdevir=${satir:1:${#satir}-1}
  1577. _konum=$(talimat_bul $_paket)
  1578. if [ "$_konum" = "-1" ];then
  1579. echo "$_paket $_talimat_bulunamadi $_devir_kontrol_iptal"
  1580. else
  1581. source $_konum/talimat
  1582. echo "kurulu devir :$kdevir"
  1583. echo "depo devir :$devir"
  1584. fi
  1585. }
  1586. grup_kontrol() {
  1587. local _talimat _grup
  1588. [ -z $1 ] && exit 1
  1589. _talimat="$1"
  1590. _grup=$(LC_ALL=tr_TR.utf-8 grep -ri "Grup:" ${_talimat} | cut -d':' -f2 | sed 's/^ *//;s/ *$//' | cut -d' ' -f1)
  1591. echo "( $_grup ) içermektedir!"
  1592. if [ -z "${_grup}" ];then
  1593. _grup="bos"
  1594. grupad_kontrol $_grup ${_talimat}
  1595. else
  1596. grupad_kontrol $_grup ${_talimat}
  1597. fi
  1598. }
  1599. grupad_kontrol() {
  1600. local _grup _var _lineno _agrup _talimat
  1601. _var=0
  1602. [ -z $1 ] && exit 1
  1603. [ -z $2 ] && exit 1
  1604. _grup="$1"
  1605. _talimat="$2"
  1606. if [ -f ${GRUP_DOSYA} ];then
  1607. for grup in `cat ${GRUP_DOSYA}`;do
  1608. [ "x${_grup}x" = "x${grup}x" ] && _var=1
  1609. done
  1610. if [ $_var -eq 0 ];then
  1611. cat -n ${GRUP_DOSYA}
  1612. _lineno=$(wc -l ${GRUP_DOSYA} | cut -d' ' -f1)
  1613. if [ $_grup = "bos" ];then
  1614. echo "Talimat grup bilgisi içermemektedir!"
  1615. else
  1616. echo "Talimat geçersiz grup bilgisi( $_grup ) içermektedir!"
  1617. fi
  1618. echo "Yukarıdaki grup numaralarından birini seçiniz!";read -p "No:" _no
  1619. [ $_no -lt 1 ] && grupad_kontrol $_grup ${_talimat}
  1620. [ $_no -gt $_lineno ] && grupad_kontrol $_grup ${_talimat}
  1621. _agrup=$(cat ${GRUP_DOSYA} | sed -n ${_no}p)
  1622. sed -i '/Grup:/d' ${_talimat}
  1623. sed -i "/# Gerekler/a # Grup: $_agrup" ${_talimat}
  1624. fi
  1625. else
  1626. echo "gruplar dosyası yok: ${GRUP_DOSYA}"
  1627. fi
  1628. }
  1629. talimat_surum_takip(){
  1630. local konum _takip_uzanti
  1631. _takip_uzanti=".takip"
  1632. konum=$(talimat_bul $1)
  1633. if [[ $konum == "-1" || $konum == "0" ]];then
  1634. $_yaz_uyari "$1 $_talimat_bulunamadi"
  1635. exit 1
  1636. else
  1637. if [ -f "$konum/$1$_takip_uzanti" ];then
  1638. source $konum/$1$_takip_uzanti
  1639. if [ "`type -t surum_takip`" = "function" ];then
  1640. $_yaz "$1 paketinin kaynak kod arşivleri inceleniyor..."
  1641. surum_takip
  1642. else
  1643. $_yaz_uyari "$1 talimatının sürüm takip işlevi yok!"
  1644. fi
  1645. else
  1646. $_yaz_uyari "$1 talimatının takip betiği yok!"
  1647. fi
  1648. fi
  1649. }
  1650. kaynak_kod_indir(){
  1651. local konum adres adres2
  1652. _kk_indir="wget --no-check-certificate -q ${wget_progress}"
  1653. konum=$(talimat_bul $1)
  1654. if [[ $konum == "-1" || $konum == "0" ]];then
  1655. $_yaz_uyari "$1 $_talimat_bulunamadi"
  1656. exit 1
  1657. else
  1658. source $konum/talimat
  1659. for adres in $kaynak;do
  1660. urlkont='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
  1661. if [[ $adres =~ $urlkont ]];then
  1662. if [[ $adres =~ "::" ]];then
  1663. adres2=$(echo $adres | cut -d':' -f-2)
  1664. $_yaz "$adres2 indiriliyor."
  1665. $_kk_indir $adres2
  1666. else
  1667. $_yaz "$adres indiriliyor."
  1668. $_kk_indir $adres
  1669. fi
  1670. else
  1671. $_yaz "$adres kopyalanıyor."
  1672. [ -f $konum/$adres ] && cp $konum/$adres .
  1673. fi
  1674. done
  1675. fi
  1676. }
  1677. paket_derle(){
  1678. #parametre olarak direk konum gelecek
  1679. #eski derleme kalıntılarını temizle
  1680. rm -rf tmp.*
  1681. kaynakdizin_kontrol
  1682. local konum derleme_onay eh bagimd derpaket _gncdurum
  1683. derleme_onay="h"
  1684. if [ -d "$1" ];then
  1685. konum="$1"
  1686. derpaket=`basename $1`
  1687. else
  1688. konum=$(talimat_bul $1)
  1689. if [[ $konum == "-1" || $konum == "0" ]];then
  1690. $_yaz_uyari "$1 $_talimat_bulunamadi"
  1691. exit 1
  1692. fi
  1693. derpaket="$1"
  1694. fi
  1695. if [ -d "$konum" ];then
  1696. #grup_kontrol $konum/talimat
  1697. mkdir -p tmp."$derpaket"
  1698. cp -a $konum/* tmp."$derpaket"/
  1699. cd tmp."$derpaket"
  1700. _kurulu=$(kurulu_kontrol "$derpaket")
  1701. # paket kurulu ise kurulu sürüm-devir depoyla kontrol edilir,gerekirse silinip yenisi derlenir.
  1702. if [ "$_kurulu" = "kurulu" ];then
  1703. _gncdurum=$(surum_devir_kontrol ${derpaket} --durum)
  1704. if [ "${_gncdurum}" == "var" ];then
  1705. echo "Kurulu sürüm depodaki sürümden farklı görünüyor depodaki sürüm ile eşitlemek ister misiniz? "
  1706. surum_devir_kontrol ${derpaket}
  1707. paket_sil ${derpaket}
  1708. # paket silinirse kurulu olma durumunu güncellenir.
  1709. _kurulu=$(kurulu_kontrol "$derpaket")
  1710. fi
  1711. fi
  1712. if [ "$_kurulu" = "kurulu" ] && [ "$zorla_derle" = "yok" ];then
  1713. derleme_onay="h"
  1714. else
  1715. derleme_onay="e"
  1716. fi
  1717. if [ "$derleme_onay" = "e" ];then
  1718. $_yaz_bilgi "$derpaket" "derleniyor...."
  1719. echo "------------------------"
  1720. mpsd -d 2>&1|tee /tmp/"$derpaket".log
  1721. if ( grep "^=======>" /tmp/"$derpaket".log| tail -1 |grep "ERROR" > /dev/null);then
  1722. echo "derleme sisteminde hata oluştu -----> " /tmp/"$derpaket".log
  1723. exit 1
  1724. fi
  1725. if [ "$kurulum_onay" = "evet" ];then
  1726. for kpkt in `ls $derpaket* | cut -d'#' -f1`;do
  1727. yerelden_kur "$kpkt#"*
  1728. done
  1729. fi
  1730. mv *.mps.lz ../
  1731. else
  1732. $_yaz "$derpaket $_zaten $_paket_kurulu,yine de derlemek için:
  1733. mps -zd $derpaket"
  1734. fi
  1735. cd ..
  1736. rm -r tmp."$derpaket"
  1737. else
  1738. $_yaz_uyari "talimat dosyası bulunamadı."
  1739. hataloglama "talimat dosyası bulunamadı."
  1740. fi
  1741. }
  1742. ##_ bagimlilar() : talimatta yer alan gereklerin listesinin alınması.
  1743. bagimlilar(){
  1744. local bagimd konum
  1745. konum=$(talimat_bul $1)
  1746. if [[ $konum != "-1" && $konum != "0" ]];then
  1747. bagimd=`cat $konum/talimat | grep "Gerekler" | cut -d':' -f2`
  1748. bagimd=$(echo "$bagimd" | sed 's/,/ /g')
  1749. echo "$bagimd"
  1750. else
  1751. echo "$konum"
  1752. fi
  1753. }
  1754. ters_bagimli_bilgi(){
  1755. local gtbpaket _secim
  1756. _secim="x"
  1757. gtbpaket=$1
  1758. [ "$2" ] && _secim="$2"
  1759. tbgdosya=$(mktemp)
  1760. grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}\s" $talimatname > $tbgdosya ;
  1761. grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}\s" $ektalimatname >> $tbgdosya ;
  1762. grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}$" $ektalimatname >> $tbgdosya ;
  1763. grep -rli "\s${gtbpaket}\s.*Gerekler\|Gerekler.*\s${gtbpaket}$" $talimatname >> $tbgdosya ;
  1764. cat $tbgdosya | xargs -I {} dirname {} | xargs -I {} basename {} | sort > /tmp/${gtbpaket}.tb.txt
  1765. rm -f $tbgdosya
  1766. [ -f /tmp/${gtbpaket}.tbk.txt ] && rm -f /tmp/${gtbpaket}.tbk.txt
  1767. if [ $_secim = "kurulu" ];then
  1768. for _kurulu_pkt in $(cat /tmp/${gtbpaket}.tb.txt);do
  1769. if [ -d $VT/$_kurulu_pkt ];then
  1770. echo "$_kurulu_pkt" >> /tmp/${gtbpaket}.tbk.txt
  1771. fi
  1772. done
  1773. [ -f /tmp/${gtbpaket}.tbk.txt ] && cat "/tmp/${gtbpaket}.tbk.txt"
  1774. elif [ $_secim = "bilgi" ];then
  1775. for _kurulu_pkt in $(cat /tmp/${gtbpaket}.tb.txt);do
  1776. if [ -d $VT/$_kurulu_pkt ];then
  1777. echo "$_kurulu_pkt kurulu" >> /tmp/${gtbpaket}.tbk.txt
  1778. else
  1779. echo "$_kurulu_pkt değil" >> /tmp/${gtbpaket}.tbk.txt
  1780. fi
  1781. done
  1782. [ -f /tmp/${gtbpaket}.tbk.txt ] && cat "/tmp/${gtbpaket}.tbk.txt"
  1783. else
  1784. cat "/tmp/${gtbpaket}.tb.txt"
  1785. fi
  1786. rm -rf $tbgdizin
  1787. }
  1788. kirik_ters_bagimli_bilgi(){
  1789. $_yaz "Aşağıdaki kurulu ters bağımlılıklarda kırılım araması yapılacaktır."
  1790. ters_bagimli_bilgi $1
  1791. $_yaz "........"
  1792. talimatlar=$(cat /tmp/$1.tb.txt)
  1793. for tal in $talimatlar;do
  1794. #paket kuruluysa kontrolu yapılacak
  1795. if [ -d "$VT/$tal" ];then
  1796. $_yaz_bilgi "$tal paketi araştırılıyor:"
  1797. kirik_kontrol_paket $tal
  1798. $_yaz_bilgi "--------------------------"
  1799. fi
  1800. done
  1801. }
  1802. bagimli_bilgi(){
  1803. local _konum bagimd _dosya _paket
  1804. [ $1 ] && _paket="$1" || hata_olustu "_paket_adi_gerekli"
  1805. _konum=$(talimat_bul $_paket)
  1806. if [ "$_konum" = "-1" ];then
  1807. $_yaz_uyari "$_paket tanimsiz"
  1808. exit 0
  1809. else
  1810. bagimd=`cat $_konum/talimat | grep "Gerekler" | cut -d':' -f2`
  1811. if [ -n "$bagimd" ]; then
  1812. bagimd=`echo "$bagimd" | sed 's/,/ /g'`
  1813. for bag in $bagimd;do
  1814. if [ "$2" = "dogrula" ];then
  1815. kurulum_dogrulama_icerik "$bag"
  1816. else
  1817. echo "$bag" "`kurulu_kontrol $bag`"
  1818. fi
  1819. done
  1820. fi
  1821. if [ "$2" = "dogrula" ];then
  1822. kurulum_dogrulama_icerik "$1"
  1823. else
  1824. echo "$1" "`kurulu_kontrol $1`"
  1825. fi
  1826. fi
  1827. }
  1828. bagimli_bilgi_dosyala(){
  1829. local _konum bagimd _dosya _paket
  1830. [ $1 ] && _paket="$1" || hata_olustu "_paket_adi_gerekli"
  1831. _konum=$(talimat_bul $_paket)
  1832. if [ "$_konum" = "-1" ];then
  1833. $_yaz_uyari "$_paket tanimsiz"
  1834. exit 0
  1835. else
  1836. _dosya="/tmp/${_paket}.gerekler.liste"
  1837. rm -f ${_dosya}
  1838. bagimd=`cat $_konum/talimat | grep "Gerekler" | cut -d':' -f2`
  1839. if [ -n "$bagimd" ]; then
  1840. bagimd=`echo "$bagimd" | sed 's/,/ /g'`
  1841. for bag in $bagimd;do
  1842. echo "$bag" >> "/tmp/$1.gerekler.liste"
  1843. #echo "$bag"
  1844. #for _tb in $(ters_bagimli_bilgi $bag);do
  1845. # echo '|____' $_tb
  1846. #done
  1847. done
  1848. fi
  1849. fi
  1850. }
  1851. # güncellemelerin alınması talimatname üzerinden
  1852. guncellemeler(){
  1853. #diff --changed-group-format='***%>' --unchanged-group-format='' --new-group-format='+++%>' \
  1854. #$paketdepo/paket.vt.eski $paketdepo/paket.vt | cut -d' ' -f1 | sort --version-sort
  1855. _mps_guncellenecekler="/tmp/mps.guncellenecekler.liste"
  1856. [ -f $_mps_guncellenecekler ] && rm $_mps_guncellenecekler
  1857. for _paket in $(ls $VT);do
  1858. if [ "$(surum_devir_kontrol ${_paket} x)" = "var" ];then
  1859. echo ${_paket} >> $_mps_guncellenecekler
  1860. fi
  1861. done
  1862. if [ -f $_mps_guncellenecekler ];then
  1863. echo "guncellenecek liste"
  1864. echo "-------------------"
  1865. cat $_mps_guncellenecekler
  1866. fi
  1867. }
  1868. # iki dosyanın içerik karşılaştırması yapar.
  1869. dosya_karsilastir(){
  1870. if cmp -s "$1" "$2"
  1871. then
  1872. echo "evet"
  1873. else
  1874. echo "degil"
  1875. fi
  1876. }
  1877. # ip bulma
  1878. ip_bul(){
  1879. url='[a www.milislinux.org]'
  1880. domain=`echo $url | sed 's-^[^/]*/*\([^/]*\)/\?.*$-\1-'`
  1881. echo "< $domain"
  1882. ipaddr=`ping -c 1 $domain | sed -n 's@^.*(\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*$@\1@p' | head -1`
  1883. req_url=`echo $url | sed "s-/[^/]\+-/$ipaddr-"`
  1884. echo req_url
  1885. }
  1886. # renkli mesaj
  1887. ryaz() {
  1888. [ -z "$1" ] && return
  1889. : ${color=$1}
  1890. shift
  1891. case $color in
  1892. 0*) echo -e "\\033[${color:-38}m$@\\033[39m";;
  1893. *) echo -e "\\033[1;${color:-38}m$@\\033[0;39m";;
  1894. esac
  1895. unset color
  1896. }
  1897. log_analiz(){
  1898. local zaman durum
  1899. zaman=$1
  1900. durum=$2
  1901. if [ -f "/var/log/mps/mps.log" ];then
  1902. cat $logdosya | grep "$zaman" | grep "$durum" | cut -d' ' -f3
  1903. else
  1904. $_yaz_uyari "mps.log bulunamadı!"
  1905. hataloglama "mps.log bulunamadı!"
  1906. fi
  1907. }
  1908. silme_etkilenme_tespit(){
  1909. local _paket _kliste _eliste dizin
  1910. local _satir _edosya _ipaket _ustdizin
  1911. [ -z $1 ] && hata_olustu "_paket_adi_gerekli" || _paket=$1
  1912. _kliste=`mktemp`
  1913. _eliste=`mktemp`
  1914. #[ -d /tmp/${_paket}_kurtarma ] && rm -rf /tmp/${_paket}_kurtarma
  1915. #mkdir -p /tmp/${_paket}_kurtarma
  1916. [ -f /tmp/${_paket}_kd.liste ] && rm -rf /tmp/${_paket}_kd.liste
  1917. [ -f /tmp/${_paket}_ep.liste ] && rm -rf /tmp/${_paket}_ep.liste
  1918. for _temp in $(cat $VT/${_paket}/kurulan);do
  1919. dizin=${_temp//[\']/}
  1920. if [ -d $dizin ] ;then
  1921. grep --exclude=$VT/${_paket}/kurulan -ri "'${dizin}/" $VT/*/kurulan \
  1922. | while read -r _isatir ; do
  1923. #echo "$_isatir"
  1924. #echo "$dizin - $_paket -"
  1925. echo "${dizin}" >> ${_kliste}
  1926. _esatir=$(echo ${_isatir} | cut -d ':' -f1)
  1927. _edosya=$(echo ${_isatir} | cut -d ':' -f2)
  1928. _ipaket=$(basename $(dirname ${_esatir}))
  1929. _ustdizin=$(dirname ${_edosya//[\']/})
  1930. #mkdir -p /tmp/${_paket}_kurtarma/${_ustdizin}
  1931. if [ ! -d ${_edosya//[\']/} ];then
  1932. [ ! -f ${_edosya//[\']/} ] && echo "${_edosya//[\']/} dosyası eksik!"
  1933. fi
  1934. # eksik dosyalar onaylı yekur yapılacak.
  1935. # /var/lib/pkg/kurtarma altına kopayalama seçimli olacak.
  1936. #\
  1937. # cp -rf ${_edosya//[\']/} /tmp/${_paket}_kurtarma/${_ustdizin}
  1938. echo "${_ipaket}" >> ${_eliste}
  1939. done
  1940. fi
  1941. done
  1942. if [ -s ${_kliste} ];then
  1943. sort -u ${_kliste} > /tmp/${_paket}_kd.liste
  1944. $_yaz "etkilenen konumlar"
  1945. cat /tmp/${_paket}_kd.liste
  1946. fi
  1947. if [ -s ${_eliste} ];then
  1948. sort -u ${_eliste} > /tmp/${_paket}_ep.liste
  1949. $_yaz "etkilenen paketler"
  1950. cat /tmp/${_paket}_ep.liste
  1951. fi
  1952. rm -rf ${_eliste} ${_kliste}
  1953. }
  1954. eski_etkilenen_kurtar(){
  1955. local dizin paket
  1956. paket=$1
  1957. if [ -f $VT/$paket/kurulan ];then
  1958. cat $VT/$paket/kurulan | cut -d '>' -f2 > /tmp/$paket.sil
  1959. for f in $(cat /tmp/$paket.sil) ; do
  1960. dizin="${f%\'}"
  1961. dizin="${dizin#\'}"
  1962. if [ -d "$dizin" ];then
  1963. for g in `ls "$dizin"` ; do
  1964. if ! grep -Fxq " '$dizin/$g'" "/tmp/$paket.sil"
  1965. then
  1966. if [ -f /tmp/$paket.kurtar ];then
  1967. rm /tmp/$paket.kurtar
  1968. fi
  1969. echo " '$dizin'" >> "/tmp/$paket.kurtar"
  1970. fi
  1971. done
  1972. fi
  1973. done
  1974. if [ -f /tmp/$paket.kurtar ];then
  1975. mv $VT/$paket/kurulan $VT/$paket/ilk.kurulan
  1976. grep -v -F -x -f "/tmp/$paket.kurtar" "/tmp/$paket.sil" > $VT/$paket/kurulan
  1977. $_yaz "$paket etkilenen dosyaları kurtarıldı."
  1978. else
  1979. $_yaz "$paket etkilenen dosyası yok."
  1980. fi
  1981. rm -f /tmp/$paket.sil
  1982. else
  1983. $_yaz_uyari "kurulan paket yok!"
  1984. hataloglama "kurulan paket yok!"
  1985. fi
  1986. }
  1987. ters_bagimli_kontrol(){
  1988. ters_bagimli_bilgi $1
  1989. cat /tmp/${1}.tb.txt | sort > tersb.liste
  1990. ls $VT/ | sed "/$1/d" | sort > simdiki.liste
  1991. comm -12 tersb.liste simdiki.liste
  1992. rm tersb.liste simdiki.liste
  1993. }
  1994. kurulu_kontrol(){
  1995. local _konum _apaket
  1996. [ -z $1 ] && hata_olustu "_paket_adi_gerekli"
  1997. _apaket=$1
  1998. cikti_renk_ayarla "--renksiz"
  1999. [ $2 ] && cikti_renk_ayarla "$2"
  2000. if [ -d "$VT/$_apaket" ];then
  2001. $_yaz "kurulu"
  2002. exit 0
  2003. fi
  2004. _konum=$(talimat_bul $_apaket)
  2005. if [ "$_konum" = "-1" ];then
  2006. $_yaz_uyari "tanimsiz"
  2007. else
  2008. $_yaz_uyari "degil"
  2009. fi
  2010. exit 1
  2011. }
  2012. sistem_kur(){
  2013. local spaket
  2014. for spaket in `cat $1`;do
  2015. ./$betikad -ik "$spaket" -kok $2;
  2016. done
  2017. }
  2018. kaynakdizin_kontrol(){
  2019. if [ ! -d $kaynak_dizin ];then
  2020. mkdir $kaynak_dizin
  2021. fi
  2022. }
  2023. logdizin_kontrol(){
  2024. if [ ! -d $kokdizin$LOGDIZIN ];then
  2025. mkdir $kokdizin$LOGDIZIN
  2026. fi
  2027. if [ ! -d $kokdizin$LOGDIZIN/derleme ];then
  2028. mkdir $kokdizin$LOGDIZIN/derleme
  2029. fi
  2030. if [ ! -f $kokdizin$LOGDIZIN/mps.log ];then
  2031. touch $kokdizin$LOGDIZIN/mps.log
  2032. fi
  2033. if [ ! -f $kokdizin$LOGDIZIN/mps-hata.log ];then
  2034. touch $kokdizin$LOGDIZIN/mps-hata.log
  2035. fi
  2036. if [ ! -f $kokdizin$LOGDIZIN/mps-git.log ];then
  2037. touch $kokdizin$LOGDIZIN/mps-git.log
  2038. fi
  2039. }
  2040. tarihce_dkontrol(){
  2041. if [ ! -d $TARIHCE_DIZIN ];then
  2042. mkdir $TARIHCE_DIZIN
  2043. fi
  2044. }
  2045. temel_tarihce_kontrol(){
  2046. if [ ! -f $TARIHCE_DIZIN/temel-pkvt.tar.lz ];then
  2047. tarihce_olustur "temel"
  2048. fi
  2049. }
  2050. tarihce_liste(){
  2051. tarihce_dkontrol
  2052. ls $TARIHCE_DIZIN/
  2053. }
  2054. tarihce_yap(){
  2055. tarihce_dkontrol
  2056. local t_isim
  2057. if [ "$temel_tarihce" = "evet" ];then
  2058. t_isim="temel"
  2059. else
  2060. t_isim=`date +%m-%d-%y.%H%M%S`
  2061. fi
  2062. tarihce_olustur "$t_isim"
  2063. }
  2064. tarihce_olustur(){
  2065. ${_tar} -P -r -f $TARIHCE_DIZIN/"$1"-pkvt.tar $VT
  2066. lzip -9 $TARIHCE_DIZIN/"$1"-pkvt.tar
  2067. }
  2068. tarihce_yukle(){
  2069. tarihce_dkontrol
  2070. local islem_onay cikis
  2071. sil_onay="h"
  2072. if [ -f $TARIHCE_DIZIN/"$1-pkvt.tar.lz" ];then
  2073. ${_tar} -p -o -C /tmp -xf $TARIHCE_DIZIN/"$1-pkvt.tar.lz" &> /dev/null
  2074. ls /tmp$VT/ > hedef.pkvt
  2075. ls $VT/ > simdiki.pkvt
  2076. grep -v -F -x -f hedef.pkvt simdiki.pkvt > sil.liste
  2077. grep -v -F -x -f simdiki.pkvt hedef.pkvt > kur.liste
  2078. #rm hedef.pkvt simdiki.pkvt
  2079. rm -r /tmp/var
  2080. cikis=""
  2081. if [ -s sil.liste ];then
  2082. $_yaz "silinecekler"
  2083. $_yaz "------------"
  2084. cat sil.liste
  2085. fi
  2086. if [ -s kur.liste ];then
  2087. $_yaz "kurulacaklar"
  2088. $_yaz "------------"
  2089. cat kur.liste
  2090. fi
  2091. if [ ! -s sil.liste ] && [ ! -s kur.liste ];then
  2092. $_yaz "sistem zaten hedef durumda!"
  2093. exit 1
  2094. fi
  2095. while true; do
  2096. $_yaz_tm "otomatik geri dönüşüm başlasın mı?";read -p "e veya h-> " eh
  2097. case $eh in
  2098. [Ee]* ) islem_onay="e"; break;;
  2099. [Hh]* ) break;;
  2100. * ) echo "e veya h";;
  2101. esac
  2102. done
  2103. if [ "$islem_onay" = "e" ];then
  2104. paket_sil_oto sil.liste
  2105. mps kurul kur.liste
  2106. mv sil.liste silinenler.liste
  2107. mv kur.liste kurulanlar.liste
  2108. exit 1
  2109. fi
  2110. mv sil.liste sil_iptal.liste
  2111. mv kur.liste kur_iptal.liste
  2112. else
  2113. $_yaz_uyari "ilgili tarihce dosyası bulunamadı!"
  2114. hataloglama "ilgili tarihce dosyası bulunamadı!"
  2115. fi
  2116. [ -f $PWD/hedef.pkvt ] && rm $PWD/hedef.pkvt
  2117. [ -f $PWD/simdiki.pkvt ] && rm $PWD/simdiki.pkvt
  2118. }
  2119. tarihce_sil(){
  2120. tarihce_dkontrol
  2121. if [ -f $TARIHCE_DIZIN/"$1-pkvt.tar.lz" ];then
  2122. rm -f $TARIHCE_DIZIN/"$1-pkvt.tar.lz"
  2123. else
  2124. $_yaz_uyari "ilgili tarihce dosyası bulunamadı!"
  2125. hataloglama "ilgili tarihce dosyası bulunamadı!"
  2126. fi
  2127. }
  2128. sunucu_ayarla(){
  2129. wget -q --spider "$1/paket.vt"
  2130. yenisun="$1"
  2131. if [ $? -eq 0 ]; then
  2132. sed -i.bak 's/^\(sunucu=\).*/\1"xverix\/"/' /etc/mps.conf
  2133. sed -i "s|xverix|$1|" /etc/mps.conf
  2134. mps -sun
  2135. else
  2136. $_yaz_uyari "Tanımsız paket sunucusu!"
  2137. hataloglama "Tanımsız paket sunucusu!"
  2138. fi
  2139. }
  2140. loglama(){
  2141. logdizin_kontrol
  2142. echo "$(date +'%F %T') $1" >> "$kokdizin/$LOGDIZIN/mps.log"
  2143. }
  2144. hataloglama(){
  2145. logdizin_kontrol
  2146. echo "$(date +'%F %T') $1" >> "$kokdizin/$LOGDIZIN/mps-hata.log"
  2147. }
  2148. indir_talimat_paketle(){
  2149. local dosya _ip _talkonum _ek_talimat_link
  2150. _wget="wget --quiet --no-check-certificate"
  2151. if [ ! -z "$1" ];then dosya=$1;else $_yaz_uyari "link parametre eksik";exit 1;fi
  2152. if [ ! -z "$2" ];then _ip=$2;else $_yaz_uyari "ip tipi parametresi eksik";exit 1;fi
  2153. if [ ! -z "$3" ];then _talkonum=$3;else $_yaz_uyari "talimatname konum parametre eksik";exit 1;fi
  2154. # ek-talimatname altında ilgili talimat var mı kontrol edilir
  2155. _ek_talimat_link="${ektalimatname_repo}/raw/master/${dosya}/talimat"
  2156. wget -q --spider ${_ek_talimat_link}
  2157. [ $? -eq 0 ] && dosya=${_ek_talimat_link}
  2158. urlkont='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
  2159. if [[ $dosya =~ $urlkont ]];then
  2160. gdosya=`mktemp`
  2161. if [[ $_ip =~ "-6" ]]; then
  2162. $_yaz "talimat IPv6: ${dosya} linkinden indirildi."
  2163. $_wget $_ip $dosya -O $gdosya
  2164. else
  2165. $_yaz "talimat IPv4: ${dosya} linkinden indirildi."
  2166. $_wget $_ip $dosya -O $gdosya
  2167. fi
  2168. dosya=$gdosya
  2169. else
  2170. $_yaz_uyari "link geçersiz"
  2171. exit 1
  2172. fi
  2173. if [ ! -f $dosya ];then
  2174. $_yaz_uyari "$dosya talimat dosyasi yok!"
  2175. exit 1
  2176. fi
  2177. local _isim
  2178. _isim=`grep "^name=" $dosya | head -n1 | cut -d'=' -f 2`
  2179. [ -z "${_isim}" ] && _isim=`grep "^isim=" $dosya | head -n1 | cut -d'=' -f 2`
  2180. if [ ! -n "${_isim}" ]; then
  2181. $_yaz_uyari "paket ismi degiskeni bulunamadı!"
  2182. exit 1
  2183. fi
  2184. if [ ! -d $_talkonum/${_isim:0:1}/${_isim} ];then
  2185. mkdir -p $_talkonum/${_isim:0:1}/${_isim}
  2186. cp -f $dosya $_talkonum/${_isim:0:1}/${_isim}/talimat
  2187. talimat_degisken_cevrim $_talkonum/${_isim:0:1}/${_isim}/talimat
  2188. $_yaz "${_isim} talimatı hazırlandı."
  2189. else
  2190. $_yaz_uyari "${_isim} talimatı zaten talimatnamede var!"
  2191. while true; do
  2192. $_yaz_tm ${_isim}" talimatı yenilensin mi?";read -p "e veya h-> " eh
  2193. case $eh in
  2194. [Ee]* ) rm -rf $_talkonum/${_isim:0:1}/${_isim};indir_talimat_paketle $1 "-4" "$ektalimatname/topluluk";break;;
  2195. [Hh]* ) break;;
  2196. * ) echo "e veya h";;
  2197. esac
  2198. done
  2199. fi
  2200. }
  2201. talimat_degisken_cevrim(){
  2202. _dosya=$1
  2203. if [ -f $_dosya ];then
  2204. sed -i 's/name=/isim=/g' $_dosya
  2205. sed -i 's/$name/$isim/g' $_dosya
  2206. sed -i 's/${name}/${isim}/g' $_dosya
  2207. sed -i 's/version=/surum=/g' $_dosya
  2208. sed -i 's/$version/$surum/g' $_dosya
  2209. sed -i 's/${version}/${surum}/g' $_dosya
  2210. sed -i 's/${version%.*}/${surum%.*}/g' $_dosya
  2211. sed -i 's/release=/devir=/g' $_dosya
  2212. sed -i 's/$release/$devir/g' $_dosya
  2213. sed -i 's/${release}/${devir}/g' $_dosya
  2214. sed -i 's/source=/kaynak=/g' $_dosya
  2215. sed -i 's/build()/derle()/g' $_dosya
  2216. sed -i 's/build ()/derle()/g' $_dosya
  2217. sed -i 's/Description:/Tanım:/g' $_dosya
  2218. sed -i 's/Description=/Tanım:/g' $_dosya
  2219. sed -i 's/Url=/Url:/g' $_dosya
  2220. sed -i 's/description:/Tanım:/g' $_dosya
  2221. sed -i 's/Description :/Tanım:/g' $_dosya
  2222. sed -i 's/Packager:/Paketçi:/g' $_dosya
  2223. sed -i 's/packager:/Paketçi:/g' $_dosya
  2224. sed -i 's/Packagers:/Paketçi:/g' $_dosya
  2225. sed -i 's/Packager :/Paketçi:/g' $_dosya
  2226. sed -i 's/Depends on:/Gerekler:/g' $_dosya
  2227. sed -i 's/Depends:/Gerekler:/g' $_dosya
  2228. sed -i 's/Depends on :/Gerekler:/g' $_dosya
  2229. sed -i '/Maintainer:/d' $_dosya
  2230. sed -i '/Optional:/d' $_dosya
  2231. else
  2232. $_yaz_uyari "ilgili talimat dosyası bulunamadı."
  2233. fi
  2234. }
  2235. talimat_olustur(){
  2236. if [ "$1" = '?' ];then
  2237. $_yaz_tm "kullanım : mps -to paket_ismi"
  2238. else
  2239. local isim
  2240. isim=$1
  2241. mkdir -p $isim
  2242. tee "$isim/talimat" > /dev/null <<EOF
  2243. # Tanım: paket açıklaması
  2244. # Url: paketin ilgili web sayfası
  2245. # Paketçi: paketçi
  2246. # Gerekler:
  2247. # Grup:
  2248. isim=$isim
  2249. surum=1
  2250. devir=1
  2251. kaynak=()
  2252. derle() {
  2253. cd \$isim-\$surum
  2254. ./autogen.sh
  2255. ./configure --prefix=/usr
  2256. make
  2257. make DESTDIR=\$PKG install
  2258. }
  2259. EOF
  2260. $_yaz_tm $isim "talimatı oluşturuldu."
  2261. fi
  2262. }
  2263. git_guncelle() {
  2264. kaynakdizin_kontrol
  2265. gitayar_kontrol
  2266. local _yerel
  2267. #git deponun sunucudan güncellenmesi
  2268. $_yaz_bilgi "$_git_guncelleniyor : $git_sunucu"
  2269. if [ $(sunucu_erisim ${git_repo}) = "aktif" ];then
  2270. if [ ! -d ${git_yereldepo} ];then
  2271. git clone ${git_repo} ${git_yereldepo}
  2272. #rsync -av ${git_yereldepo}/rootfs/* /
  2273. else
  2274. cd ${git_yereldepo}
  2275. git pull >& $LOGDIZIN/mps-git.log
  2276. if grep -q "Already\ up-to-date" $LOGDIZIN/mps-git.log; then
  2277. $_yaz "$_git_guncel"
  2278. else
  2279. #ryaz 32 `cat $LOGDIZIN/mps-git.log`
  2280. $_yaz "$_git_guncellendi"
  2281. fi
  2282. fi
  2283. else
  2284. $_yaz_uyari "${git_repo} erişim olumsuz.Uzaktan güncelleme alınamadı."
  2285. fi
  2286. if [ -d ${git_yereldepo} ];then
  2287. # git depodan yerel güncellemelerin yapılması
  2288. #baslangic betiklerinin guncellenmesi
  2289. #rsync -aviz -q --delete ${git_yereldepo}/rootfs/lib/services/* /lib/services/
  2290. [ -d /lib/services/ ] && cp --remove-destination -rf ${git_yereldepo}/rootfs/lib/services/* /lib/services/
  2291. # talimatname ve betiklerin güncellenmesi
  2292. _yerel=$(dirname $talimatname)
  2293. cd ${_yerel}
  2294. rm -rf $talimatname ${_yerel}/bin ${_yerel}/ayarlar
  2295. cp -rf ${git_yereldepo}/talimatname/ ${_yerel}/
  2296. cp -rf ${git_yereldepo}/bin ${_yerel}/
  2297. cp -rf ${git_yereldepo}/ayarlar ${_yerel}/
  2298. #ikili dosyaların /usr/bin altına kısayol atılması
  2299. for i in ${_yerel}/bin/*; do
  2300. j=`basename $i`
  2301. if [ ! -L /usr/bin/$j ];then
  2302. ln -sf ${_yerel}/bin/$j /usr/bin/$j
  2303. fi
  2304. done
  2305. #kırık linklerin temizlenmesi
  2306. find -L /usr/bin/* -name . -o -type d -prune -o -type l -exec rm {} +
  2307. find -L ${_yerel}/bin/* -name . -o -type d -prune -o -type l -exec rm {} +
  2308. [ -d /root/bin ] && find -L /root/bin/* -name . -o -type d -prune -o -type l -exec rm {} +
  2309. $_yaz "$_yerel_esitlendi"
  2310. else
  2311. $_yaz "$_yerel_esitlendi_olumsuz"
  2312. fi
  2313. # ek git depolarının güncellenmesi
  2314. [[ ! -z ${git_ekrepo} ]] && git_ek_guncelle
  2315. }
  2316. git_proje_kur(){
  2317. local proje proj_dizin git_link
  2318. git_link="https://notabug.org/milisarge"
  2319. proje="$1"
  2320. proj_dizin="/opt"
  2321. mkdir -p $proj_dizin
  2322. if [ -d "$proj_dizin/$proje" ];then
  2323. cd $proj_dizin/$proje
  2324. git pull
  2325. if [ -f mops ];then
  2326. . mops
  2327. mops_gun
  2328. fi
  2329. else
  2330. git clone "$git_link/$proje" "$proj_dizin/$proje"
  2331. cd $proj_dizin/$proje
  2332. if [ -f mops ];then
  2333. . mops
  2334. mops_kur
  2335. mops_sil
  2336. mops_gun
  2337. fi
  2338. fi
  2339. }
  2340. op_kur(){
  2341. local mopsyol mops
  2342. mops=$1
  2343. mopsyol="~/mops/$mops"
  2344. # talimatnameye bak
  2345. if [ -d $mopsyol ]; then
  2346. $mopsyol/talimat kur
  2347. # yerelde ara
  2348. elif [ -f $PWD/"$mops" ]; then
  2349. ./"$mops" kur
  2350. else
  2351. $_yaz_uyari "$1 mops talimatı bulunamadı!"
  2352. fi
  2353. }
  2354. op_sil(){
  2355. local mopsyol mops
  2356. mops=$1
  2357. mopsyol="~/mops/$mops"
  2358. # talimatnameye bak
  2359. if [ -d $mopsyol ]; then
  2360. $mopsyol/talimat sil
  2361. # yerelde ara
  2362. elif [ -f $PWD/"$mops" ]; then
  2363. ./"$mops" sil
  2364. else
  2365. $_yaz_uyari "$1 mops talimatı bulunamadı!"
  2366. fi
  2367. }
  2368. servis_kur(){
  2369. cd ${git_yereldepo}/ayarlar/servisler
  2370. if make kur-$1
  2371. then
  2372. $_yaz "$1 servisi kuruldu"
  2373. else
  2374. $_yaz_uyari "$1 servisi kurulum olumsuz!!!"
  2375. hataloglama "$1 servisi kurulum olumsuz!!!"
  2376. fi
  2377. cd -
  2378. }
  2379. servis_sil(){
  2380. cd ${git_yereldepo}/ayarlar/servisler
  2381. if make sil-$1
  2382. then
  2383. $_yaz "$1 servisi silindi"
  2384. else
  2385. $_yaz_uyari "$1 servisi silme olumsuz!!!"
  2386. hataloglama "$1 servisi silme olumsuz!!!"
  2387. fi
  2388. cd -
  2389. }
  2390. servisler_kontrol(){
  2391. servisler=`ls ${git_yereldepo}/ayarlar/servisler/mbd/init.d`
  2392. for ser in $(ls /etc/init.d/) ; do
  2393. if [ ! -f ${git_yereldepo}/ayarlar/servisler/mbd/init.d/$ser ];then
  2394. printf "%12s %s\n" "$ser mbd kaydı bulunamadı!"
  2395. else
  2396. if cmp -s "${git_yereldepo}/ayarlar/servisler/mbd/init.d/$ser" "$ser"
  2397. then
  2398. printf "%12s %s\n" "$ser" "mbd uyumsuz"
  2399. else
  2400. #ryaz 32 "$ser mbd +++++"
  2401. printf "%12s %s\n" "$ser" "mbd +++++"
  2402. fi
  2403. fi
  2404. done
  2405. }
  2406. talimat_bilgi(){
  2407. local _konum _apaket
  2408. _apaket=$1
  2409. [ "$2" ] && cikti_renk_ayarla "$2"
  2410. _konum=$(talimat_bul $_apaket)
  2411. if [ "$_konum" = "-1" ];then
  2412. $_yaz_uyari "$_apaket $_paket_bulunamadi"
  2413. exit 1
  2414. else
  2415. grep "derle()" -B 12 $_konum/talimat |sed '$ d'
  2416. $_yaz "file://$_konum/talimat"
  2417. #$_yaz "https://raw.githubusercontent.com/milisarge/malfs-milis/master/$(echo $_konum | cut -d'/' -f3-6)/talimat"
  2418. $_yaz "${git_sunucu}/${hesap_repo}/raw/master/$(echo $_konum | cut -d'/' -f3-6)/talimat"
  2419. fi
  2420. }
  2421. talimat_yazdir(){
  2422. local _konum _apaket
  2423. _apaket=$1
  2424. _konum=$(talimat_bul $_apaket)
  2425. if [ "$_konum" = "-1" ];then
  2426. $_yaz_uyari "$_apaket $_paket_bulunamadi"
  2427. exit 1
  2428. else
  2429. cat $_konum/talimat
  2430. fi
  2431. }
  2432. sistem_kontrol(){
  2433. paketvt_kontrol
  2434. sunucu_kontrol
  2435. }
  2436. sunucu_erisim(){
  2437. local _sunucu
  2438. [ $1 ] && _sunucu="$1"
  2439. wget --no-check-certificate -q --spider "${_sunucu}"
  2440. if [ $? -eq 0 ]; then
  2441. echo "aktif"
  2442. else
  2443. echo "pasif"
  2444. fi
  2445. }
  2446. sunucu_kontrol(){
  2447. local _sunucular=$(echo ${sunucular} | tr " " "\n")
  2448. for _sunucu in ${_sunucular}; do
  2449. [ $(sunucu_erisim ${_sunucu}/paket.vt) = "aktif" ] && $_yaz "${_sunucu} paket sunucu aktif" \
  2450. || $_yaz_uyari "${_sunucu} sunucu erişim dışı"
  2451. done
  2452. }
  2453. gitayar_kontrol(){
  2454. if [ ! -f /root/.gitconfig ];then
  2455. [ `which git_ssl_iptal` ] && git_ssl_iptal
  2456. [ `which git_otokimlik` ] && git_otokimlik
  2457. fi
  2458. }
  2459. kirik_kontrol_sistem(){
  2460. local onek sonek
  2461. onek="'"
  2462. sonek="'"
  2463. for paket in `ls $VT/`
  2464. do
  2465. $_yaz_bilgi $paket "kontrol ediliyor."
  2466. kirik_kontrol_paket $paket
  2467. $_yaz_bilgi $paket "kontrol edildi."
  2468. done
  2469. }
  2470. kirik_kontrol_paket(){
  2471. local onek sonek
  2472. onek="'"
  2473. sonek="'"
  2474. for kdosya in `kurulum_dosya_listele $1`
  2475. do
  2476. dosya=${kdosya#$onek}
  2477. dosya=${dosya%$sonek}
  2478. #echo "${dosya}"
  2479. if [ -f $dosya ];then
  2480. if [[ $(milis-ldd -d $dosya | grep not\ found) ]] ;then
  2481. echo $kdosya
  2482. fi
  2483. fi
  2484. done
  2485. }
  2486. kurulum_dogrulama(){
  2487. for kuruland in `ls $VT`
  2488. do
  2489. if [ ! -f "$VT/$kuruland/kurulan" ]; then
  2490. $_yaz "$kuruland hasarlı kurulum tesbiti!"
  2491. rm -r $VT/$kuruland
  2492. paket_indir $kuruland
  2493. yerelden_kur "$paketdepo/$kuruland"*.mps.lz
  2494. $_yaz "$kuruland hasarlı kurulum onarıldı."
  2495. fi
  2496. done
  2497. }
  2498. paket_icerik_dogrulama(){
  2499. local dosyayol kontpaketadi tempmpslz pidanayol
  2500. kontpaketadi="$1"
  2501. if [ -f "$paketdepo/$kontpaketadi#"*.mps.lz ];then
  2502. tempmpslz=$(mktemp)
  2503. if [ -d $2 ];then
  2504. pidanayol="$2"
  2505. ${_tar} tf "$paketdepo/$kontpaketadi#"*.mps.lz > $tempmpslz
  2506. IFS=''
  2507. while read dosyayol;do
  2508. if [ ! -f $pidanayol$dosyayol ] && [ ! -d $pidanayol$dosyayol ] && [ $dosyayol != ".MTREE" ] && [ $dosyayol != ".META" ]; then
  2509. $_yaz_uyari "$pidanayol$dosyayol hasarlı"
  2510. while true; do
  2511. $_yaz_tm $kontpaketadi" paketi yenilensin mi?";read -p "e veya h-> " eh
  2512. case $eh in
  2513. [Ee]* ) tekrarkur="evet";agdan_kur "$kontpaketadi";break;;
  2514. [Hh]* ) break;;
  2515. * ) echo "e veya h";;
  2516. esac
  2517. done
  2518. fi
  2519. done < $tempmpslz
  2520. else
  2521. $_yaz_uyari "$2 kök dizini bulunamadı!"
  2522. exit 1
  2523. fi
  2524. else
  2525. $_yaz_uyari "$1 paketi bulunamadı!"
  2526. exit 1
  2527. fi
  2528. }
  2529. kurulum_dogrulama_icerik_tum(){
  2530. $_yaz_bilgi "paket veritabanı yedekleniyor"
  2531. tarihce_yap
  2532. for kurulanpak in `ls $VT`
  2533. do
  2534. if [ -f "$VT/$kurulanpak/kurulan" ]; then
  2535. kurulum_dogrulama_icerik $kurulanpak
  2536. $_yaz "$kurulanpak kurulum icerik onarıldı."
  2537. fi
  2538. done
  2539. }
  2540. chr_yordam() {
  2541. [ "$1" -lt 256 ] || return 1
  2542. printf "\\$(printf '%03o' "$1")"
  2543. }
  2544. ord_yordam() {
  2545. LC_CTYPE=C printf '%d' "'$1"
  2546. }
  2547. kurulum_dogrulama_icerik(){
  2548. paketadi="$1"
  2549. onar="hayir"
  2550. #echo $VT
  2551. #tarihce_yap
  2552. $_yaz_uyari "$paketadi içeriği kontrol ediliyor."
  2553. if [ -f "$VT/$paketadi/kurulan" ]; then
  2554. ilksatir=`head -n 1 $VT/$paketadi/kurulan`
  2555. if [[ `echo ${ilksatir}` =~ ^‘ ]] ; then
  2556. $_yaz "temel sistem paket kurulan hatası düzeltildi!"
  2557. sed -i 's/‘/'\''\//;s/’/'\''/' $VT/$paketadi/kurulan
  2558. fi
  2559. #for dosyayol in $(cat $VT/$paketadi/kurulan);do
  2560. while read dosyayol; do
  2561. #for dosyayol in $(<$VT/$paketadi/kurulan);do
  2562. dosyayol=$(echo $dosyayol | sed 's/^.\(.*\).$/\1/')
  2563. netdosyayol="${dosyayol:1:${#dosyayol}-1}"
  2564. if [ ! -f $dosyayol ] && [ ! -d $dosyayol ] ; then
  2565. $_yaz_uyari "$dosyayol hasarlı"
  2566. onar="evet"
  2567. fi
  2568. done < $VT/$paketadi/kurulan
  2569. if [ $onar = "evet" ];then
  2570. $_yaz_tm "$paketadi hasarlı dosya barındırıyor,düzeltilsin mi?";read -p "e veya h-> " eh
  2571. case $eh in
  2572. [Ee]* ) tekrarkur="evet";agdan_kur "$paketadi";;
  2573. [Hh]* ) $_yaz_uyari "$paketadi pas geçildi.";;
  2574. * ) echo "e veya h";;
  2575. esac
  2576. fi
  2577. $_yaz "$paketadi kurulum doğrulama tamamlandı."
  2578. elif [ -d "$VT/$paketadi" ]; then
  2579. cp -rf $VT $VT.yedek
  2580. $_yaz_uyari "$paketadi hasarlı kurulum tesbiti!"
  2581. #onarma
  2582. rm -r $VT/$paketadi
  2583. paket_indir $paketadi
  2584. yerelden_kur "$paketdepo/$paketadi#"*.mps.lz
  2585. $_yaz "$paketadi hasarlı kurulum onarıldı."
  2586. else
  2587. $_yaz_uyari "$paketadi $_paket_kurulu_degil"
  2588. fi
  2589. }
  2590. tamir_temel_kurulan(){
  2591. if [ ! -d $VT ] ; then
  2592. $_yaz_uyari "paket kurulum vt bulunamadı!"
  2593. exit 1
  2594. fi
  2595. for paketadi in `ls $VT`
  2596. do
  2597. sed -i 's/‘/'\''\//;s/’/'\''/' $VT/$paketadi/kurulan
  2598. done
  2599. }
  2600. depo_paketler_liste(){
  2601. ls $paketdepo*.mps.lz
  2602. }
  2603. depo_paketler_sil(){
  2604. while true; do
  2605. pktsay="0"
  2606. [[ $(ls $paketdepo*.mps.lz) ]] && pktsay=$(ls $paketdepo/*.mps.lz | wc -l)
  2607. $_yaz_tm "$paketdepo altındaki $pktsay paket silinecek?";read -p "e veya h-> " eh
  2608. case $eh in
  2609. [Ee]* ) rm $paketdepo/*.mps.lz; $_yaz "$paketdepo paketler temizlendi."; break;;
  2610. [Hh]* ) break;;
  2611. * ) echo "e veya h";;
  2612. esac
  2613. done
  2614. }
  2615. etkilenenler_sil(){
  2616. while true; do
  2617. $_yaz_tm "etkilenen önbellek silinecek?";read -p "e veya h-> " eh
  2618. case $eh in
  2619. [Ee]* ) rm -rf /var/lib/pkg/etkilenen; $_yaz "etkilenen önbellek temizlendi."; break;;
  2620. [Hh]* ) break;;
  2621. * ) echo "e veya h";;
  2622. esac
  2623. done
  2624. }
  2625. kurulum_dosya_listele(){
  2626. cat "$VT/$1/kurulan"
  2627. }
  2628. # bir dosyanın kurulmuş hangi pakette olduğunu bulur.
  2629. kurulan_dosya_bul(){
  2630. grep -rli "$1" "$VT/" | cut -d "/" -f6
  2631. }
  2632. paketvt_kontrol(){
  2633. mkdir -p /depo/paketler
  2634. if [ ! -f /depo/paketler/paket.vt ];then
  2635. touch /depo/paketler/paket.vt
  2636. fi
  2637. }
  2638. pvt_olustur(){
  2639. if [ ! -f paket.vt ];then
  2640. touch paket.vt
  2641. fi
  2642. if [ -f "paket.vt" ];then
  2643. mv "paket.vt" "paket.vt.eski"
  2644. fi
  2645. $_yaz "paket.vt oluşturuluyor...."
  2646. for paket in `ls *.mps.lz`
  2647. do
  2648. paketad="`echo $paket|cut -d "#" -f1`"
  2649. shaek=`sha1sum $paket`
  2650. echo $paketad $shaek >> paket.vt
  2651. done
  2652. $_yaz "paket.vt oluşturuldu."
  2653. }
  2654. git_ek_guncelle(){
  2655. #echo $git_ekrepo
  2656. local _hesap _repo_ad _repo_hash
  2657. if [[ ! -z ${git_ekrepo} ]];then
  2658. local _repolar=$(echo ${git_ekrepo} | tr " " "\n")
  2659. # ek git repolarının sırayla güncelleme işlemi
  2660. for _repo in ${_repolar}; do
  2661. #echo $_repo
  2662. _repo_hash="$(printf '%s' "${_repo}" | md5sum | cut -d' ' -f1)"
  2663. _hesap="$(basename $(dirname ${_repo}))"
  2664. _repo_ad="$(basename ${_repo})"
  2665. _repo_islem=${_hesap}-${_repo_ad}-${_repo_hash}
  2666. #git deponun sunucudan güncellenmesi
  2667. $_yaz_bilgi "$_git_guncelleniyor : $_repo"
  2668. if [ $(sunucu_erisim ${_repo}) = "aktif" ];then
  2669. if [ ! -d ${git_ekyereldepo}/${_repo_islem} ];then
  2670. git clone ${_repo} ${git_ekyereldepo}/${_repo_islem}
  2671. else
  2672. cd ${git_ekyereldepo}/${_repo_islem}
  2673. git pull >& $LOGDIZIN/${_repo_islem}-git.log
  2674. if grep -q "Already\ up-to-date" $LOGDIZIN/${_repo_islem}-git.log; then
  2675. $_yaz "$_git_guncel"
  2676. else
  2677. $_yaz "$_git_guncellendi"
  2678. fi
  2679. fi
  2680. # reponun ek-talimatname altına eşitlenmesi
  2681. [ -d ${ektalimatname}/${_repo_islem} ] && rm -rf ${ektalimatname}/${_repo_islem}
  2682. mkdir ${ektalimatname}/${_repo_islem}
  2683. # repo altındaki talimat içeren dizinlerin kopyalanması
  2684. for talimatd in $(find ${git_ekyereldepo}/${_repo_islem}/ -name talimat | xargs -I {} dirname {});do
  2685. cp -r ${talimatd} ${ektalimatname}/${_repo_islem}/
  2686. done
  2687. else
  2688. $_yaz_uyari "${_repo} erişim olumsuz.Uzaktan güncelleme alınamadı."
  2689. fi
  2690. done
  2691. else
  2692. $_yaz_uyari "${_ek_talimatname_bulunamadi}"
  2693. echo "git_ekrepo=\"https://gitlab.com/hesap/repo https://notabug.org/hesap/repo\""
  2694. echo "mps.conf içinde yukarıdaki biçimde ek repo(lar) tanımlı olması gerekmektedir."
  2695. fi
  2696. }
  2697. paketvt_guncelle(){
  2698. local _bakim _sunucular _bakim _sira
  2699. _sunucular=$(echo ${sunucular} | tr " " "\n")
  2700. _bakim="yok"
  2701. _sira=0
  2702. for pktsunucu in ${_sunucular}; do
  2703. pkvt=""
  2704. let _sira=_sira+1
  2705. if [ ${_sira} = 1 ];then
  2706. pktvt="paket.vt"
  2707. else
  2708. pktvt="paket${_sira}.vt"
  2709. fi
  2710. # sunucu bakım kontrolü
  2711. [ $(sunucu_erisim "$pktsunucu""paket.vt.yeni") = "aktif" ] && _bakim="var"
  2712. if [ $_bakim = "yok" ];then
  2713. if [ $(sunucu_erisim "$pktsunucu""paket.vt") = "aktif" ]; then
  2714. $_yaz $pktsunucu
  2715. $_yaz "$_paketvt_guncelleniyor" "$paketdepo""$pktvt"
  2716. if [ -f "$paketdepo""$pktvt" ];then
  2717. mv "$paketdepo""$pktvt" "$paketdepo""$pktvt.eski"
  2718. fi
  2719. wget --no-check-certificate -q ${wget_progress} -P "$paketdepo" "$pktsunucu""paket.vt" -O "$paketdepo""$pktvt"
  2720. #rm /tmp/paket.vt*
  2721. else
  2722. $_yaz_uyari "$pktsunucu paket veritabanı erişim olumsuz."
  2723. hataloglama "paket veritabanı güncelleme olumsuz."
  2724. fi
  2725. else
  2726. $_yaz_bilgi "$pktsunucu paket veritabanı bakımı yapılıyor."
  2727. $_yaz_bilgi "5dk içinde tekrar deneyiniz."
  2728. fi
  2729. done
  2730. }
  2731. yuzdelik_filtre ()
  2732. {
  2733. local flag=false c count cr=$'\r' nl=$'\n'
  2734. while IFS='' read -d '' -rn 1 c
  2735. do
  2736. if $flag
  2737. then
  2738. printf '%c' "$c"
  2739. else
  2740. if [[ $c != $cr && $c != $nl ]]
  2741. then
  2742. count=0
  2743. else
  2744. ((count++))
  2745. if ((count > 1))
  2746. then
  2747. flag=true
  2748. fi
  2749. fi
  2750. fi
  2751. done
  2752. }
  2753. listeleri_temizle(){
  2754. [ -f gerek.liste ] && rm -rf gerek.liste
  2755. [ -f gerek.konum.liste ] && rm -rf gerek.konum.liste
  2756. }
  2757. paket_indir(){
  2758. if [ -f "$paketdepo""paket.vt" ];then
  2759. local _ipaket pkt _indirildi pkvt_hash yerel_hash
  2760. [ $1 ] && _ipaket="$1" || hata_olustu "_paket_adi_gerekli"
  2761. local _sunucular _sira _indir_log
  2762. _indir_log="/tmp/${_ipaket}-indir.log"
  2763. rm -f ${_indir_log}
  2764. _sunucular=$(echo ${sunucular} | tr " " "\n")
  2765. _sira=0
  2766. _indirildi=0
  2767. for pktsunucu in ${_sunucular}; do
  2768. pkvt=""
  2769. let _sira=_sira+1
  2770. if [ ${_sira} = 1 ];then
  2771. pktvt="paket.vt"
  2772. else
  2773. pktvt="paket${_sira}.vt"
  2774. fi
  2775. if [ -f $paketdepo$pktvt ];then
  2776. #pkt=`cat "$paketdepo$pktvt" | grep "^${_ipaket} " | cut -d' ' -f3`
  2777. # çoklu boşluk ayrıştırma destekli
  2778. pkt=`cat "${paketdepo}${pktvt}" | grep "^${_ipaket} " | awk '{ print $3}'`
  2779. pkvt_hash=`cat "${paketdepo}${pktvt}" | grep "^${_ipaket} " | awk '{print $2}'`
  2780. #ryaz 32 "${_ipaket} paketi $pktsunucu altında aranıyor"
  2781. if [ $pkt ];then
  2782. #ryaz 32 "${_ipaket} paketi $pktsunucu altında bulundu"
  2783. cpaket="${pkt/'#'/'%23'}"
  2784. #paketin sunucuda varlık kontrolu
  2785. wget -q --spider "$pktsunucu$cpaket"
  2786. if [ $? -eq 0 ]; then
  2787. [ ! -f ${paketdepo}${pkt} ] && $_yaz "${_ipaket} $_indiriliyor"
  2788. # -nc ile yerelde ilgili paket varsa pas geçecek ama sonraki adımda sahsum kontrolü yapılacak.
  2789. if [ "${_yaz}" == "echo" ];then
  2790. 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'
  2791. else
  2792. wget --no-check-certificate -nc -q ${wget_progress} -P "$paketdepo" "${pktsunucu}${cpaket}" #2>&1 | tee /tmp/${_ipaket}_indirme.log
  2793. fi
  2794. if [[ "$?" != 0 ]]; then
  2795. $_yaz_uyari "indirme hatalı"
  2796. hataloglama "indirme hatalı"
  2797. else
  2798. yerel_hash=$(sha1sum "${paketdepo}${pkt}" | awk '{print $1}')
  2799. if [ "${pkvt_hash}" != "${yerel_hash}" ];then
  2800. $_yaz_uyari "$_shasum_uyumsuzluk,paket tekrar indiriliyor."
  2801. hataloglama "sha1sum uyusmaslik tespit edildi,paket tekrar indiriliyor."
  2802. rm -f "${paketdepo}${pkt}"
  2803. paket_indir "${_ipaket}" "$cikti"
  2804. else
  2805. _indirildi=1
  2806. break
  2807. fi
  2808. fi
  2809. else
  2810. $_yaz_uyari "${_ipaket} paketi bulunamadı $pktsunucu dan silinmiş olmalı!"
  2811. fi
  2812. else
  2813. # paket sunucusunda paket bulunamazsa
  2814. echo "$pktsunucu ${_ipaket} paketi bulunmuyor!" >> ${_indir_log}
  2815. fi
  2816. else
  2817. $_yaz_uyari "$paketdepo altında $pktvt dosyanız yok veya güncelleme yapınız!"
  2818. fi
  2819. done
  2820. # sunucularda paket bulunmama durumu log gösterimi
  2821. if [ ${_indirildi} -eq 0 ];then
  2822. [ -f ${_indir_log} ] && $_yaz_uyari $(cat ${_indir_log})
  2823. # indirileyen fakat önbellekte bulunan paket kontrolü
  2824. if [ -f ${paketdepo}${pkt} ];then
  2825. yerel_hash=$(sha1sum "${paketdepo}${pkt}" | awk '{print $1}')
  2826. # önbellekte mevcut fakat shasum uyum kontrolü
  2827. if [ "${pkvt_hash}" = "${yerel_hash}" ];then
  2828. $_yaz_tm "paketdepo önbelleği kullanılacak."
  2829. else
  2830. $_yaz_uyari "paketdepoda shasum uyumsuz ${_ipaket} paketi bulunmakta!"
  2831. fi
  2832. fi
  2833. fi
  2834. else
  2835. $_yaz_uyari "$paketdepo altında paket.vt dosyanız yok.Güncelleme yapınız!"
  2836. fi
  2837. }
  2838. yerelden_kur(){
  2839. local silme _ypaket
  2840. [ $1 ] && _ypaket=$1 || hata_olustu "_yerel_paket_yok"
  2841. if [ $2 ];then
  2842. if [ "$2" == "-kok" ] && [ -d "$3" ]; then
  2843. kokdizin="$3"
  2844. VT="$kokdizin/var/lib/pkg/DB"
  2845. [ ! -d $VT ] && hata_olustu "_vt_yolu_yok"
  2846. tekrarkur="evet"
  2847. else
  2848. hata_olustu "_vt_yolu_yok"
  2849. fi
  2850. fi
  2851. pkontrol=`basename ${_ypaket} | grep -w "mps.lz"`
  2852. if [ ! -z "$pkontrol" -a "$pkontrol" != "" ]; then
  2853. paketad=`echo "${_ypaket}" | cut -d'#' -f1`
  2854. paketad=`basename $paketad`
  2855. kkont=`kurulu_kontrol "$paketad"`
  2856. if [ "$kkont" = "degil" ];then
  2857. icerik_ekle "${_ypaket}"
  2858. elif [ "$kkont" = "kurulu" ];then
  2859. if [ "$tekrarkur" = "hayir" ];then
  2860. while true; do
  2861. $_yaz_uyari "${_ypaket} paketi zaten kurulu silinip kurulsun mu?"
  2862. read -p "e veya h -> " eh
  2863. case $eh in
  2864. [Ee]* ) silme="e"; break;;
  2865. [Hh]* ) break;;
  2866. * ) echo "e veya h";;
  2867. esac
  2868. done
  2869. fi
  2870. if [ "$silme" = "e" ];then
  2871. $_yaz_bilgi "silinecekelerin kontrolu için"
  2872. paket_sil "$paketad"
  2873. icerik_ekle "${_ypaket}"
  2874. fi
  2875. else
  2876. icerik_ekle "${_ypaket}"
  2877. #while true; do
  2878. #ryaz 31 "${_ypaket} paketi talimatname dışı.Yine de kurulsun mu? (kokdizin=$kokdizin) "
  2879. #read -p "e veya h -> " eh
  2880. #case $eh in
  2881. # [Ee]* ) icerik_ekle "${_ypaket}"; break;;
  2882. # [Hh]* ) break;;
  2883. # * ) echo "e veya h";;
  2884. #esac
  2885. #done
  2886. fi
  2887. else
  2888. $_yaz_uyari "yerelde mps paketi bulunamadı."
  2889. fi
  2890. }
  2891. agdan_kur(){
  2892. kkont=$(kurulu_kontrol "$1")
  2893. if [ "$kkont" = "degil" ] || [ "$tekrarkur" = "evet" ];then
  2894. paket_indir "$1" "$2"
  2895. if [ $(find $paketdepo -name $1#* | head -1) ];then
  2896. if [ -f $(ls -1t "$paketdepo$1#"* | head -1) ];then
  2897. if [ "$kurulum_onay" = "evet" ];then
  2898. if [ "$tekrarkur" = "evet" ];then
  2899. paket_sil "$1" "--onayla"
  2900. fi
  2901. #depo/paketler altında birden fazla sürüm kontrolü yapılır,güncel olan seçilir.
  2902. surumler=$(ls "$paketdepo$1#"* | wc -l)
  2903. if [ $surumler = 1 ];then
  2904. icerik_ekle $(ls "$paketdepo$1#"*) $cikti
  2905. elif [ $surumler -gt 1 ];then
  2906. $_yaz_uyari "$1 paketinin birden fazla sürümü var!"
  2907. kurulacak_guncel_paket=$(ls -1t "$paketdepo$1#"* | head -1)
  2908. $_yaz "$kurulacak_guncel_paket sürümü kuruluyor"
  2909. icerik_ekle $kurulacak_guncel_paket $cikti
  2910. fi
  2911. fi
  2912. else
  2913. $_yaz_uyari "$1 indirme hatası"
  2914. fi
  2915. fi
  2916. elif [ "$kkont" = "kurulu" ];then
  2917. #ryaz 32 "$1 paketi zaten kurulu!"
  2918. printf "."
  2919. else
  2920. $_yaz_uyari "$1 tanımsız paket veya tekrar kurulum iptali var!"
  2921. fi
  2922. }
  2923. _arg_sil(){
  2924. #args=`echo "${args}" | sed -e "s/${_arg}//"`
  2925. args=`printf '%s\n' "${args//${_arg}/}"`
  2926. }
  2927. ayarlar() {
  2928. # renkli yazma öntanımlı atamaları
  2929. cikti_renk_ayarla ${renkdurum}
  2930. # global değişkenlerin işlenmesi
  2931. args="${@:2}"
  2932. ### Milis_Paket_Sistemi_Yardim
  2933. ### --------------------------
  2934. ### mps ... --debug|--htbl = mps için hata ayıklama modunu aktifleştirir.
  2935. if [[ "${args}" =~ "--htbl" ]] || [[ "${args}" =~ "--debug" ]];then
  2936. # args ın global değişkenlerden temizlenmesi
  2937. _arg="--htbl";_arg_sil
  2938. _arg="--debug";_arg_sil
  2939. set -x
  2940. fi
  2941. ### mps ... --renksiz|--no-color = mps çıktıklarının renksiz yazdırılması.
  2942. if [[ "${args}" =~ "--renksiz" ]] || [[ "${args}" =~ "--no-color" ]];then
  2943. _arg="--renksiz";_arg_sil
  2944. cikti_renk_ayarla "--renksiz"
  2945. fi
  2946. while [ "$1" ]; do
  2947. case $1 in
  2948. ### mps -i paketismi = sadece paketi indirir,paket kurulmaz.
  2949. -i|indir)
  2950. kurulum_onay="olumsuz"
  2951. paket_indir $args
  2952. exit 0 ;;
  2953. ### mps -ik paketismi = ilgili paketi indirir ve kurar.
  2954. -ik|--inku)
  2955. if [ "$3" == "-kok" ] && [ -d "$4" ]; then
  2956. kokdizin="$4"
  2957. fi
  2958. agdan_kur "$2" ;;
  2959. ### mps -ikz|yekur paketismi = ilgili indirip tekrardan kurar,kurulu olmasına bakılmaz.
  2960. -ikz|yekur)
  2961. tekrarkur="evet"
  2962. agdan_kur "$2"
  2963. exit 0 ;;
  2964. ### mps -k paketismi..mps.lz = yerel dizindeki paketi kurar.
  2965. -k)
  2966. yerelden_kur $args
  2967. exit 0 ;;
  2968. ### mps sil|-s paketismi = ilgili paketi onaylı kaldırır.
  2969. ### mps sil|-s paketismi = --onayla -> onaysız kaldırır. (zorla silme)
  2970. -s|sil)
  2971. #paket_sil $args
  2972. _paket_sil_args $args
  2973. exit 0 ;;
  2974. ### mps gsil paketismi = ilgili paketi güvenli(ters bağımlılıklarına da bakarak) kaldırır.
  2975. gsil)
  2976. paket_sil "$2" "--tersbag"
  2977. exit 0 ;;
  2978. ### mps -S paketismi = ilgili paketi altbağımlılıklarını da sorarak kaldırır.
  2979. ### mps -S paketismi = ve oto eklenirse ilgili paketi altbağımlılıklarını da sormadan sırayla kaldırır.
  2980. -S)
  2981. paket_sil_gereklerle $args
  2982. exit 0 ;;
  2983. ### mps ara aranan = paket isimleri ve açıklamalarında anahtar kelime arar.
  2984. -pa|ara)
  2985. paket_ara "$2"
  2986. exit 0 ;;
  2987. ### mps bul aranan = talimat dosyaları içinde anahtar kelimeyi arar.
  2988. bul)
  2989. kelime_bul "$2"
  2990. exit 0 ;;
  2991. ### mps -d paketisimi = sadece paketi bağımlıksız derler.Genelde bağımlılığı olmayan paketler için kullanılır.
  2992. -d|--pkde)
  2993. zorla_derle="yok"
  2994. kurulum_onay="olumsuz"
  2995. paket_derle "$2"
  2996. exit 0 ;;
  2997. ### mps -zd paketismi = Pake kurulu olsa bile derleme yapılır.Bağımlıksız derleme için kullanılır.
  2998. -zd|--pkzde)
  2999. zorla_derle="evet"
  3000. kurulum_onay="olumsuz"
  3001. paket_derle "$2"
  3002. exit 0 ;;
  3003. ### mps odkp paketismi = bir paketi bağımlılık zinciri çıkarıp gereklileri önce kurar gerekli olanları derler,paketler ve kurar.
  3004. odkp)
  3005. if [ -d "$talimatname/temel/$2" ] ; then
  3006. $_yaz_uyari "temel paket için odkp kullanılamaz!"
  3007. exit 1
  3008. fi
  3009. oto_derle_kur_paketle "$2"
  3010. exit 0 ;;
  3011. ### mps god paketismi = mps guncelle && mps odkp paketismi.
  3012. god)
  3013. git_guncelle
  3014. oto_derle_kur_paketle "$2"
  3015. exit 0 ;;
  3016. ### mps -derlist liste = verilen liste dosyasındaki paketleri derler.Alt alta yazılı olmalıdır.
  3017. -derlist)
  3018. paket_derle_liste "$2"
  3019. exit 0;;
  3020. ### mps derle paketismi = paketismi için bağımlılık zinciri çıkarıp gerekli tüm paketleri derler,paketler ve kurar.
  3021. derle)
  3022. paket_derle_kur "$2"
  3023. exit 0 ;;
  3024. -ok|--pkok)
  3025. paket_kur_oto "$2" ;;
  3026. -okz)
  3027. paket_kur_oto_zorla "$2" ;;
  3028. -okl|--pkokl)
  3029. paket_kur_liste "$2" ;;
  3030. -oklz)
  3031. paket_kur_liste_zorla "$2" ;;
  3032. ### mps -kh . = mevcut dizindeki mps.lz uzantılı paketleri onaysız kurar.
  3033. -kh)
  3034. local templist
  3035. templist=`mktemp`
  3036. ls *.mps.lz > $templist
  3037. paket_kur_oto_zorla $templist
  3038. exit 0 ;;
  3039. -ko|--pkko)
  3040. paket_kur_oto2 "$2" ;;
  3041. -kuruld)
  3042. paket_inkur_liste_direk "$2" ;;
  3043. ### mps kurul liste = verilen liste dosyasındaki paketleri kurar.Alt alta yazılı olmalıdır.
  3044. kurul)
  3045. if [ -f $PWD/mps-liste ]; then
  3046. paket_inkur_liste mps-liste
  3047. else
  3048. paket_inkur_liste "$2"
  3049. fi ;;
  3050. -kur)
  3051. paket_inkur_oto "$2" ;;
  3052. ### mps gkur paketismi = git-paketvt günceller ve yerelde mps.lz varsa yereldekini yoksa sunucudan paketi indirip kurar.
  3053. gkur)
  3054. git_guncelle;
  3055. paketvt_guncelle;
  3056. paket_inkur_oto "$2"
  3057. exit 0 ;;
  3058. ### mps kur paketismi = yerelde mps.lz varsa yereldekini yoksa sunucudan paketi indirip kurar.
  3059. kur)
  3060. if [[ "$2" == *"mps.lz"* ]]; then
  3061. if [ "$3" == "-kok" ] && [ -d "$4" ]; then
  3062. kokdizin="$4"
  3063. VT="$kokdizin/var/lib/pkg/DB"
  3064. [ ! -d $VT ] && hata_olustu "_vt_yolu_yok"
  3065. tekrarkur="evet"
  3066. else
  3067. hata_olustu "_vt_yolu_yok"
  3068. fi
  3069. yerelden_kur "$2" "$3"
  3070. else
  3071. paket_inkur_oto "$2" "$3"
  3072. fi
  3073. exit 0 ;;
  3074. ### mps kaynak paketismi = ilgili paketin kaynak kodunu indirir.
  3075. kaynak)
  3076. if [ ! "$2" ]; then
  3077. $_yaz_uyari "paket ismi eksik"
  3078. exit 1
  3079. fi
  3080. kaynak_kod_indir "$2"
  3081. exit 0 ;;
  3082. # özel git projesi kurmak için
  3083. gitkur)
  3084. git_proje_kur "$2" ;;
  3085. # otomatik proje sistemi
  3086. # özel git projesi kurmak için
  3087. opk)
  3088. op_kur "$2" ;;
  3089. # özel git projesi silmek için
  3090. ops)
  3091. op_sil "$2" ;;
  3092. ### mps serkur paketismi = ilgili paketin servisini kurar
  3093. serkur)
  3094. servis_kur "$2"
  3095. exit 0 ;;
  3096. ### mps sersil paketismi = ilgili paketin servisini siler
  3097. sersil)
  3098. servis_sil "$2"
  3099. exit 0 ;;
  3100. ### mps serkon paketismi = servislerin değişmemezlik kontrolünü yapar.
  3101. serkon)
  3102. servisler_kontrol
  3103. exit 0 ;;
  3104. ### mps kurkos paketismi = ilgili paketin kurulumdan sonraki çalışması gereken betiğini çalıştırır.
  3105. kurkos)
  3106. local pkt
  3107. pkt=$(talimat_bul $2)
  3108. if [ -f $pkt/$2.kur-kos ];then
  3109. bash $pkt/$2.kur-kos
  3110. exit 0
  3111. else
  3112. $_yaz_uyari "$2 kur-kos yok!"
  3113. hataloglama "$2 kur-kos yok!"
  3114. exit 1
  3115. fi;;
  3116. ### mps koskur paketismi = ilgili paketin kurulumdan önceki çalışması gereken betiğini çalıştırır.
  3117. koskur)
  3118. local pkt
  3119. pkt=$(talimat_bul $2)
  3120. if [ -f $pkt/$2.kos-kur ];then
  3121. bash $pkt/$2.kos-kur
  3122. exit 0
  3123. else
  3124. $_yaz_uyari "$2 kos-kur yok!"
  3125. hataloglama "$2 kos-kur yok!"
  3126. exit 1
  3127. fi ;;
  3128. ### mps silkos paketismi = ilgili paketin silindikten sonraki çalışması gereken betiğini çalıştırır.
  3129. silkos)
  3130. local pkt
  3131. pkt=$(talimat_bul $2)
  3132. if [ -f $pkt/$2.sil-kos ];then
  3133. bash $pkt/$2.sil-kos
  3134. exit 0
  3135. else
  3136. $_yaz_uyari "$2 sil-kos yok!"
  3137. hataloglama "$2 sil-kos yok!"
  3138. exit 1
  3139. fi ;;
  3140. ### mps kossil paketismi = ilgili paketin silindikten önceki çalışması gereken betiğini çalıştırır.
  3141. kossil)
  3142. local pkt
  3143. pkt=$(talimat_bul $2)
  3144. if [ -f $pkt/$2.kos-sil ];then
  3145. bash $pkt/$2.kos-sil
  3146. exit 0
  3147. else
  3148. $_yaz_uyari "$2 kos-sil yok!"
  3149. hataloglama "$2 kos-sil yok!"
  3150. exit 1
  3151. fi ;;
  3152. ### mps -kdl paketismi = ilgili paketin sistemdeki kurulmuş olması gereken dosyalarını gösterir.
  3153. -kdl)
  3154. if [ ! "$2" ]; then
  3155. $_yaz_uyari "paket ismi eksik"
  3156. hataloglama "(-kdl) paket ismi eksik"
  3157. exit 1
  3158. fi
  3159. kurulu_kontrol_test "$2" "$3"
  3160. kurulum_dosya_listele "$2" "$3"
  3161. exit 0 ;;
  3162. ### mps -kkp paketismi = ilgili paketin çalışması için eksik olan dosyaları tespit eder.
  3163. -kkp)
  3164. if [ ! "$2" ]; then
  3165. $_yaz_uyari "paket ismi eksik"
  3166. hataloglama "(-kkp) paket ismi eksik"
  3167. exit 1
  3168. fi
  3169. kirik_kontrol_paket "$2"
  3170. exit 0 ;;
  3171. ### mps kirma paketismi = ilgili paketin sistemde kırdığı paketler tespit edilir.
  3172. kirma)
  3173. if [ ! "$2" ]; then
  3174. $_yaz_uyari "paket ismi eksik"
  3175. hataloglama "(kirma) paket ismi eksik"
  3176. exit 1
  3177. fi
  3178. kirik_ters_bagimli_bilgi "$2"
  3179. exit 0 ;;
  3180. ### mps -kks . = sistemde kurulu tüm paketlerin kırık kontrolünü yapar.Eksik dosyaları tespit eder.
  3181. -kks)
  3182. revdep-rebuild
  3183. #kirik_kontrol_sistem
  3184. exit 0 ;;
  3185. ### mps -sdk paketismi = bir paketin güncel sürüm numarasını denetler.
  3186. -sdk)
  3187. if [ ! "$2" ]; then
  3188. $_yaz_uyari "paket ismi eksik"
  3189. exit 1
  3190. fi
  3191. surum_devir_kontrol "$2" "$3"
  3192. exit 0 ;;
  3193. ### mps -devk paketismi = bir paketin güncel devir numarasını denetler.
  3194. -devk)
  3195. if [ ! "$2" ]; then
  3196. $_yaz_uyari "paket ismi eksik"
  3197. exit 1
  3198. fi
  3199. _devir_kontrol_durum "$2"
  3200. exit 0 ;;
  3201. -pak|--paketle)
  3202. if [ ! "$2" ]; then
  3203. $_yaz_uyari "paketlenecek dizin ismi eksik"
  3204. hataloglama "paketlenecek dizin ismi eksik"
  3205. exit 1
  3206. fi
  3207. yeniden_paketle "$2"
  3208. exit 0 ;;
  3209. -psk|--paksiskur)
  3210. if [ ! "$2" ]; then
  3211. $_yaz_uyari "paket liste yok"
  3212. hataloglama "paket liste yok"
  3213. exit 1
  3214. fi
  3215. if [ ! "$3" ]; then
  3216. $_yaz_uyari "hedef dizin yok"
  3217. hataloglama "hedef dizin yok"
  3218. exit 1
  3219. fi
  3220. sistem_kur "$2" "$3"
  3221. exit 0 ;;
  3222. ## mps -po . = mps paketlerinin olduğu dizinde paket.vt oluşturur.
  3223. -po)
  3224. pvt_olustur
  3225. exit 0 ;;
  3226. ## mps sildos dosya = ilgili dosyadaki altalta sıralı paketleri onaysız siler.
  3227. sildos)
  3228. if [ ! "$2" ]; then
  3229. $_yaz_uyari "silme listesi yok"
  3230. hataloglama "silme listesi yok"
  3231. exit 1
  3232. fi
  3233. paket_sil_oto "$2"
  3234. exit 0 ;;
  3235. ### mps gitsurum . = milis git deposunun güncel git numarasını verir.
  3236. gitsurum)
  3237. # hesap-repo parçalanacak- notabug api araştırılıyor.
  3238. local _udgs=$(curl -s ${git_sunucu}/${hesap_repo} | grep -r 'milislinux\/milis\/commit\/' \
  3239. | head -n1 | awk -F'(>|</a>)' '{print $2}')
  3240. local _ydgs=$(cat ${git_yereldepo}/.git/refs/heads/master)
  3241. printf "uzak_depo: ${_udgs}\n"
  3242. printf "yerel_depo: ${_ydgs:0:10}\n"
  3243. exit 0 ;;
  3244. ### mps liste . = sistemde kurulu olan paket listesini verir.
  3245. -kl|liste)
  3246. ls ${VT}
  3247. exit 0 ;;
  3248. ### mps dliste . = sistemde kurulu olan ama talimatnamede yer almayan paket listesini verir.
  3249. -dkl|dliste)
  3250. ls ${VT} | sort > /tmp/mps_krl_pkt.txt
  3251. paket_liste | sort > /tmp/mps_tum_pkt.txt
  3252. comm -23 "/tmp/mps_krl_pkt.txt" "/tmp/mps_tum_pkt.txt"
  3253. rm -rf /tmp/mps_krl_pkt.txt
  3254. rm -rf /tmp/mps_tum_pkt.txt
  3255. exit 0 ;;
  3256. ### mps paketler grup_ismi = paket deposundaki paket listesini verir.(grup_ismi verilmezse tüm paketler)
  3257. -ptl|paketler)
  3258. paket_liste "$2" "$3"
  3259. exit 0 ;;
  3260. ### mps paketler grup_ismi = paket deposundaki paket listesini açıklamalarıya verir.
  3261. -gpl)
  3262. paket_ara_grup "$2"
  3263. exit 0 ;;
  3264. ### mps gruplar . = paket deposundaki paket grup listesini verir.
  3265. -pgl|gruplar)
  3266. paket_grup_liste "$2"
  3267. exit 0 ;;
  3268. ### mps -dly paketismi = ilgili paketin genel ve tüm bağımlılık listesini verir,oluşturur.
  3269. -dly|dliste)
  3270. derleme_listyap $args
  3271. exit 0 ;;
  3272. ### mps -ykp paketismi = ilgili paketin kurulmak istenirse,kurulacak yeni paketleri listeler.
  3273. -ykp)
  3274. #yeni_kurulacak_paketler "$2"
  3275. derleme_listyap "$2" "--kurulu_atla"
  3276. listeleri_temizle
  3277. exit 0 ;;
  3278. #sunucu bilgisi alma
  3279. -sun2|sunucu)
  3280. $_yaz $sunucu ;;
  3281. ### mps sunucular . = paket sunucularını verir.
  3282. -sun|sunucular)
  3283. #ryaz 32 ${sunucular} ;;
  3284. echo ${sunucular} | tr " " "\n"
  3285. exit 0 ;;
  3286. sun)
  3287. if [ ! "$2" ]; then
  3288. $_yaz_uyari "sunucu bilgi eksik"
  3289. hataloglama "sunucu bilgi eksik"
  3290. exit 1
  3291. fi
  3292. sunucu_ayarla "$2" ;;
  3293. ### mps -bb paketismi = ilgili paketin gereklerinin durumunu listeler.
  3294. -bb|bagbil)
  3295. bagimli_bilgi "$2" | column -t
  3296. exit 0;;
  3297. -bbdog|bdogrula)
  3298. bagimli_bilgi "$2" "dogrula";;
  3299. -bbd)
  3300. bagimli_bilgi_dosyala $args
  3301. exit 0 ;;
  3302. ### mps -tb talimatismi = ilgili talimata gerek duyan(ters-gerekler) talimatları listeler.
  3303. -tb|tersbag)
  3304. ters_bagimli_bilgi "$2" "bilgi" | column -t
  3305. exit 0;;
  3306. ### mps -tbb talimatismi = ilgili talimata gerek duyan(ters-gerekler) kurulu durumlarıyla listeler.
  3307. #-tbb)
  3308. # ters_bagimli_bilgi "$2" "bilgi" | column -t
  3309. # exit 0;;
  3310. -tbk)
  3311. ters_bagimli_kontrol "$2" ;;
  3312. ### mps pka paketismi = ilgili paketin depo-gitdepo uyumluluğunu kontrol eder.
  3313. pka)
  3314. paket_analiz "$2"
  3315. exit 0;;
  3316. ### mps pda paketdepo = paketlerin olduğu dizindeki paketlerin depo-gitdepo uyumluluğunu kontrol eder.
  3317. pda)
  3318. paketdepo_analiz "$2"
  3319. exit 0 ;;
  3320. ### mps tbilgi paketismi = ilgili paketin talimat bilgilerini verir.
  3321. tbilgi)
  3322. talimat_bilgi $args
  3323. exit 0 ;;
  3324. ### mps talimat paketismi = ilgili paketin talimatını yazdırır.
  3325. talimat)
  3326. talimat_yazdir "$2"
  3327. exit 0 ;;
  3328. ### mps -b paketismi = ilgili paketin kurulum bilgilerini verir.
  3329. -b)
  3330. if [ $2 ];then
  3331. touch "/tmp/mps_paket_bilgi_$2"
  3332. paket_bilgi "$2" "$3" | tee "/tmp/mps_paket_bilgi_$2"
  3333. if [ $3 ];then
  3334. [ $3 == "--html" ] && paket_bilgi_html "/tmp/mps_paket_bilgi_$2"
  3335. fi
  3336. else
  3337. $_yaz_uyari "paket ismi eksik"
  3338. exit 1
  3339. fi
  3340. exit 0 ;;
  3341. bil)
  3342. if [ $2 ];then
  3343. if [ $3 ];then
  3344. [ $2 == "surum" ] && paket_bilgi "$3" "--renksiz" | sed -n 6p | cut -d':' -f2 | sed 's/^ *//;s/ *$//'
  3345. [ $2 == "devir" ] && paket_bilgi "$3" "--renksiz" | sed -n 7p | cut -d':' -f2 | sed 's/^ *//;s/ *$//'
  3346. else
  3347. $_yaz_uyari "paket ismi eksik"
  3348. exit 1
  3349. fi
  3350. else
  3351. $_yaz_uyari "islev ismi eksik"
  3352. exit 1
  3353. fi
  3354. exit 0 ;;
  3355. phtml)
  3356. paketler_depo_html
  3357. exit 0 ;;
  3358. ### mps bilgi paketismi = ilgili paketin talimat ve kurulum bilgilerini verir.
  3359. bilgi)
  3360. paket_bilgi "$2"
  3361. talimat_bilgi "$2"
  3362. exit 0 ;;
  3363. ### mps -to talimat_ismi = ilgili talimat ismine göre talimat şablonu oluşturur.
  3364. -to)
  3365. if [ ! "$2" ]; then
  3366. $_yaz_uyari "talimat ismi eksik"
  3367. hataloglama "talimat ismi eksik"
  3368. exit 1
  3369. fi
  3370. talimat_olustur "$2"
  3371. exit 0 ;;
  3372. ### mps log yyyy-aa-gg olay = mps.log verisi çekmek için (ör: mps log 2017-01-01 silindi)
  3373. log)
  3374. local logyardim
  3375. logyardim="mps log zaman durum (ör: mps log 2017-01-01 silindi)"
  3376. if [ ! "$2" ]; then
  3377. $_yaz_uyari "zaman parametresi eksik"
  3378. hataloglama "zaman parametresi eksik"
  3379. $_yaz $logyardim
  3380. exit 1
  3381. fi
  3382. if [ ! "$3" ]; then
  3383. $_yaz_uyari "durum parametresi eksik"
  3384. hataloglama "durum parametresi eksik"
  3385. $_yaz $logyardim
  3386. exit 1
  3387. fi
  3388. log_analiz "$2" "$3" ;;
  3389. ### mps guncelle . = paket veritabanı ve git güncellemesi-talimatname bilgilerini günceller.
  3390. guncelle)
  3391. git_guncelle;
  3392. paketvt_guncelle;
  3393. kurulum_dogrulama;
  3394. #guncelleme_tespit;
  3395. exit 0 ;;
  3396. ### mps -G . = paket veritabanı bilgilerini günceller.
  3397. -G|--pvtg)
  3398. paketvt_guncelle
  3399. kurulum_dogrulama
  3400. exit 0 ;;
  3401. ### mps -GG . = git güncellemelerini ve talimatname bilgilerini günceller.
  3402. -Ggit|-GG)
  3403. git_guncelle
  3404. exit 0 ;;
  3405. ### mps -GGG . = ek git repo bilgilerini günceller.
  3406. -GGG)
  3407. git_ek_guncelle
  3408. exit 0 ;;
  3409. ### mps tespit . = tüm sistemin güncellemesi için güncellenecek paket listesini gösterir.
  3410. tespit)
  3411. guncelleme_tespit
  3412. exit 0 ;;
  3413. tespit2)
  3414. guncelleme_tespit_hizli
  3415. exit 0 ;;
  3416. ### mps gun . = güncellenmesi gereken ve depoya yeni eklenen paketleri gösterir.
  3417. gun)
  3418. guncellemeler
  3419. exit 0 ;;
  3420. ### mps yukselt . = tüm sistemin güncellemesini gerçekleştirir.
  3421. -GS|yukselt)
  3422. _sistem_guncelle_args $args
  3423. exit 0 ;;
  3424. ### mps -g paketismi = ilgili paketi tekil günceller.
  3425. -g|--pkgu)
  3426. git_guncelle;paketvt_guncelle
  3427. if [ ! "$2" ]; then
  3428. $_yaz_uyari "paket ismi eksik"
  3429. hataloglama "paket ismi eksik"
  3430. exit 1
  3431. fi
  3432. local durum
  3433. durum=`kurulu_kontrol "$2"`
  3434. if [ "$durum" = "kurulu" ]; then
  3435. paket_guncelle "$2"
  3436. elif [ "$durum" = "degil" ]; then
  3437. $_yaz_uyari "$2 $_paket_kurulu_degil"
  3438. hataloglama "$2 $_paket_kurulu_degil"
  3439. else
  3440. $_yaz_uyari "$2 $_paket_tanimsiz"
  3441. hataloglama "$_paket_tanimsiz"
  3442. fi
  3443. exit 0 ;;
  3444. #bagimliliklariyla beraber paket guncelleme-package updating with depencies
  3445. -go|--pkgo)
  3446. if [ ! "$2" ]; then
  3447. $_yaz_uyari "$_paket_adi_gerekli"
  3448. exit 1
  3449. fi
  3450. paket_guncelle_oto "$2";;
  3451. ### mps -kk paketismi = ilgili paketin kurulu olma durumunu gösterir.
  3452. -kk)
  3453. kurulu_kontrol $args
  3454. exit 0 ;;
  3455. -kudo)
  3456. kurulum_dogrulama
  3457. exit 0 ;;
  3458. -kdi|dogrula)
  3459. if [ ! "$2" ]; then
  3460. $_yaz_uyari "$_paket_adi_gerekli"
  3461. exit 1
  3462. fi
  3463. kurulum_dogrulama_icerik "$2" ;;
  3464. -pid|pdogrula)
  3465. kokdzn=""
  3466. if [ ! "$2" ]; then
  3467. $_yaz_uyari "$_paket_adi_gerekli"
  3468. exit 1
  3469. elif [ ! "$3" ]; then
  3470. kokdzn="/"
  3471. else
  3472. kokdzn="$3"
  3473. fi
  3474. paket_icerik_dogrulama "$2" "$kokdzn";;
  3475. -kdit|tumdogrula)
  3476. kurulum_dogrulama_icerik_tum
  3477. exit 0 ;;
  3478. ### mps -set paketismi = ilgili paket silindiğinde etkilenen paketleri ve konumları tespit eder.
  3479. -set)
  3480. [ -z $2 ] && hata_olustu "_paket_adi_gerekli"
  3481. if [ `kurulu_kontrol $1` == "kurulu" ];then
  3482. silme_etkilenme_tespit $args
  3483. else
  3484. $_yaz "$2 $_paket_kurulu_degil"
  3485. fi
  3486. exit 0 ;;
  3487. ### mps -suko . = sunucuların erişim kontrolünü yapar.
  3488. -suko)
  3489. sunucu_kontrol
  3490. exit 0 ;;
  3491. ### mps -pot . = talimatı olup ta paketi henüz depoda yer almayan talimatları listeler.
  3492. -pot)
  3493. paketsiz_talimatlar
  3494. exit 0 ;;
  3495. -dpl|deplist)
  3496. depo_paketler_liste
  3497. exit 0 ;;
  3498. ### mps depsil . = depo/paketler altındaki paket önbelleğini temizler.
  3499. -dps|depsil)
  3500. depo_paketler_sil
  3501. exit 0 ;;
  3502. ### mps etksil . = /var/lib/pkg/etkilenen altındaki kurtarılmış paket önbelleğini temizler.
  3503. -etks|etksil)
  3504. etkilenenler_sil
  3505. exit 0 ;;
  3506. ### mps link url_adres = verilen url adresindeki talimatı ektalimatname/topluluk altına indirir.
  3507. link)
  3508. mkdir -p $ektalimatname/topluluk
  3509. indir_talimat_paketle $2 "-4" "$ektalimatname/topluluk"
  3510. exit 0 ;;
  3511. ### mps ti url_adres = verilen url adresindeki talimatı talimatname/genel altına indirir.
  3512. ti)
  3513. indir_talimat_paketle $2 "-4" "$talimatname/genel"
  3514. exit 0 ;;
  3515. -cf|--config-file)
  3516. if [ ! "$2" ]; then
  3517. echo "ayardosyası gerek $1"
  3518. exit 1
  3519. fi
  3520. ayar_dosyasi="$2"
  3521. shift ;;
  3522. ### mps -hp aranan = ilgili aranan ifadenin hangi paketlerde olabileceğini listeler.
  3523. -hp)
  3524. if [ ! "$2" ]; then
  3525. $_yaz_uyari "paket ismi eksik"
  3526. exit 1
  3527. fi
  3528. kurulan_dosya_bul "$2"
  3529. exit 0 ;;
  3530. ### mps tgs talimat = ilgili talimatın kaynak kodunun yeni sürümü olup olmadığını kontrol eder.
  3531. tgs)
  3532. if [ ! "$2" ]; then
  3533. $_yaz_uyari "talimat ismi eksik"
  3534. exit 1
  3535. fi
  3536. talimat_surum_takip "$2"
  3537. exit 0 ;;
  3538. ### mps -tro . = tarihçe noktası oluşturur.
  3539. -tro)
  3540. tarihce_yap
  3541. exit 0 ;;
  3542. ### mps -trot . = temel tarihçe noktası oluşturur.
  3543. -trot)
  3544. temel_tarihce="evet"
  3545. tarihce_yap
  3546. exit 0 ;;
  3547. ### mps -try tarihce_nokta = tarihçe noktasına göre paketleri yükler-siler.
  3548. -try)
  3549. if [ ! "$2" ]; then
  3550. $_yaz_uyari "tarihce dosyasi eksik $1"
  3551. hataloglama "tarihce dosyasi eksik $1"
  3552. exit 1
  3553. fi
  3554. tarihce_yukle "$2"
  3555. exit 1 ;;
  3556. ### mps -trl . = tarihçe noktalarını listeler.
  3557. -trl)
  3558. tarihce_liste ;;
  3559. ### mps tdc talimat_dosyası = ilgili talimat dosyasının Türkçe değişken çevrimini yapar.
  3560. tdc)
  3561. talimat_degisken_cevrim $2
  3562. exit 0 ;;
  3563. -tamir-tk)
  3564. tamir_temel_kurulan ;;
  3565. ### mps dos . = derleme ortamını sıfırlar.temel tarihçeye geri döner.
  3566. dos)
  3567. tarihce_yukle "temel"
  3568. exit 0 ;;
  3569. -trs)
  3570. if [ ! "$2" ]; then
  3571. $_yaz_uyari "parametre eksik $1"
  3572. hataloglama "parametre eksik $1"
  3573. exit 1
  3574. fi
  3575. tarihce_sil "$2"
  3576. exit 1 ;;
  3577. ### mps itest islev_ismi = mps içindeki işlevlerin testi için kullanılmaktadır.
  3578. itest)
  3579. if [ $2 ];then
  3580. _islev="$2"
  3581. if [ "`type -t $_islev`" == "function" ];then
  3582. shift;shift
  3583. $_islev $@
  3584. else
  3585. echo "$_islev işlevi bulunamadı"
  3586. fi
  3587. else
  3588. echo "test edilecek işlev parametresi eksik"
  3589. fi
  3590. exit 0 ;;
  3591. ### mps -v . = mps sürüm bilgisini gösterir.
  3592. -v)
  3593. $_yaz_bilgi "$betikad $versiyon $iletisim $shelltip"
  3594. #echo "$betikad $versiyon $iletisim $shelltip kullanıcı: $SUDO_USER" | bilgi_kutusu
  3595. #_exit ;;
  3596. exit 0 ;;
  3597. -y|-h|yardim)
  3598. yardim_icerik
  3599. exit 0 ;;
  3600. *)
  3601. $_yaz_uyari "Geçersiz Parametre! --> mps yardim "
  3602. exit 0 ;;
  3603. esac
  3604. done
  3605. }
  3606. yardim_icerik(){
  3607. cat $betikyol | 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]}'
  3608. }
  3609. bilgi_kutusu() {
  3610. : ${title='Bilgi'}
  3611. : ${icon=dialog-information}
  3612. yad --title="$title" --window-icon="$icon" \
  3613. --geometry='600x220+0-24' --fore='#ffffff' --back='#000033' \
  3614. --text-info --fontname=monospace --wrap $opts \
  3615. --button='KAPAT!gtk-quit:1'
  3616. }
  3617. _exit(){
  3618. echo "exit"
  3619. exit 0
  3620. }
  3621. ana(){
  3622. if [ `id -u` = 0 ] ; then
  3623. ayarlar "$@"
  3624. else
  3625. # sudo yetkisi ile yapılması ve SUDO_USER değişkeninden çalıştıran kullanıcı alınabilir.
  3626. export SUDO_USER=$USER
  3627. sudo mps "$@"
  3628. fi
  3629. }
  3630. ana "$@"
  3631. #31 kirmizi
  3632. #32 yesil
  3633. #33 sari
  3634. #34 mavi
  3635. #34 mor