Często zdarza się nam, że w naszym Ubuntu przydałaby się najnowsza wersja ulubionego programu. Jak wiadomo stabilne wydanie Ubuntu w dniu premiery ma wiele świeżych paczek, ale niestety z każdym dniem stają się one coraz starsze, ponieważ twórcy tej dystrybucji rzadko kiedy decydują się na aktualizację danej paczki do nowszej wersji. Uważam, że podejmują słuszną decyzję, ponieważ ma to wiele plusów na naszą korzyść. Czasem jednak z przymusu musimy zastąpić starszą wersję aplikacji nowszą, ale na złość losu nigdzie nie możemy znaleźć w internecie paczki *.deb lub one nie są kompatybilne z naszym systemem. Co wtedy robić? Jedynym i najlepszym wyjściem będzie samodzielna kompilacja wybranego programu z źródeł.
Słowo kompilacja ludziom kojarzy się z czymś trudnym. Nie raz pewnie słyszeliśmy, że kompilacja to czarna konsola i początkujący użytkownik Ubuntu nie ma szans na powodzenie. Pozostaje teraz pytanie, czy na pewno tak jest? Przekonamy się o tym teraz… Przykładowo opiszę tutaj jak bezproblemowo w Ubuntu 8.10 samemu skompilować komunikator internetowy Gajim w wersji 0.12.1. Jest to często spotykana metoda i często w podobny sposób kompiluje się inne programy (weźcie pod uwagę, że słowo często nie znaczy zawsze).
Najpierw sprawdźmy, czy w repozytorium (sudo gedit /etc/apt/sources.list) znajdują się m.in. linijki zaczynające tak: deb-src …, np:
deb-src http://pl.archive.ubuntu.com/ubuntu/ intrepid main restricted
deb-src http://pl.archive.ubuntu.com/ubuntu/ intrepid-updates main restricted
…
Te wpisy są bardzo ważne, ponieważ bez nich możemy zapomnieć o kompilowaniu.
No to zaczynamy, kompilujemy i instalujemy najnowszego Gajima. Wszystko robimy w konsoli/terminalu. Jeśli w naszym systemie siedzi zainstalowany Gajim to trzeba go najpierw odinstalować (jeśli nie mamy to ta komenda jest zbędna):
sudo apt-get remove --purge gajim
Instalujemy potrzebne programy, które będą potrzebne do kompilacji najnowszego Gajima:
sudo apt-get build-dep gajim
Polecenie apt-get build-dep … (zamiast trzech kropek wpisujemy nazwę programu, który chcemy kompilować) instaluje wszystkie niezbędne programy do budowy danej aplikacji z źródeł. Mimo dużej zalety to polecenie nie zawsze musi spisywać się na piątkę. Po pierwsze nie zna wszystkich programów, po drugie nie zawsze musi pobrać wszystkie potrzebne programy i dlatego proponuję czytać na wszelki wypadek dokumentację dołączoną do źródeł lub na stronie producenta, ponieważ można znaleźć tam wiele przydatnych informacji (np. jakie biblioteki są potrzebne du budowy i poprawnego działania wybranego programu).
Teraz wchodzimy do katalogu domowego naszego użytkownika:
cd ~/
Z internetu ściągamy najnowszą wersję Gajima, którą chcemy zainstalować w naszym Ubuntu (jest to zwykły spakowany plik, coś takiego jak *.zip):
wget http://www.gajim.org/downloads/gajim-0.12.1.tar.bz2
Pobraną paczkę musimy rozpakować poleceniem:
tar xjf gajim-0.12.1.tar.bz2
Po rozpakowaniu danego pliku powstał nowy katalog z plikami, które są potrzebne do instalacji programu, wejdźmy do niego:
cd ./gajim-0.12.1
Kolejne polecenie sprawdzi, czy w systemie są zainstalowane wszystkie potrzebne biblioteki i w razie czego poinformuje nas o problemach jakie mogą napotkać:
./configure
Załóżmy, że wszystko jest w porządku i przechodzimy do kompilacji programu (czasami bywa czasochłonna, to wszystko zależy od źródeł i komputera):
make
Jeśli kompilacja przebiegła bezbłędnie to pozostaje zainstalować daną aplikację:
sudo make install
To wszystko, jeśli wszystko przebiegło zgodnie z planem możemy zacząć korzystać z nowej wersji programu.
Aby odinstalować Gajima, pozostaje wykonać kilka prostych poleceń. Najpierw wchodzimy do katalogu z Gajimem, w którym kompilowaliśmy tego Gajima:
cd ~/gajim-0.12.1
Teraz wyklepujemy polecenie, które odinstaluje skompilowanego Gajima:
sudo make uninstall
Oraz:
sudo make clean
W tym momencie Gajim został całkowicie usunięty z naszego systemu.
Aha… po kompilacji programu, jeśli on nam dobrze działa i nic nie zamierzamy dalej robić, proponuję odinstalować pakiety, które były potrzebne do kompilacji, ponieważ po co mają niepotrzebnie zaśmiecać system:
sudo apt-get autoremove
Oraz:
sudo apt-get clean
Jak widać kompilowanie programów z źródeł nie jest wcale takie trudne (niektórzy tylko wyolbrzymiają ten trud). Wiadomo najłatwiej jest zainstalować paczkę klikając 2x myszką na *.deb ale niestety nie zawsze istnieje taka możliwość.
Bardzo fajny artykuł EPUL. 🙂 Prosto i treściwie. 🙂
Warto by było też napomknąć, że nie każda aplikacja w swoich skryptach make posiada zadanie „uninstall”, ale przeważnie, jeżeli robimy po prostu upgrade ze starszej wersji kompilowanej własnoręcznie do nowszej, to odpowiednie pliki są po prostu nadpisywane. Jednak moim zdaniem twórcy oprogramowania powinni dodawać zadanie „uninstall” wszędzie tam, gdzie jest odpowiadające zadanie „install” tak samo, jak dodają „clean” wszędzie tam, gdzie jest „all” (domyślne zadanie make’a).
Nie znam się na programowaniu, ale czy naprawdę tak trudno przeobic tar.bz2 na .deb? czy poprostu nikomu się tego nie chce robić?
swietnie.
autor tylko zapomnial dodac, ze instalujac programy w ten sposob narobi sie wielkiego burdelu w systemie- tak zainstalowany pakiet nie jest latwy ani do usuniecia, ani do upgradu.
o koniecznosci trzymania zrodel niewspomne /chociaz, zwazywszy na to ze czesto w samych zrodlach /a dokladniej: w makeach/ panuje burdel, bo autor nieprzewidzial celu 'uninstall’- wiec ich trzymanie czesto mija sie z celem/.
osobiscie- jesli juz trza kompilowac cos na wlasna reke- polecam zapoznanie sie z programem checkinstall.
zamiast make install wpisuje sie wtedy po prostu make checkinstall -D i odpowiada sie na pare prostych pytan (nazwa programu, maintainer etc) – i otrzymuje sie gotowa paczke deb – ktora mozna instalnac przez dpkg -i; badz tez przeniesc. rowniez jej deinstalacja nie jest problemem.
pozdrawiam
Dodałbym że nie zawsze polecenie ./configure działa, bo niektóre programy mają inaczej, będąc bardziej zielonym niż teraz nie wiedziałem nic o dokumentacji programu i nie radziłem sobie z tym… Dopiero potem translator i jazda z dokumentacją która jest po angielsku…
[quote comment=”35862″]Nie znam się na programowaniu, ale czy naprawdę tak trudno przeobic tar.bz2 na .deb? czy poprostu nikomu się tego nie chce robić?[/quote]
Da się atavus odpowiedział jak 😛
@desant87
pamietaj o tym, ze 'moj sposob’ jest polsrodkiem- taka paczke mozna uzywac na swoim kompie (bo w sumie, czemu nie) ale nie popelnilbym wyslania jej do jakiegos repozytorium… jesli ktos chce poprawnie robic paczki, to niestety musi sobie o tym mocno poczytac
(FUD MODE=ON)
jednak erpeemowskie spece badz archowskie pkgbuildy sie latwiej robi
(FUD MODE=OFF)
W czerwonej ramce jest literówka – sources.list oczywiście. 🙂
oczywiście, oczywiście – poprawione
Ale dlaczeo Windowsiaki nawet programy OPENSOURCE które są pisane specjalnie dla linuxiarzy, są robione pod exe a my musimy kompilować? Nie rozumiem tej strategii. My mamy zachęcać do Linuxa czy do WIndowsa? Bo moze prawda jest taka że to Bill stworzył Linuxa by ludzie widzieli ze ta druga opcja którą mogą wybrać jest gorsza.
Chyba znów muszę spytać: o jakie programy Ci chodzi? Pisałeś już taki komentarz, na który dałem Ci odpowiedź, ale nadal drążysz temat. No to o jaki soft chodzi?
[quote comment=”35868″]Ale dlaczeo Windowsiaki nawet programy OPENSOURCE które są pisane specjalnie dla linuxiarzy, są robione pod exe a my musimy kompilować? Nie rozumiem tej strategii. My mamy zachęcać do Linuxa czy do WIndowsa? Bo moze prawda jest taka że to Bill stworzył Linuxa by ludzie widzieli ze ta druga opcja którą mogą wybrać jest gorsza.[/quote]
Dla dobra innych ludzi, daruj sobie ze swojej strony ich przekonywanie ;>
Bardzo dobry poradnik, co prawda dawno nie kompilowałem, ale warto sobie przypomnieć. A swoją drogą przydałby się artykuł o robieniu deb-ów.
A po co cd ~/? Wystarczy 'cd ~’. Jeśli mowa o kompilacji, to nie robię tego z jednego powodu tj. brakuje tego i tego, brakuje tego i tego, brakuje tego i tego. Po dociągnięciu „tego i tego” robi się w systemie śmietnik, o którym pisał ktoś wyżej.
Może i robi się śmietnik, ale po co zaraz ludzi zniechęcać.
Tak jakby porządek był potrzebny. Swoją drogą, ja również chętnie przeczytam podobny artykuł o robieniu paczek deb (tych prawdziwych z zależnościami itp. – nie przez checkinstall).
@ lukas
„A po co cd ~/? Wystarczy ‘cd ~’.”
z tego co kojarze to juz od dawien dawna wystarczy samo cd
Weźmy Pidgina kolejny przykład, na oficjalnej stronie jest w tar.bz2, wszystko fajnie bo na getdeb ktoś mądry wrzucił zdebowaną, ale tam do krucafiks jest aż 5 debów. PO KIJ? mam dać kolejne przykłady?
fooof: czekaj czekaj, to są te paczki deb, czy ich nie ma? Oprócz getdeba są jeszcze w zwykłym repo – z resztą nie tylko Ubuntu.
Nieźle, tylko przydał by się opis opcji ’–prefix=PATH’ do ./configure (też do make install) gdzie PATH to ścieżka do lokalnego katalogu w którym się zainstaluje program – po co śmiecić w systemie jak już ktoś wcześniej napisał 😉 Przy tym nie trzeba usuwać wersji zainstalowanej z repo.
„przepraszam to ja mam grać czy nie”
Jak nie mam to ma się dwie godziny w plecy z kompilowaniem no chyba że ktoś jest z zawodu informatykiem, jak są to nie jedna paczka ale minimum pięć, po co? nie wiem, ale po co upraszczać? To tak jak z grami. Kiedyś były tekstowe, teraz są 3d, niestety Ubuntu woli „gry tekstowe” (przenośnia dotycząca terminalu), w końcu jak to umysł rozwija!!! powodzenia w werbowaniu nowych człownków!
fooof: no to może podaj jakiś sensowny przykład programu, który nie ma tych paczek. Bo na razie piszesz o tym, co by było gdyby (jeśli dobrze zrozumiałem to, co chciałeś przekazać pisząc: „Jak nie mam”). Temat konsoli pominę bo nijak się ma do tematu rozmowy.
warto by bylo w artykule wspomniec, ze kompilujac recznie programy robimy sobie smietnik w systemie.
jesli juz mamy przygotowane wszysko, co jest potrzebne do kompilacji, warto pojsc o krok dalej i przygotowac paczke binarna *.deb
niektore dystrybucje jak gentoo czy archlinux maja ciekawszy mechanizm kompilacji. w gentoo kompilacja jest na porzadku dziennym. w arch kompilacja jest tez banalnie prosta i nie wymaga wiecej trudu niz „zwykla” instalacja z repo dzieki repozytorium z kodami zrodlowymi AUR oraz menadzerowi pakietow yaourt. kompilacja z AUR sprowadza sie do wykonania polecenia yaourt -S aur/nazwa_paczki
@fooof
nie mozna tak po prostu przerobic tara na deba ;)) w pliku tar masz kod zrodlowy. a deb to juz skompilowany plik binarny!
Przykład program nie w .deb – kadu? by zainstalować należy bawić się terminalem.
Przykład programu z z setkami debów- openoffice? znów terminal do instalacji.
Dziękuje
http://www.debian.org/doc/manuals/maint-guide/ch-start.pl.html
To trochę przybliża…
[quote comment=”35891″]Przykład program nie w .deb – kadu? by zainstalować należy bawić się terminalem.
Przykład programu z z setkami debów- openoffice? znów terminal do instalacji.
Dziękuje[/quote]
Nawet nie wiem jak komentować: Czy tak wyglada terminal? http://wstaw.org/images/free/2009/02/11/725830c8d5e7e95f8bb973187f803d.png
Jest Kadu, jest OpenOffice.org gotowe do zainstalowania hmm… A zapomniałem, Pidgin też da się tak zainstalować.
Wrony, nie umiesz ustawić/używać podstawowych rzeczy w systemie, kompilacja nie jest dla Ciebie. Spróbuj użyć dodaj/usuń programy. Na kompilacje przyjdzie jeszcze czas 🙂
Dzięki build-dep, kompilacja jest nawet przyjemna 🙂 Ostatnio trochę kompilowałem w pogoni za najnowszymi pakietami. Dzięki build-dep, nie było żadnych problemów. Czasem by mieć najnowszą wersję i nie czekać – trzeba kompilować. Mam nadzieję, że dzięki temu artykułowi, kompilacja stanie się mniej straszna w oczach nowych użytkowników 🙂
fooof: Twoje malkontenctwo staje się powoli męczące. Po pierwsze zarówno do Open Office, jak i do Kadu dodajesz repozytoria, jeśli chcesz z paczek. Nie rozumiem zatem, gdzie widzisz problem. Poza tym niewiele programów kompiluje się cztery godziny. Poza tym kompilują tylko ci, którzy chcą mieć naprawdę coś nowego i czegoś się nauczyć, o czym autor nie omieszkał wspomnieć. Poza tym kompilacja ma taką zaletę, że jest niezależna od dystrybucji i to jest jej wielki plus. I na koniec, nie trzeba być informatykiem, że by kompilować, są to tylko trzy polecenia i readme.
Przepraszam za błąd żeby oczywiście.
fooof kompilowanie programów jest dla wszystkich a nie dla programistów i na programowaniu nie trzeba znać się. Nie trzeba być informatykiem aby kompilować, zrozum to.
atavus bałagan sam z siebie nie robi się, to wszystko zależy od użytkownika. Ja na bałagan nie narzekam, ponieważ przez pół roku skompilowałem najwyżej cztery programy. Kompiluję tylko wtedy kiedy muszę a nie wtedy kiedy mi się zachce. Jeśli zaczniemy instalować 200 debów to też zrobi się bałagan. Na niektóre rzeczy nie mamy wpływu i tyle, a komputer jest po to aby z niego korzystać a nie przejmować się bałaganem.
[quote comment=”35874″]A po co cd ~/? Wystarczy 'cd ~’.[/quote]
Co za różnica czy będzie tak czy tak? Tak jest dobrze i tak więc w czym problem. Mogłem również napisać cd ~/Pulpit i też byłoby dobrze.
Niektóre osoby piszą, że mogłem wspomnieć jeszcze o niektórych szczegółach. Nie przeczę bo mogłem ale gdybym pisał o wszystkim to artykuł zrobiłby się obszerniejszy i bardziej skompilowany. Są różne programy, są różnice podczas kompilacji i wszystkiego nie jestem w stanie opisać. Myślę, że co najważniejsze zostało napisane a jak ktoś będzie chciał poznać więcej szczegółów to sięgnie po dokumentację i poczyta.
[quote post=”4310″]Najpierw sprawdźmy czy w repozytorium (sudo gedit /etc/apt/sources.list) znajdują się m. i. linijki zaczynające tak: deb-src …, np:
deb-src http://pl.archive.ubuntu.com/ubuntu/ intrepid main restricted
deb-src http://pl.archive.ubuntu.com/ubuntu/ intrepid-updates main restricted
…
Te wpisy są bardzo ważne, ponieważ bez nich możemy zapomnieć o kompilowaniu.[/quote]
Sprawdziłem, u mnie brak takich wpisów, a ponieważ nie ma informacji co zrobić w takim przypadku to ten artykuł jest do …
…bry. Również cieszę się, że Ci się podoba :craz: Po prostu dodaj te repozytoria do sources.list
Ale to nie jest artykuł o dodawaniu repozytoriów tylko o kompilowaniu. Natomiast odpowiedź na pytanie, jak się dodaje repozytoria znajdziesz na naszym forum.
SDG nie spełniłem Twojej zachcianki, no cóż zdarza ale niestety nie mogę ciągnąć kogoś za rączkę. Mógłbyś też przyczepić się do mojego artykułu o to, że nie napisałem jak zainstalować Ubuntu oraz skonfigurować internet bo przecież aby móc kompilować programy trzeba mieć zainstalowane Ubuntu. Otrzymałeś informację „aby móc kompilować musisz posiadać w repo wpisy deb-src …” i to jest najważniejsze, wystarczyło tylko poszukać w internecie o konfigurowaniu repozytorium. Tak jak napisał przedmówca: jest to artykuł o kompilowaniu a nie o dodawaniu repozytoriów. Gdybyś bardziej myślał to skopiowałbyś wszystkie wpisy, które są w sources.list, wkleiłbyś je ponownie na samym dole i zmieniłbyś w skopiowanych wpisach wyraz „deb” na „deb-src”.
Rzeczywiście przejrzysty 😛 Zazwyczaj najwięcej problemów jest z poleceniem configure. A jeszcze gorzej jest jak źródło masz gdzieś z internetu a nie z repozytoriów. Do tego trzeba instalować mase oprogramowania w wersjach dev. Często się zdarza że nie ma takich pakietów w repozytoriach i trzeba szukać w internecie. Po kompilacji trzeba wywalić pakiety dev, które zajmują sporo miejsca.
Witam!
Spotkałem się już nie raz ze stwierdzeniem, że programy skompilowane ze źródeł (np. Firefox) działają szybciej niż te zainstalowane z repozytorium. Jeżeli to prawda, to czy generując ze źródeł paczkę DEB za pomocą programu checkinstall celem późniejszej instalacji na własnym komputerze również uzyskamy przyrost prędkości w stosunku do programu zainstalowanego z repo?
cyklista:
wszystko zalezy od
1. opcji paczki ktore sa wybrane podczas –configure
2. ustawien kompilatora /jaka architektura, jakie opcje dodatkowe etc/
ogolnie rzecz ujmujac- w wielu przypadkach roznica jest niezauwazalna badz ledwie odczuwalna.
super artykulik wielkie dzięki autorowi, wielkie dzięki wpisującym, jestem początkujący i wasze porady są dla mnie bezcenne proszę o więcej
„ponieważ ma to wiele plusów na naszą korzyść”
Może i się czepiam, ale czy mogą być plusy na niekorzyść?
Co do samego artykułu, to nie przełamał mojej niechęci jako początkującego do kompilacji programów, więc nie będę się wypowiadał o treści. Kiedyś na pewno się przyda, więc dobrze, że coś takiego powstało 😀
Jak dla mnie to nie do końca Super Poradnik, największe problemy są w tym etapie
[code]./configure
Załóżmy, że wszystko jest w porządku i przechodzimy do kompilacji programu [/code].
A Ty potraktowałeś to w sposób „łagodzący”, według mnie trzeba było opisać nawet w małym stopniu co zrobić , jak patrzeć , żeby dostrzec czy wszystko jest w porządku, czy jednak tego porządku brak.
Ale Dzięki i za taki poradnik. Pozdrawiam Krzysiek
Czy linux zosta opracowany dla zabawy programistw? Uzywalem windowsa od wersji 3.0 i po kolei wszystkie wyzsze..zakoczynem na Win 7. tam wszystko byo jasne i dla ludzi, plik .exe- klik i po wszystkim. przesiadem sie na Ubuntu i obecnie minta, podobna historia, paczka .deb klik i dziala.Teraz dostaje tar… odpowiednik windowsowego .zip i po rozpakowaniu nie wiadomo co z tym zrobic dalej. Do plikow .deb jest program instalacyjny, czy zamiast szkolenia z instalacji nie lepiej opracowac program do instalacji tych plikow? Mam problem z test disk…potrzebny od zaraz, paczki .deb nie moge znalazc..dodatkowo uciekly mi polskie litery.Chyba zmienie system!!
Systemy oparte na Linuksie zostały utworzone na różne potrzeby różnych osób – stąd mnogość dystrybucji. W Ubuntu czy innych popularnych dystrybucjach instalowanie programów z ręcznie pobranych plików .deb lub innych to margines. Najlepiej używać repozytoriów – nie ma chyba nic bardziej przyjaznego dla użytkownika, gdy wszystko samo się instaluje.
A co do postępowania z archiwum .tar – jak sam zauważyłeś – tar, to taki zip – czyli skompresowane archiwum i w środku może być cokolwiek – zarówno kod źródłowy jak i binarki, albo obrazki, cokolwiek… skoro ktoś tak dostarcza oprogramowanie – to w środku powinna być instrukcja co dalej robić (zazwyczaj w pliku README). Nie da się napisać programu, który instalowałby archiwa .tar, bo jak niby odgadnąć co autor miał na myśli i co z tym czymś co jest w środku zrobić? Inna sprawa, że jeśli program jest chociaż trochę popularny i udostępniony jest jedynie w postaci kodu źródłowego (nie znam takiego przypadku, ale może się zdarzyć), to z pewnością w społeczności Linuksa znajdą się ludzie udostępniający ten kod w formie skompilowanej i gotowej do instalacji.
Co do samego programu testdisk – jest w repozytoriach – można go zainstalować jednym prostym poleceniem – sudo apt install testdisk – a jak bardzo chcesz to można pobrać plik deb z packages.ubuntu.com (ale może też być potrzebne pobranie zależności, aby instalacja się udała). Jest jeszcze jedna opcja – z pewnością znajdziesz dystrybucje, które są pomocne w ratowaniu dysków/danych i zostały stworzone przez programistów (być może nawet dla zabawy), aby pomóc w awaryjnych sytuacjach i zawierają zestaw pomocnych programów, w tym testdisk. 😉