mps 107 KB

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