Fórumok
Van egy dhcp-dns integrációs megoldásom ami tulajdonképpen shell scriptek gyűjteménye.
Igen jó lenne ezt valahogy verziókezelés alá vonni (praktikusan git).
Idáig egy ötletem van:
- egy folderbe összerakom a scripteket
- írok egy installer.sh scriptet ami tudja hova kell szétdobálni ezeket
és ezt a kupacot kezelem egyben gittel.
Van erre jobb ötlet / kész megoldás?
Hozzászólások
Ha megoldható, hogy a szkriptekre linkek mutassanak a megfelelő helyről, szerintem egyszerűbb megoldás.
Ha nem megoldható, akkor inkább vagy egy
post-commit
hook-ot írnék, ami a commit esetén automatikusan a megfelelő helyre átmásolja a változott szkriptet. Vagy (de lehet, hogy ez inkább csak a kalapács-szög eset részemről) inkább egyMakefile
-t írnék (amit érdemes a szkriptek mellé csapni, természetesen őt is verziókezelni), és apost-commit
-ből csak amake
parancsot kell meghívni.A
post-commit
-hook előnye, hogy nem kell minden módosításkor állandóan másolgatni is, hanem az automatikusan megtörténik.+1
(rejtett subscribe)
+1
Meloban mi is igy migraltunk git-re (es verziokezelo rendszerre); a symlink-eket kompatibilitasi okokbol meg ma is hasznaljuk es lenyegeben nincs veluk baj :)
Dropbox: https://db.tt/pGcW8M1s
csináld meg mappaszerkezetbe, csomagold össze tar.?z-be, aztán a telepítés csak egy tar -?xf ... /
-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
/usr/lib/libasound.so --gágágágá --lilaliba
Mercurial szerver és Tortoise HG mint repo és ott verziózhatod őket?
Puppet?
+1 valami configuration menegement cuccra. Talan az Ansible a leg faek egyszerubb.
-
Fájl feltöltése Github tárolóba
+1 az ansible playbook-ra. Ja és nyílván gitbe verziókezelni.
git+make vagy git+(chef, puppet, ansible, whatever)
en mondjuk az elsore szavaznek elso korben
> - írok egy installer.sh scriptet ami tudja hova kell szétdobálni ezeket
A nyitó kérdés, amit szerintem senki nem tett fel, hogy a szétdobálni mit jelent? Több gépet, vagy egy gépen belül mindenféle könyvtárakba, esetleg userek hozzá, meg ilyesmi?
illetve, hogy fix infrastruktúrára kell ez, vagy mindenfelé, ahogy jön, mert mondjuk össze kell rakni egy ügyfélnél?
jogos. gépen belül vagyunk. (illetve két gépen de ez mindegy).
Az infra mondjuk fix, fixek a disztribúciók amikkel dolgozni kell.
--
Gábriel Ákos
Akkor én is simán a gyártson a cucc a végén egy csomagot dolgot csinálnám. Ezt akár valami commit hookkal is meg lehet varázsolni, vagy kell köré valami egyszerű CI. Vagy, használni pl a githubot / gitlabot. (ez utóbbin tán van privát repo ingyen)
Kapard őket össze egy helyre, aztán mehet gitbe. Telepítéshez meg csinálj belőle rendes csomagot a disztródra.
===============================================================================
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
+1, egyszerűbb, mint amilyennek hangzik, persze disztrib függően
+1
--
http://blog.htmm.hu/
+1, szerintem a leglogikusabb megoldas.
jó ötlet, köszönöm!
tulképp mindegy hogy install scriptet írok, vagy csomagcsinálót.
bár az még kérdéses hogy az adott rendszeren (endian firewall) van-e egyáltalán csomagkészítő felrakva - eléggé stripped down a disztribúció
--
Gábriel Ákos
azaz, én maradnék a shell scriptnél.
git+szkript.
--
GPLv3-as hozzászólás.
tud valaki egy rpm vázat küldeni ami mondjuk /usr/local/bin -be telepít valamit?
--
Gábriel Ákos
https://github.com/jordansissel/fpm
A forrásfájlokat tedd git alá, plusz csinálj belőle deb/rpm csomagot ízlés szerint, és azt telepítsd fel. Így nem csak a verziókezelést kapod meg, ahol a fájlok egy helyen vannak, hanem a telepített fájlok továbbra is szanaszét lehetnek a rendszeren, és még a csomagkezelő is tudni fog róluk.
Amit meg senki nem ajanlott:
Ha csak arrol van szo, hogy szet vannak dobalva a scriptek egy gepen belul, kulonbozo folderekbe, akkor azt is csinalhatod, hogy a "legmagasabb" (ez lehet akar a / is) kozos foldert git verziokovetes ala veszed, mindent exclude-olsz, kiveve a verziokovetni kivant scripteket, igy tulajdonkeppen az egesz folder strukturat megorzod es a scriptek is verziokovetve lesznek.
Hint: https://stackoverflow.com/a/987162
kicsit refaktoralnod kellhet, de https://github.com/jeffreyroberts/sub
- Autocompletion
- self documenting parancsok
mi kell meg? :)
szuper egyszeru
Ezt elteszem, köszi!
https://www.fossil-scm.org/index.html/doc/trunk/www/index.wiki
----
„Kb. egy hónapja elkezdtem írni egy Coelho-emulátort, ami kattintásra generál random Coelho-kompatibilis tartalmat.”
Nulladik körben tessen a /usr/local/{bin|sbin|etc} alá összerámolni a scripteket, beállításokat, egyebeket, utána a /usr/local/ alatti struktúrát bemásolod egy új git repóba (add mindenre, commit -m, push), a visszaút meg cd /usr/local ; git archive ... | tar -xf -
Ha meg nincs git az adott célgépen, akkor tarball, vagy adott disztribhez való csomag.
Ha minden fájlra megvan, hogy hova kell rakni végső soron, akkor én valószínűleg gitben felépíteném ugyanazt a könyvtárstruktúrát, például etc/foo.conf, usr/local/bin/foo.py stb. A szétdobálás ez esetben egy egyszerű rekurzív másolás, nem is kell hozzá külön szkript.
Ha a struktúra a git-ben is ott van, akkor a kiszedés (mivel a célgépen nem szerkeszteni akarja) egy jól irányzott git-archive ... | tar -xf - a gyökérben, oszt' jónapot :-)
Nem használok git-et, de az svn-féle export alapján találtam:
git checkout-index
. Néhány próba után úgy látom, jó is lehetne, és egy felesleges tar-olás is megúszható.A kérdésben szerpelt, hogy "(praktikusan git)", de igen, bármilyen verziókezelővel (svn, cvs, rcs, estébé) meg lehet csinálni (több-kevesebb copással) azt, hogy a repóban kezelt fájlok (és csak azok) essenek ki a folyamat végén a megfelelő helyekre. A git archive alapban egy tar stream-et tol ki magából, amit aztán ízlés szerint lehet szétpakolni - a legegyszerűbb direktben a megfelelő könytárba belépve kicsomagolni, de persze simán lehet másképp is csinálni :-)
Nem le- vagy rábeszélni akarok senkit se bármiről/bármire, mint amit akar, csak azt gondoltam, hogy ha az svn-ben létezik egy export funkció, talán a git-be is betettek valami hasonlót. De jól látom, hogy amit írtam, az működik ebben az esetben?
A git-ben ez az export :-P Nem külön fájlokat másol ki, hanem egy tarballt küld, és azzal azt csinálsz, amit akarsz.
Amikor github vagy hasonló helyről zip-ben/tar.gz-ben töltöd le az adott motyót, pont ez történik, az archive kap egy megfelelő paramétert, hogy hogyan tolja ki a repó tartalmát.
De a
git checkout-index
is jó ebben az esetben, nem? Vagy akár még jobb is, mert nem jön létre tar fájl, amit rögtön ki is bontasz.Másra jó a kettő. Én abból indultam ki, hogy a távoli repó nincs leklónozva az adott gépre, és ez nem is cél, csak azt kell megoldani, hogy a távoli repó összes vagy megadott fájljai kerüljenek kimásolásra.
Ah, valóban, igazad van.
"dhcp-dns integráció", "szanaszét lévő scriptek", "installer.sh szétdobálja"...
Ezek alapján további részletek ismerete nélkül felmerül bennem, hogy a scripteken lévő jogosultságok vajon számítanak-e, és ha igen, akkor azokat is verziókezelni kell-e. Csak mert az egy szem executable biten túl a Git ilyesmit magától nem tárol, úgyhogy majd gondolj erre is.