Edycja w systemie Linux
Z UMP
(→Narzędzia) |
(→Przygotowania: - zmiana serwera na _cvs_.ump.waw.pl) |
||
(Nie pokazano 20 wersji pośrednich.) | |||
Linia 4: | Linia 4: | ||
Czego będziemy potrzebowali: | Czego będziemy potrzebowali: | ||
* Kompletnych źródeł UMP, a przynajmniej narzędzi, pliku [[Makefile.common]] oraz obszarów, które nas interesują | * Kompletnych źródeł UMP, a przynajmniej narzędzi, pliku [[Makefile.common]] oraz obszarów, które nas interesują | ||
- | * [[MapEdit]] lub [[MapEdit++]] | + | * [[MapEdit]] lub [[MapEdit++]] – edytor map |
- | * [[netgen]] | + | * [[netgen]] – program przydatny do sprawdzania routingu |
- | * cvs, perl, awk, make | + | * cvs, perl, awk, make – podstawowe wyposażenie wielu dystrybucji Linuksa |
- | * wine | + | * [[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"). Dodatkowo w Ubuntu 10.x musimy ręcznie zrobić symlinki do programu <code>fromdos</code> o odpowiednich nazwach ("<code>sudo bash; cd /usr/bin; ln -s fromdos dos2unix; ln -s fromdos unix2dos</code>"). |
- | * dos2unix, unix2dos | + | * dos2unix, unix2dos – tofrodos |
- | * patch | + | * patch – patch |
- | * cvs | + | * cvs – cvs |
== Przygotowania == | == Przygotowania == | ||
Linia 21: | Linia 21: | ||
mkdir UMP-src | mkdir UMP-src | ||
cd UMP-src | cd UMP-src | ||
- | cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout . | + | cvs -z5 -d:pserver:guest@cvs.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". Jeśli z jakiegoś powodu "checkout ." wywala się na próbie ściągnięcia pliku Makefile.common, traktując go jak katalog, spróbuj "checkout all". | |
+ | |||
+ | 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ę w katalogu wyżej: | ||
mkdir tmp | mkdir tmp | ||
cd tmp | cd tmp | ||
- | ln -s ../Makefile.common Makefile | + | ln -s ../narzedzia/Makefile.common Makefile |
+ | |||
+ | Jeśli planujesz do <i>Makefile</i> dodawać własne lokalne modyfikacje, zamiast | ||
+ | linka stwórz w katalogu roboczym plik Makefile zawierający jedną linijkę: | ||
+ | "<code>include ../narzedzia/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 | + | Kolejny krok to przygotowanie środowiska – plik Makefile.common wymaga zdefiniowania dwóch zmiennych: |
- | * '''DIR''' | + | * '''DIR''' – wskazującej, które fragmenty UMPa nas interesują |
- | * '''CVS''' | + | * '''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 | + | 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 DIR=UMP-PL-Wroclaw |
export CVS=/home/user/UMP-src | export CVS=/home/user/UMP-src | ||
Użytkownicy csh/tcsh muszą tu odwołać się do swojego interpretera poleceń: | Użytkownicy csh/tcsh muszą tu odwołać się do swojego interpretera poleceń: | ||
- | setenv DIR "UMP-Opole UMP-Katowice" | + | setenv DIR "UMP-PL-Opole UMP-PL-Katowice" |
setenv CVS /home/user/UMP-src | setenv CVS /home/user/UMP-src | ||
- | Jeśli chcemy montować więcej niż jeden kawałek mapy | + | 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 :) | W tej chwili jesteśmy gotowi do pracy :) | ||
- | |||
== Przebieg sesji == | == Przebieg sesji == | ||
Zakładam, ż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 | + | 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 | + | Lub alternatywnie – wklepujemy odpowiednie polecenia export lub setenv. |
Sprzątamy po ostatniej edycji | Sprzątamy po ostatniej edycji | ||
make clean | make clean | ||
Linia 55: | Linia 62: | ||
Mając aktualne źródła montujemy je: | Mając aktualne źródła montujemy je: | ||
make mont | make mont | ||
- | I od tego momentu możemy rozpoczynać pracę | + | 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 | make clean update mont | ||
a że jest to często wykonywana sekwencja, istnieje dla niej specjalny skrót: | a że jest to często wykonywana sekwencja, istnieje dla niej specjalny skrót: | ||
make cum | make cum | ||
- | Przed uruchomieniem Mapedita można sobie wygenerować listy niestyków i innych błędów na mapie | + | '''Ważne:''' należy zawsze montować pełne dane, to jest z plikami "topo", szczególnie edytując obszary poza miastami: |
+ | make cumt | ||
+ | |||
+ | 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 | Po zakończeniu edycji i nagraniu zmian w pliku wynik.mp wykonujemy | ||
Linia 66: | Linia 76: | ||
lub lepiej: | lub lepiej: | ||
make clean demont | make clean demont | ||
- | I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami. | + | 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 | 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 [[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 | ||
- | |||
- | [[Kategoria: Linux]] | + | 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 |
- | [[Kategoria: Rysowanie]] | + | make help |
+ | albo czytając [[Makefile.common|stronę Wiki opisującą Makefile.common]] | ||
+ | |||
+ | -- Wheart, TS | ||
+ | |||
+ | [[Kategoria:Linux]] | ||
+ | [[Kategoria:Rysowanie]] | ||
+ | [[Kategoria:Tworzenie mapy]] | ||
+ | [[Kategoria:Narzędzia]] |
Aktualna wersja
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"). Dodatkowo w Ubuntu 10.x musimy ręcznie zrobić symlinki do programu fromdos
o odpowiednich nazwach ("sudo bash; cd /usr/bin; ln -s fromdos dos2unix; ln -s fromdos unix2dos
").
- 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@cvs.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". Jeśli z jakiegoś powodu "checkout ." wywala się na próbie ściągnięcia pliku Makefile.common, traktując go jak katalog, spróbuj "checkout all".
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ę w katalogu wyżej:
mkdir tmp cd tmp ln -s ../narzedzia/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ą linijkę:
"include ../narzedzia/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-PL-Wroclaw export CVS=/home/user/UMP-src
Użytkownicy csh/tcsh muszą tu odwołać się do swojego interpretera poleceń:
setenv DIR "UMP-PL-Opole UMP-PL-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
Ważne: należy zawsze montować pełne dane, to jest z plikami "topo", szczególnie edytując obszary poza miastami:
make cumt
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