Edycja w systemie Linux

Z UMP

(Różnice między wersjami)
(podrozdział "Co dalej")
Linia 9: Linia 9:
* wine lub VirtualBox z systemem Windows – by uruchomić program MapEdit
* wine lub VirtualBox z systemem Windows – by uruchomić program MapEdit
-
Większość narzędzi zapewne masz już zainstalowane domyślnie, gdyby się jednak okazało, że któregoś brak (np. w trakcie dokonywania jakiejś czynności), wystarczy dany program doinstalować z odpowiedniego pakietu. Poniżej lista kilku, wraz z nazwami pakietów Ubuntu, w których się znajdują (np. w celu zainstalowania programu "dos2unix" wystarczy wpisać "sudo apt-get install tofrodos"):
+
Większość narzędzi zapewne masz już zainstalowane domyślnie, gdyby się jednak okazało, że któregoś brak (np. w trakcie dokonywania jakiejś czynności), wystarczy dany program doinstalować z odpowiedniego pakietu. Poniżej lista kilku wraz z nazwami pakietów Ubuntu, w których się znajdują (np. w celu zainstalowania programu "dos2unix" w Ubuntu wystarczy wpisać "sudo apt-get install tofrodos" a w Mandrivie jako root wpisujemy "urpmi dos2unix")
* dos2unix, unix2dos – tofrodos
* dos2unix, unix2dos – tofrodos
Linia 22: Linia 22:
cd UMP-src
cd UMP-src
cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout .
cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout .
-
Jeśli masz założone konto do CVS-a, to oczywiście użyj danych tego konta zamiast konta "guest" i wpisz (wystarczy raz) "cvs login". Następną czynnością jest utworzenie katalogu roboczego, w którym na co dzień będziemy dokonywać edycji UMP-a i utworzenie w nim linku do pliku Makefile.common znajdującego się piętro wyżej:
+
Jeśli masz założone konto do CVS-a, to oczywiście użyj danych tego konta zamiast konta "guest" i wpisz (wystarczy raz) "cvs login". Następną czynnością jest utworzenie katalogu roboczego, w którym na co dzień będziemy dokonywać edycji UMP-a i utworzenie w nim link do pliku Makefile.common znajdującego się piętro wyżej:
mkdir tmp
mkdir tmp
cd tmp
cd tmp
ln -s ../Makefile.common Makefile
ln -s ../Makefile.common Makefile
-
Jeśli planujesz w <i>Makefile</i> coś zmieniać, to zamiast linka stwórz w katalogu roboczym plik Makefile zawierający jedną linijkę: "<code>include ../Makefile.common</code>". Za tym wpisem możesz dodawać własne rzeczy (np. zmieniać parametry wywołania netgena itp. "nadpisując" domyślne parametry z <i>Makefile.common</i>) nie "psując" głównego pliku Makefile.common.
+
Jeśli planujesz do <i>Makefile</i> dodawać własne lokalne modyfikacje, zamiast linka stwórz w katalogu roboczym plik Makefile zawierający jedną linjkę: "<code>include ../Makefile.common</code>". Za tym wpisem możesz dodawać własne rzeczy (np. zmieniać parametry wywołania netgena itp.) nie "psując" głównego pliku Makefile.common.
-
Kolejny krok to przygotowanie środowiska &ndash; plik "Makefile.common" wymaga zdefiniowania dwóch zmiennych:
+
Kolejny krok to przygotowanie środowiska &ndash; plik Makefile.common wymaga zdefiniowania dwóch zmiennych:
* '''DIR''' &ndash; wskazującej, które fragmenty UMPa nas interesują
* '''DIR''' &ndash; wskazującej, które fragmenty UMPa nas interesują
* '''CVS''' &ndash; wskazującej, gdzie znajduje się katalog główny repozytorium
* '''CVS''' &ndash; wskazującej, gdzie znajduje się katalog główny repozytorium
-
Możemy utworzyć sobie plik (np. ''env.sh''), który pomoże pamiętać o zainicjawaniu zmiennych środowiskowych. Jego zawartość (lub dla osób nie używających pliku &ndash; polecenia do wykonania w bashu/sh):
+
Możemy utworzyć sobie plik (u mnie ''env.sh'') który pomoże pamiętać o zainicjowaniu zmiennych środowiskowych. Jego zawartość (lub dla osób nie używających pliku &ndash; polecenia do wykonania w bashu/sh):
export DIR=UMP-Wroclaw
export DIR=UMP-Wroclaw
export CVS=/home/user/UMP-src
export CVS=/home/user/UMP-src
Linia 43: Linia 43:
== Przebieg sesji ==
== Przebieg sesji ==
-
Załóżmy, że znajdujemy się już w naszym katalogu roboczym, czyli UMP-src/tmp
+
Zakładam, że znajdujemy się już w naszym katalogu roboczym, czyli UMP-src/tmp
Zaczynamy od przygotowania środowiska, a więc wykonania w _bieżącym_ shellu pliku env.sh (a więc za pomocą komendy "." (kropka) shella sh/bash lub "source" w csh/tcsh):
Zaczynamy od przygotowania środowiska, a więc wykonania w _bieżącym_ shellu pliku env.sh (a więc za pomocą komendy "." (kropka) shella sh/bash lub "source" w csh/tcsh):
. env.sh
. env.sh
Lub alternatywnie &ndash; wklepujemy odpowiednie polecenia export lub setenv.
Lub alternatywnie &ndash; wklepujemy odpowiednie polecenia export lub setenv.
-
Na wszelki wypadek sprzątamy po ostatniej edycji:
+
Sprzątamy po ostatniej edycji
make clean
make clean
Następnie należy uaktualnić źródła
Następnie należy uaktualnić źródła
Linia 54: Linia 54:
'''Ważne:''' nie należy uaktualniać źródeł od momentu rozpoczęcia edycji do momentu odesłania poprawek na serwer! W bardzo prosty sposób prowadzi to do "znikania" zmian wprowadzonych przez innych mapperów.
'''Ważne:''' nie należy uaktualniać źródeł od momentu rozpoczęcia edycji do momentu odesłania poprawek na serwer! W bardzo prosty sposób prowadzi to do "znikania" zmian wprowadzonych przez innych mapperów.
-
Mając aktualne źródła montujemy je do pliku wynik.mp:
+
Mając aktualne źródła montujemy je:
make mont
make mont
I od tego momentu możemy rozpoczynać pracę &ndash; MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć &ndash; make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc:
I od tego momentu możemy rozpoczynać pracę &ndash; MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć &ndash; make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc:
Linia 67: Linia 67:
lub lepiej:
lub lepiej:
make clean demont
make clean demont
-
albo (to samo, tylko krócej):
+
albo (to samo, tylko na skróty):
make cd
make cd
I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami, a na ekranie &ndash; zestaw instrukcji powodujących skopiowanie odpowiednich plików z katalogu roboczego do katalogów źródłowych. Wystarczy te linie zaznaczyć myszką i wkleić do wykonania, ale zanim to zrobisz, sprawdź, czy wszystko jest w porządku (less *.diff).
I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami, a na ekranie &ndash; zestaw instrukcji powodujących skopiowanie odpowiednich plików z katalogu roboczego do katalogów źródłowych. Wystarczy te linie zaznaczyć myszką i wkleić do wykonania, ale zanim to zrobisz, sprawdź, czy wszystko jest w porządku (less *.diff).
Linia 73: Linia 73:
Jeśli masz prawo zapisu do repozytorium, możesz zrobić
Jeśli masz prawo zapisu do repozytorium, możesz zrobić
make commit
make commit
-
To wykona komendę "<code>cvs commit</code>" na zdefiniowanych katalogach źródłowych, otwierając edytor tekstowy w celu wpisania komentarza. Domyślnie w systemach uniksowych jest to vim, ale można to zmienić ustawiając zmienną środowiskową EDITOR.
 
