Czy powiedziano Ci, aby „sklonować repozytorium i zbudować je”, a Ty nie wiesz, co dalej? Pokażemy Ci, jak uruchomić ten program na GitHubie w systemie Linux, nawet jeśli jesteś początkującym.
Instrukcje składające się na program komputerowy są zapisywane, edytowane i przechowywane w plikach tekstowych. Następnie program zwany kompilatorem przetwarza te pliki, co tworzy wersję wykonywalną programu. Pliki tekstowe instrukcji nazywane są kodem źródłowym, a wersja programu, która może działać na komputerze, określana jest jako wersja binarna lub wykonywalna.
To uproszczona wersja wydarzeń, ale tworzy poprawny, choć uogólniony, obraz. W praktyce znajdziesz wiele odmian tego modelu. Czasami inne programy generują pliki tekstowe. Innym razem uruchamia się kod źródłowy wewnątrz tłumacza, więc nie trzeba go kompilować, i tak dalej.
Jednak jedyną uniwersalną prawdą we wszystkich projektach oprogramowania jest to, że pliki kodu źródłowego są klejnotami koronnymi, które należy traktować z najwyższą starannością.
Programy kontroli wersji
Wszystkie pliki kodu źródłowego w projekcie nazywane są bazą kodu. W przypadku dużych projektów wielu programistów często pracuje nad bazą kodu. Każda zmiana kodu musi być śledzona i możliwa do zidentyfikowania. Zmiany muszą być odwracalne, a jeśli różni programiści wprowadzają zmiany w tym samym pliku kodu źródłowego, ich edycje muszą zostać scalone.
Nie jest więc zaskakujące, że istnieją programy zwane systemami kontroli wersji, które ułatwiają zarządzanie zmianami w bazie kodu. Systemy kontroli wersji przechowują wszystkie poprzednie wersje każdego pliku w bazie kodu, a każda zmiana jest rejestrowana, komentowana i śledzona.
Mała rzecz zwana Git
Linus Torvalds, twórca jądra Linuksa, opracował program do kontroli wersji o nazwie Git, aby zarządzać bazą kodów jądra Linux. Obecnie jest to najczęściej stosowane oprogramowanie do kontroli wersji na świecie, z którego korzystają miliony użytkowników.
W przypadku Gita baza kodu projektu jest przechowywana w repozytoriach. Oprócz lokalnych repozytoriów, które znajdują się na komputerach programistów i, być może, na centralnym serwerze w sieci, dobrą praktyką jest posiadanie zewnętrznego lub zdalnego repozytorium.
I tu pojawia się GitHub.
GitHub
GitHub powstał w wyniku sukcesu Gita. Założyciele dostrzegli potrzebę bezpiecznego hostowania zdalnych repozytoriów Git. Rozpoczęli biznes udostępniania platformy chmurowej, aby umożliwić zespołom programistów hostowanie zdalnych repozytoriów. Od kwietnia 2019 roku GitHub obsługuje ponad 100 milionów repozytoriów.
Jeśli aplikacja jest projektem typu open source, istnieje duże prawdopodobieństwo, że będzie hostowana na GitHubie. Dostępne są inne platformy repozytoriów, takie jak BitBucket i GitLab, ale GitHub ma lwią część repozytoriów open source.
Anatomia repozytorium
Repozytorium GitHub składa się z folderów zawierających pliki, w tym wszystkie istotne pliki kodu źródłowego. Zwykle w repozytorium znajduje się wiele innych typów plików, takich jak dokumentacja, strony podręcznika, pliki licencji oprogramowania, instrukcje kompilacji i pliki skryptów powłoki. Nie ma reguł dotyczących tego, co powinno lub musi zawierać repozytorium, ale istnieją pewne konwencje.
Jeśli znasz sposób poruszania się po jednej kuchni, możesz poruszać się po dowolnej kuchni. Tak samo jest z repozytoriami. Gdy zrozumiesz konwencje, będziesz wiedział, gdzie się udać, aby znaleźć to, czego potrzebujesz.
Jak więc uzyskać kopię repozytorium na swoim komputerze i jak zbudować program w postaci binarnego pliku wykonywalnego?
Plik README
Tradycyjnie plik README umieszcza się w repozytorium. Może się nazywać README, Readme lub README.md. Zobaczmy repozytorium GitHub edytora Atom. Zobaczysz długą listę folderów i plików. Przewiń w dół, aby zobaczyć zawartość pliku README.md.
GitHub automatycznie wyświetla zawartość pliku README na pierwszej stronie repozytorium. Jeśli plik README ma rozszerzenie „.md”, będzie zawierał znaczniki Markdown, co pozwala programistom na używanie elementów stylu, takich jak czcionki, wypunktowania i obrazy.
Zwykle plik README zawiera sekcje, które informują o tym, o czym jest projekt, jaka jest licencja, kto zarządza projektem, jak się zaangażować oraz jak zbudować i uruchomić aplikację. Jeśli nie zawiera rzeczywistych instrukcji kompilacji, powie Ci, gdzie znaleźć te informacje. Inne przydatne informacje dotyczące budowania aplikacji, takie jak wymagane narzędzia do kompilacji i inne zależności, mogą być tutaj wymienione lub łączone z tymi informacjami.
Pudełka Repozytorium
Naszą misją jest sklonować repozytorium pudełek, a następnie skompilować aplikację Boxy. Repozytorium ma ten sam układ, co w przypadku Atom. Jest lista folderów i plików, a poniżej znajduje się zawartość pliku README. Jest zgodny ze standardowym układem repozytorium, ale jest to mniejszy projekt, więc jest mniej folderów i plików.
Plik README również jest krótszy. Ma sekcję o nazwie „Rozwój”. W tej sekcji znajduje się link zatytułowany „budowanie ze źródła”. Jeśli skorzystamy z tego linku, powinniśmy znaleźć potrzebne informacje.
Zwykle do poruszania się po repozytorium i znajdowania potrzebnych informacji potrzebne jest lekkie śledztwo, ale nie jest to trudne. Przeczytaj uważnie wszystko na stronie repozytorium. Czasami informacje są dostępne, ale mogą nie być wyświetlane w widocznym miejscu.
Zależności
Strona „Tworzenie na podstawie źródła” zawiera sekcję „Tworzenie w systemie Linux” i właśnie tego potrzebujemy. Mówi, że musimy mieć kompilator C, Bison i Flex zainstalowane.
Instrukcje budowania mówią, aby wydać polecenie make, więc będziemy również potrzebować make. Narzędzia wymagane do zbudowania tej aplikacji to kompilator C, Bison, Flex, make i Git (do sklonowania repozytorium na komputer).
Ten artykuł był testowany na komputerach z dystrybucjami Ubuntu, Fedora i Manjaro Linux. Żadna z dystrybucji nie miała zainstalowanych wszystkich tych narzędzi – coś trzeba było zainstalować na każdym z nich.
Instalowanie zestawu narzędzi
Ubuntu musiał mieć zainstalowane oprogramowanie Git, Flex, Bison i make. Oto polecenia:
sudo apt-get install git
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
Fedora musiała mieć zainstalowane oprogramowanie Flex, Bison i make. Oto polecenia:
sudo dnf install flex
sudo dnf install bison
sudo dnf install make
Manjaro musiał mieć zainstalowany kompilator GCC, Flex i Bison. Oto polecenia:
sudo pacman -Syu gcc
sudo pacman -Syu flex
sudo pacman -Syu bison
Klonowanie repozytorium
Każde repozytorium GitHub ma określony adres internetowy używany z Gitem do sklonowania repozytorium na twój komputer. Na stronie głównej repozytorium pudełek znajduje się zielony przycisk oznaczony „Klonuj lub pobierz”.
Kliknij przycisk, aby wyświetlić adres internetowy, który musimy podać w poleceniu git, gdy klonujemy repozytorium.
Przejdź do katalogu, do którego chcesz sklonować repozytorium, a następnie użyj tego polecenia. Jeśli twoje okno terminala to obsługuje, możesz skopiować i wkleić adres internetowy do polecenia. Naciśnij Ctrl + Shift + V, aby wkleić do okna terminala GNOME.
git clone https://adres.repozytorium.git
Git klonuje zdalne repozytorium i tworzy lokalne na twoim komputerze. Mówi nam, że klonuje się do katalogu o nazwie „pudełka”.
Katalog „pudełka” jest tworzony w katalogu, z którego wydałeś polecenie git. Jeśli przejdziemy do katalogu „pudełka” i spojrzymy na zawartość, zobaczymy tę samą listę plików i folderów, którą widzieliśmy na stronie GitHub.
Świetnie! Pomyślnie sklonowaliśmy kod źródłowy i inne pliki na naszym komputerze. Teraz musimy zbudować aplikację.
Budowanie aplikacji
Aby zbudować aplikację, musimy postępować zgodnie z instrukcjami w repozytorium GitHub. Czasami uruchamiamy określony plik powłoki, a innym razem używamy make. Instrukcje budowania, które przestrzegamy, nakazały nam uruchomić make.
Narzędzie make czyta i wykonuje zestaw instrukcji z pliku makefile. Te instrukcje mówią make, jak skompilować program i połączyć go razem. Make przekazuje instrukcje do kompilatora i innych narzędzi do budowania.
Polecenie, którego mamy użyć, wywoła dwukrotnie make. Pierwsze wywołanie make tworzy aplikację, a drugie uruchamia zestaw testów.
Polecenie, które poleciły nam instrukcje kompilacji, to:
make && make test
Wiele wierszy danych wyjściowych przewija się szybko w oknie terminala. Po około minucie wrócisz do wiersza poleceń.
Wdrażanie aplikacji pudełek
Aplikacja została zbudowana i mamy plik binarny wykonywalny. Musimy teraz skopiować plik binarny do katalogu /usr/bin/. Dzięki temu powłoka może go znaleźć, gdy spróbujemy go użyć.
W przypadku niektórych aplikacji może to być wszystko, co musisz zrobić. W innych przypadkach może być konieczne skopiowanie dodatkowych plików, takich jak strony podręcznika i pliki konfiguracyjne, do lokalizacji w systemie plików. To ostatnie jest tym, co musimy zrobić z naszą nową aplikacją, ponieważ było to w instrukcjach kompilacji.
Użyj sudo, aby uruchomić te polecenia. Pierwsze polecenie kopiuje stronę podręcznika do katalogu man1:
sudo cp doc/boxes.1 /usr/share/man/man1
Następnie skopiuj globalny plik konfiguracyjny do katalogu w /usr/share/:
sudo cp boxes-config /usr/share/boxes
Na koniec skopiuj plik binarny do /usr/bin:
sudo cp src/boxes /usr/bin
Testowanie aplikacji pudełek
Zobaczmy, czy to wszystko działa! Spróbuj otworzyć stronę podręcznika dla polecenia box.
man boxes
To zachęcające! Widzisz stronę podręcznika systemowego, która mówi, jak używać polecenia box.
Naciśnij „Q”, aby opuścić system man i spróbować użyć polecenia boxes.
echo newsblog.pl | boxes
Otrzymujemy odpowiedź:
Może się to wydawać nieco rozczarowujące, biorąc pod uwagę cały wysiłek, który wykonałeś, ale celem tego ćwiczenia było przeprowadzenie cię przez proces klonowania repozytorium z GitHub i budowania aplikacji.
Polecenie boxes umożliwia zawijanie tekstu przesyłanego potokiem do różnych ramek. Niektóre z nich mogą być wykorzystywane jako komentarze w plikach kodu źródłowego. Powyższy format działałby jako komentarz w pliku kodu źródłowego C. Inne mają charakter czysto dekoracyjny. Opcja -d (design) pozwala wybrać styl ramki.
echo newsblog.pl | boxes -d whirly
echo newsblog.pl | boxes -d c-cmt2
Istnieje długa lista projektów, z których możesz wybierać. Aby zobaczyć je wszystkie, użyj tego polecenia:
boxes -l | less
Budowa zakończona
Kroki budowania ze źródła są zazwyczaj proste:
- Przejrzyj instrukcje kompilacji w repozytorium.
- Sprawdź, czy masz zainstalowane wymagane narzędzia i zainstaluj brakujące.
- Sklonuj repozytorium na swój komputer.
- Postępuj zgodnie z instrukcjami kompilacji, które często są tak proste, jak wpisanie make.
- Kopiuj pliki do wymaganych lokalizacji.
Jeśli instrukcje kompilacji zawierają niejasne kroki, sprawdź, czy projekt ma forum lub społeczność, do której możesz wysłać pytanie. Jeśli aplikacja ma witrynę internetową, może mieć stronę „Skontaktuj się z nami”. Deweloper, który zajmuje się projektem pudełek, ma swój e-mail na stronie „Informacje” w witrynie stronie internetowej pudełek. To hojny gest z jego strony i typowy dla szerszej społeczności open source.
newsblog.pl