SAdam Blog

2010-12

svn+ssh

Ezt az írást az utókor számára hagyom csak itt, hogy ha valaha, valaki ilyen hülye problémába fut, mint én, akkor ne kelljen egy 8-9 órás kálváriát végigjárnia, mint nekem, elolvasnia ötven ember különböző mélységű és minőségű bejegyzéseitől kezdve manuálokon (fúj) át mindenféle hülyeséget.

Apró komment a bejegyzés elé. Úgy hiszem, hogy a számítógép, illetve az ahhoz kapcsolódó alapvető technológiák bőven (és réges rég) elértek arra a szintre, ahol tömegek használják a mindennapi munkájukhoz, mely mindennapi munkának nem célja, csupán eszköze a gép. Valahogy olyan dolog kezd ez lenni, mint a mikrosütő, vagy az autó, ahol (habár nagyon-nagyon-nagyon nagy vonalakban tudom, hogy mitől működik) igazából foggalmam sincs, hogy a dolgot mi hajtja, mégis, tudom használni rendeltetésszerűen, és boldog vagyok tőle. Sajnos eléggé gyakorinak érzem, főleg számítástechnikai jellegű fórumokon (ezt ma nagyon éreztem, legalábbis), hogy a tudás hordozói szinte lenézik azokat az embereket, akik a segítségüket kérik, és olyan tömören és magas szintűen fogalmaznak, amennyire csak lehet. Ez persze jó arra, hogy valakinek a szakmai tudását csillogtassa, de arra semmiképp sem, hogy annak a problémáját, aki gyorsan valamit össze akar rántani, ami lehet, hogy nem atombiztos, de házi használatra elmegy, megoldja. Ezen most csak azért vagyok így felháborodva, mert ma egy rakás olyan tudás birtokába jutottam, amire nem voltam kíváncsi, és azt gondolom, hogy a probléma megoldásához nem is volt szükséges ezeken a dolgokon ilyen mélységig végigmenni, egyszerűen rá lettem kényszerítve, mert senki nem bír elég világosan fogalmazni, és egy átlagos számteches fórumon az ember három mondatonként talál valamit, amin elakad, és keresheti, hogy az akkor mit jelent. És őszinte leszek, nem, hogy nem érdekel, egyenesen nem akarom tudni ilyen mélységig (például) az SSH részleteit, egyszerűen azért, mert időt, energiát, és leginkább agykapacitást vesz el attól, ami a munkám lenne (kvázi, amire használnom kéne azt a nyamvadt technológiát). Miért nem megy ez olyan egyszerűen, hogy az ember kérdez egyet, és megmondják, hogy mit csináljon? Miért kell folyton megmagyarázni, akkor is, ha nem érdekel a magyarázat?... Annyi kismillió eszköz van, amit az ember nap, mint nap használ (és sikeresen használ) annélkül, hogy bármit is tudna arról, hogy mit csinál. Miért pont ezt kéne 100%-osan értenie annak is, akinek nem is ez a területe?...

Na mindegy, szóval most, hogy kimorogtam magam, jön az alapfeltevés, és a megoldás: adott egy tárhelyszolgáltató (CentOS Linux szerverrel), aki biztosít a tárhelyedhez SSH hozzáférést és futtatási jogokat, de ő maga nem üzemeltet SVN szervert. Ilyenkor világlik, hogy az ember telepít magának a tárhelyen levő fiókjára egy SVN szervert, és azt fogja használni. Az első probléma, hogy ezt hogy oldja meg? Erre még viszonylag könnyű a válasz, a szolgáltató fórumán viszonylag gyorsan találok 3-4, a felhasználók által korábban feltöltött szkriptet, amit elvileg copy-paste-elni kell, és megoldja. Konkrétan 3-at néztem meg, az elsőről látszott, hogy az Subversion 1.4-et tesz fel, na mondom, az kicsit régi. A második 1.6-ost telepít, le is futtatom, de az utolsó lépésben valami hibát dob. Szóval jön a harmadik script, ami szépen lefut, minden a helyén. Csinálok is egy teszt-repot, minden szép és jó. Gouranga van.

Az első "nem tetszik" érzés akkor jön, amikor megpróbálom a saját gépemre checkoutolni a tesztadatokat. Ekkor jön az első hiba, miszerint

   bash: svnserve: command not found