-
Jeśli nie masz prawa zapisu do CVS-a (albo wolisz, żeby twoje poprawki ktoś najpierw obejrzał), możesz spakować pliki diff i wysłać poprzez system zgłaszania poprawek [[flyspray]]
+
Wtedy otworzy ci się edytor tekstu w którym powinieneś opisać wprowadzone przez siebie zmiany. W przypadku Linux Mandriva jest to edytor [[VIM]]. Można też odpowiednimi komendami pojawiający się edytor tekstu zmienić na inny. Jak to zrobić opisałem [[Zmiana edytora tekstu w systemie linux|tutaj]]
 +
 +
Twoje poprawki nie zostaną wysłane na serwer do czasu zapisania komentarza i zamknięcia edytora o czym często zapominają wspomnieć "pomagający".
 +
 
 +
Jeśli nie masz prawa do zapisu powinieneś spakować pliki diff i wysłać poprzez system zgłaszania poprawek [[flyspray]]
tar -zcvf wrzutka.tgz *.diff
tar -zcvf wrzutka.tgz *.diff
 +
To samo osiągniesz pisząc "<code>make wrzuta</code>", a o innych możliwościach pracy wspomaganej przez <i>Makefile</i> możesz się dowiedzieć pisząc
To samo osiągniesz pisząc "<code>make wrzuta</code>", a o innych możliwościach pracy wspomaganej przez <i>Makefile</i> możesz się dowiedzieć pisząc
make help
make help
albo czytając [[Makefile.common|stronę Wiki opisującą Makefile.common]]
albo czytając [[Makefile.common|stronę Wiki opisującą Makefile.common]]
-
 