Erre még viszonylag hamar ráakadok, szintén a fórumokon, hogy valami .bashrc-be kell valami PATH bejegyzést irkálni. Copy-Paste. Persze, nem működik, még mindig. Nézegetem a fórumot, erre kiderül, hogy a bejegyzés 3 éves. Elgondolkodtató... Szóval megpróbálom lenyomozni, hogy a megoldás mennyire időtálló (ekkor már vagy 10 böngésző-tab szolgálja ezt a problémát), és hát igen, kiderül, hogy valamit valaki valamiben megváltoztatott, és ezért a .bashrc-t akár ki is dobhatom, mert igazából senki nem olvassa a tartalmát. Tök jó. Sebaj, valaki javasol egy elég kínaiul hangzó megoldást, hogy ha a publikus-privát kulcs párokból kettőt is bejegyzek egy oldalhoz, akkor az egyikhez hozzárendelhetem az említett svnserve-t. Jobb híján próbáljuk meg. Na igenám, de elvileg valami config file-okat is izélgetni kéne ehhez (amit alapból nem igazán szeretek, kicsit hasonló okokból, mint amiért egy pótkereket ugyan bármikor fel tudok tenni, és még az ablakmosót is röhögve utántöltöm, de azért egy hengercserét nem biztos, hogy szívesen levezényelnék), amik az én gépemen ráadásul nem is léteznek. Mindegy, létrehozom, megint oldalas copy-paste a fórumokról, és ezennel lett egy config file a .ssh-könyvtárban (később kiderül, hogy tök fölösleges ez ide, nem véletlenül nem volt ott, szóval mostanra már rég töröltem – elvileg annyi haszna lehetett volna, hogy rövidebb fantázianeveket adhattam volna az általam elérni kívánt szervereknek, amire meg semmi szükségem, mert csak összezavarja az embert – elvégre pl. a galilei.phy.bme.hu az elég egyértelmű, ellenben, ha elnevezem mondjuk bélaBá-nak, az lehet, hogy rövid, frappáns és vicces, de lehet, hogy egy évvel később már fogalmam sincs, hogy az mit is takar). Szóval van config-file, számomra nem túl világos bejegyzésekkel és okokkal, de van. Ugyanezt még a .subversion/config-ban is el kell játszani, ott egy úgynevezett alagutat kell beállítani, hogy az SVN tudja, hogy éppen mikor melyik SSH kulcsot hívja.

A dolog persze továbbra sem működik.

Ezen a ponton az egészet elölről kezdem. Nagyjából eljutok odáig, hogy kell az SSH kulcsos mizéria, amikor eszembe jut, hogy hátha az SVN-ig már el sem jut a dolog, és előbb meghal. És lőn.

Először is, nagyjából negyed óra/fél óra próbálkozás után (kicsit necces dolog egy távoli szerveren levő file-t folyamatosan változtatgatni, főleg, ha a text editorod nem képes egy terminálban megnyitott SSH kapcsolaton keresztül "csak úgy" látni egy távoli filerendszert – nem tudom, van-e olyan text editor, ami ezt tudná –, szóval a percenként letölt-átír-visszatölt egy idő után hihetetlen fárasztó tud lenni – egyébként egy idő után derengett, hogy van valami emacs nevű dolog, amit ilyenkor használni szoktak, és legyőzvén eredendő undoromat a dologgal szemben, sikerült megtanulnom elmenteni file-okat emaccsal és bezárni is őket – egyébként ez is hihetetlenül arrogáns, amikor egy szövegszerkesztő, amit billentyűparancsokkal lehet csak vezérelni, nem képes legalább csak egy fél sornyi segítséget mutatni arról, mondjuk az oldal alján vagy tetején, hogy mik a legfontosabb parancsok) egyértelművé vált, hogy a baj az, hogy az a parancs, amit írtak, hogy tegyem be az authorized_keys nevű file-ba, azt nem mindegy, hogy az ember hova teszi. Mielőtt miindenki idegeit szétfeszíteném: a megoldás, hogy azt a parancsot sortörés nélkül (de szóközzel leválasztva), egy sorba kell írni azzal a sorral, amelyik az ahhoz tartozó nyílt kulcsot tartalmazza, mégpedig a nyílt kulcs elé. Máskülönben semmi hatása nincs. Én elhiszem, hogy ennek valamitől triviálisnak kéne lennie (mondjuk nem értem, hogy mitől), de tény, senki nem közölte.

Az igazi sz*pás onnantól kezdődött, hogy erre rájöttem. Nem untatok tovább senkit a részletekkel, de az ezt követő legalább 3 órámat az vitte el, hogy rájöjjek, hogy mitől nem működik? Amikor már megvan a parancs, megvan, hogy hova kell beírni, és megvan, hogy hogyan, akkor miért nem működik? Bevallom, még mindig nem tudom a miértet, de úgy tűnik hogy az SSH a -i kapcsolóban megadott értéket felülírja az alapértelmezett kulccsal, ha van alapértelmezett kulcs. Csakhogy ez sehol nincs dokumentálva...

Szóval, ha olyan helyzetbe jutsz, hogy egy olyan cégnél akarsz SVN repokat tartani, aki nem tart karban központilag egy SVN szervert (alapvetően ilyen céggel ne szerződj, de ha mégis, akkor) és ezért neked kell megszervezni a dolgot, a következő az eljárás:

  1. A cég fórumain szerezd be azt a kódot, ami telepíti az SVNt a saját home könyvtáradba. Ezt azért fontos, mert ez elvileg gépről gépre változhat, tehát a fórumosok, akik ugyanazokat a gépeket használják, mint te, valószínűleg jobban tudják.
  2. Menj a home könyvtáradban a .ssh könyvtárba és írd be kétszer, hogy ssh-keygen -t rsa -f [valami file neve, ami még nem létezik] (persze két különböző filenevet használj). A legfontosabb: Ne az legyen a file neve, hogy id_rsa, id_dsa vagy identity. A végén mondom, miért.
  3. Annak a pub-file-nak az elejére amelyiket SVNre használod, szúrd be (de ne külön sorba), hogy command="/[A home könyvtár elérési útvonala]/bin/svnserve -t –tunnel-user=[A felhasználói név, amit szeretnél, ha megjelenne a commitokban] -r [A repository teljes elérési útja]"
  4. Az előző lépésekben kapott két pub végződésű file-t töltsd fel a szerveren a .ssh könyvárba, és a következő paranccsal mind fűzd egybe őket: cat [Egyik file neve] [Másik file neve] > authorized_keys
  5. A saját gépeden a home könyvtáradban a ./subversion/config file-ban a [tunnels] alatti sorok valamelyikébe be kell írni, hogy ssh=ssh -q -i /[A home könyvtár elérési útvonala]/.ssh/[A publikus kulcs, amibe a command-ot beszúrtad]

Ezzel elvileg kész vagyunk. Azért volt fontos, hogy ne legyen egyetlen kulcsnak sem id_rsa, vagy hasonló neve, mert úgy tűnik, hiába bármilyen kapcsoló, az SSH minden esetben, amikor van jelen alapértelemezett kulcs, akkor azt használja. Na főleg ez az "apróság" volt az, ami iszonyat időt elvitt az életemből... És még mindig nem értem teljesen az okait, de legalább ez most működik így.

Tagek:
 
Utoljára módosította SAdam 2010.XII.14 17:49-n; 8 hozzászólás
PermaLink
100%

Istencsászár vagyok

A kockafejeknek túl művészi vagyok.

A művészeknek túl kockafej vagyok.

Programozónak oké lennék, ha rendesen bírnám az alkoholt, és nem lennék túl "furcsa" és kiszámíthatatlan...

A "primitíveknek" túl "entellektüel" vagyok...

Az "okosoknak" túl "primitív" vagyok...

...

...

...

Valahogy előbb-utóbb mindenki eljut oda, hogy "'más" vagyok. Most akkor vagy annyira gáz vagyok, hogy senki (még a barátnő(i)m sem) akarnak közösséget vállalni velem, vagy egyszerűen csak fasz vagyok. Most már igazán nem tudom...

Minden esetre, megtaláltam a megoldást: egyszerűen IstenCsászár vagyok. Akár tetszik, akár nem.

Ez, jelenlegi ismereteim szerint (félredobva minden velem született naivitásom és idealizmusom) két dolgot jelenthet: vagy bekerülök abba a képzeletbeli Pantheonba, ahová Stockhausen, Feldman, Mahler, Webern, Bach, Wagner (főleg Wagner – na nem azért, mert jobb volt a felsoroltaknál, hanem, mert beképzeltebb), Beethoven, Haynd, Mozart, Palestrina és még sokan mások tartoznak, vagy egy konténerben fogom végezni valami külvárosban.

Ami minden esetre biztosnak látszik: mivel egyetlen kaszt sem hajlandó befogadni soraiba, muszáj leszek megalkotni a magam morális, esztétikai stb. szabályait, amik rám, és kizárólag csak rám vonatkoznak. Egyszerűen nincs királyi út. Vagy utat török magamnak saját magamhoz, és ignorálok mindent és mindenkit, aki bármiben eltérít ettől, vagy sosem fogom sikerre vinni egyetlen ügyemet sem.

Sajnálom...

Tagek:
 
Utoljára módosította SAdam 2010.XII.11 04:31-n; 1 hozzászólás
PermaLink