-
== Co dalej... ==
 
-
 
-
Edycja map w systemach uniksowych może być bardzo wygodna, bo wiele różnych często wykonywanych czynności można zautomatyzować w prosty sposób. Wiele takich udogodnień już teraz jest "zaszytych" w istniejące narzędzia, trzeba z nich tylko skorzystać. Zajrzyj na stronę opisującą [[Makefile.common]] &ndash; znajdziesz tam wiele porad jak przy pomocy istniejącego <i>Makefile</i> szukać błędów na mapie albo ułatwiać sobie wprowadzanie poprawek. Warto też już na początku w katalogu roboczym utworzyć plik o nazwie <i>attach</i>, którego zawartość będzie dołączana do mapy za każdym razem przy jej montowaniu.
 
-
Zależnie od tego, czy uruchamiasz Mapedita pod wine, VirtualBoxem, VMware czy jeszcze inną metodą, katalog roboczy może być różnie widziany wewnątrz (emulowanego) systemu Windows. Być może jest to dla windowsa dysk "Z:", a może "D:" &ndash; najprościej więc będzie nie zgadywać, tylko uruchomić raz Mapedita, dodać w nim załączniki i zachować plik wynik.mp. W okienku terminala można następnie wyłuskać z niego te linie z załącznikami. Możesz to zrobić otwierając plik wynik.mp w edytorze tekstowym, albo pisząc:
 
-
 
-
tail -10 wynik.mp > attach
 
-
 
-
co zapisze w pliku <i>attach</i> 10 ostatnich linii pliku mapy, czyli właśnie twoje załączniki i być może jeszcze jakieś linie wcześniej. Pozbądź się ich otwierając plik attach w edytorze tekstowym, albo zmieniając parametr wywołania programu <code>tail</code>. Musisz to zrobić tylko raz &ndash; przy następnym wywołaniu <code>make mont</code> zawartość tego pliku zostanie automatycznie dodana, nie trzeba więc będzie mozolnie dodawać za każdym razem załączników.
 
-- Wheart, TS
-- Wheart, TS

Wersja z dnia 19:36, 22 cze 2010

Edycja UMP w systemie Linux

Narzędzia

Czego będziemy potrzebowali:

  • Kompletnych źródeł UMP, a przynajmniej narzędzi, pliku Makefile.common oraz obszarów, które nas interesują
  • MapEdit lub MapEdit++ – edytor map
  • netgen – program przydatny do sprawdzania routingu
  • cvs, perl, awk, make – podstawowe wyposażenie wielu dystrybucji Linuksa
  • wine lub VirtualBox z systemem Windows – by uruchomić program MapEdit

Większość narzędzi zapewne masz już zainstalowane domyślnie, gdyby się jednak okazało, że któregoś brak (np. w trakcie dokonywania jakiejś czynności), wystarczy dany program doinstalować z odpowiedniego pakietu. Poniżej lista kilku wraz z nazwami pakietów Ubuntu, w których się znajdują (np. w celu zainstalowania programu "dos2unix" w Ubuntu wystarczy wpisać "sudo apt-get install tofrodos" a w Mandrivie jako root wpisujemy "urpmi dos2unix")

  • dos2unix, unix2dos – tofrodos
  • patch – patch
  • cvs – cvs

Przygotowania

Pierwszym krokiem jest ściągnięcie źródeł projektu do przygotowanego uprzednio katalogu. Tu dla przykładu jest to UMP-src

cd
mkdir UMP-src
cd UMP-src
cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout .

Jeśli masz założone konto do CVS-a, to oczywiście użyj danych tego konta zamiast konta "guest" i wpisz (wystarczy raz) "cvs login". Następną czynnością jest utworzenie katalogu roboczego, w którym na co dzień będziemy dokonywać edycji UMP-a i utworzenie w nim link do pliku Makefile.common znajdującego się piętro wyżej:

mkdir tmp
cd tmp
ln -s ../Makefile.common Makefile

Jeśli planujesz do Makefile dodawać własne lokalne modyfikacje, zamiast linka stwórz w katalogu roboczym plik Makefile zawierający jedną linjkę: "include ../Makefile.common". Za tym wpisem możesz dodawać własne rzeczy (np. zmieniać parametry wywołania netgena itp.) nie "psując" głównego pliku Makefile.common.

Kolejny krok to przygotowanie środowiska – plik Makefile.common wymaga zdefiniowania dwóch zmiennych:

  • DIR – wskazującej, które fragmenty UMPa nas interesują
  • CVS – wskazującej, gdzie znajduje się katalog główny repozytorium

Możemy utworzyć sobie plik (u mnie env.sh) który pomoże pamiętać o zainicjowaniu zmiennych środowiskowych. Jego zawartość (lub dla osób nie używających pliku – polecenia do wykonania w bashu/sh):

export DIR=UMP-Wroclaw
export CVS=/home/user/UMP-src

Użytkownicy csh/tcsh muszą tu odwołać się do swojego interpretera poleceń:

setenv DIR "UMP-Opole UMP-Katowice"
setenv CVS /home/user/UMP-src

Jeśli chcemy montować więcej niż jeden kawałek mapy – w cudzysłowie umieszczamy listę montowanych elementów. Definicję zmiennej CVS można także umieścić w swoim standardowym pliku startowym, czyli .cshrc lub .bashrc – wtedy jedyną rzeczą konieczną za każdym razem będzie określenie edytowanego obszaru w zmiennej DIR.

W tej chwili jesteśmy gotowi do pracy :)

Przebieg sesji

Zakładam, że znajdujemy się już w naszym katalogu roboczym, czyli UMP-src/tmp

Zaczynamy od przygotowania środowiska, a więc wykonania w _bieżącym_ shellu pliku env.sh (a więc za pomocą komendy "." (kropka) shella sh/bash lub "source" w csh/tcsh):

. env.sh

Lub alternatywnie – wklepujemy odpowiednie polecenia export lub setenv. Sprzątamy po ostatniej edycji

make clean

Następnie należy uaktualnić źródła

make update

Ważne: nie należy uaktualniać źródeł od momentu rozpoczęcia edycji do momentu odesłania poprawek na serwer! W bardzo prosty sposób prowadzi to do "znikania" zmian wprowadzonych przez innych mapperów.

Mając aktualne źródła montujemy je:

make mont

I od tego momentu możemy rozpoczynać pracę – MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć – make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc:

make clean update mont

a że jest to często wykonywana sekwencja, istnieje dla niej specjalny skrót:

make cum

Przed uruchomieniem Mapedita można sobie wygenerować listy niestyków i innych błędów na mapie – polecam opis Makefile.common

Po zakończeniu edycji i nagraniu zmian w pliku wynik.mp wykonujemy

make demont

lub lepiej:

make clean demont

albo (to samo, tylko na skróty):

make cd

I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami, a na ekranie – zestaw instrukcji powodujących skopiowanie odpowiednich plików z katalogu roboczego do katalogów źródłowych. Wystarczy te linie zaznaczyć myszką i wkleić do wykonania, ale zanim to zrobisz, sprawdź, czy wszystko jest w porządku (less *.diff).

Jeśli masz prawo zapisu do repozytorium, możesz zrobić

make commit

Wtedy otworzy ci się edytor tekstu w którym powinieneś opisać wprowadzone przez siebie zmiany. W przypadku Linux Mandriva jest to edytor VIM. Można też odpowiednimi komendami pojawiający się edytor tekstu zmienić na inny. Jak to zrobić opisałem tutaj

Twoje poprawki nie zostaną wysłane na serwer do czasu zapisania komentarza i zamknięcia edytora o czym często zapominają wspomnieć "pomagający".

Jeśli nie masz prawa do zapisu powinieneś spakować pliki diff i wysłać poprzez system zgłaszania poprawek flyspray

tar -zcvf wrzutka.tgz *.diff


To samo osiągniesz pisząc "make wrzuta", a o innych możliwościach pracy wspomaganej przez Makefile możesz się dowiedzieć pisząc

make help

albo czytając stronę Wiki opisującą Makefile.common

-- Wheart, TS