[Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Linux jako system PC i Embedded
Regulamin forum
Aby łatwiej poruszać się w zagadnieniach to prosimy aby w temacie, na samym początku, w nawiasach prostokątnych umieszczać hasło wiodące dla opisywanego problemu np. [Debian], [System embedded], [Linux Mint] itp.
Awatar użytkownika
j23
User
User
Posty: 356
Rejestracja: czwartek 08 paź 2015, 18:40

[Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: j23 » wtorek 07 mar 2017, 04:14

Witam Koleżanki i Kolegów,

Zainspirowany tym wątkiem oraz problemami z własnej autopsji instalowania różnych rzeczy pod Linuxem (konkretnie Debianem) mam taką ogromną prośbę:
Czy Ktoś z Was mógłby wytłumaczyć krok po kroku, w przystępny, PROSTY i zrozumiały sposób (jak dziecku) jak instalować sterowniki, programy, aplikacje z zewnętrznych źródeł (spoza domyślnego, lub dodanego repozytorium dystrybucji Linuxa)?

Niby jest to proste, ale podobnie jak Kolega Krzychu parę razy "zaciąłem" się na kompilacji źródeł. A to makefile był źle napisany, a to jakichś nagłówków brakowało, a to coś z kompilatorem (nie ta wersja, źle dodany, ogólnie coś nie tak z toolchainem). Co prawda wiem to i owo, ale w dalszym ciągu nie na tyle żeby budować własny kod podręcznymi narzędziami Linuxa (że tak się wyrażę).

Z góry wielkie dzięki! :)

Pozdrawiam! J23 Jarek

Awatar użytkownika
squeez
User
User
Posty: 204
Rejestracja: czwartek 04 lut 2016, 10:13

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: squeez » wtorek 07 mar 2017, 08:53

Może powiem jak ja sobie radzę a czy jest to dobra droga to już niech każdy sobie oceni.

1) Zawsze podstawą dla mnie jest szukanie w rodzimych repozytoriach do konkretnej wersji czyli jeśli mam aktualne wydanie Jessie to dla tego wydania szukam softu, jeśli nie ma w oficajlnym wydaniu albo jest w starszej wersji niż mnie interesuje sprawdzam w repozytorium backports.

2) Czasami wydawcy tworzą swoje repozytoria bardziej na czasie niż te oficjalne np. VirtualBox (https://www.virtualbox.org/wiki/Linux_Downloads) należy dodać ich repozytorium zgodne z wydaniem.

3) Jeśli już tego nie znajdę tam to szukam paczek deb (prekompilowanych dla mojego wydania).

4) Jeśli 1, 2 i 3 nie daje pożądanych rezultatów a źródła są dostępne to pozostaje budowa samodzielna, poza podstawowymi pakietami do budowy należy sprawdzić co potrzebuje dany soft. Zawsze przed kompilacją należy odpalić configure, które sprawdza dostępność bibliotek przed kompilacją i nie kompiluję dopóki configure nie da mi pozytywnego wyniku dla wszystkich bibliotek. Jeśli jest coś potrzebne to zawsze jest napisane co i w jakiej wersji i należy to doinstalować z repozytorium podstawowego lub backports .

Nigdy nie robię tak że biorę paczki deb z innych pokrewnych dystrubucji jak Ubuntu czy też nie używam repozytoriów Ubuntu w Debianie.

Jeszcze nie miałem chyba sytuacji żeby coś nie poszło według tych 4 poziomów. Jednak zawsze jak mam możliwość instalacji paczki to instaluję paczkę niż kompilacja samemu i tak też bym radził innym.

Jeśli chodzi natomiast o różne poradniki ... ludzie często podchodzą bezmyślnie i kopiują całe komendy kopiuj/wklej z tego co jest na stronie do swojej konsoli. Nawet nie zwracając uwagi na to że może być tam literówka albo poradnik ma już jakiś czas i np, zmieniła się jakaś paczka albo jej wersja a co za tym idzie zależności nie są spełnione.

Ja zawsze podchodzę do tego tak że jak ktoś pokazuje apt-get install [i tu leci z 20 paczek do instalacji] to wolę poświęcić więcej czasu i instalować każdą z nich oddzielni wówczas jak coś jest nie tak wiem w jakim miejscu i gdzie szukać rozwiązania.
Natomiast przy bezmyślnej metodzie copy/pastle ludzie nawet nie czytają co im apt-get pisze, że czegoś tam nie zainstalował bo coś tam ... wiec reszta procesu jest już skazana na niepowodzenie tylko potem gorzej dojść gdzie ten błąd jest.

P.S. należy też mieć na uwadze nie tylko wydania ale i architektury sprzętowe np. coś co jest na x86 nie znaczy że będzie na ARM itp. i niekiedy kompilacją źródeł między architekturami też może nie przynieść pożądanych efektów ale takie rzeczy najlepiej czytać na stronach projektów gdzie zazwyczaj jest HOWTO, README itp. i naprawdę warto poświęcić chwilę czasu aby się zapoznać z tymi materiałami.

Awatar użytkownika
j23
User
User
Posty: 356
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: j23 » środa 08 mar 2017, 01:42

Dzięki za szybką odpowiedź Kolego Squeez. Co prawda w pktt.1, 2, 3 odniosłeś się mimo wszystko do instalacji z repo (co jest mi akurat znane i robię dokładnie tak jak Ty), ale dziękuję bo zawsze daje mi to wgląd czy robię coś okey czy robię te sprawy niedokładnie tak jak być powinny.
Tak czy siak.. Odnośnie:
squeez pisze:(...)4) Jeśli 1, 2 i 3 nie daje pożądanych rezultatów a źródła są dostępne to pozostaje budowa samodzielna, poza podstawowymi pakietami do budowy należy sprawdzić co potrzebuje dany soft. Zawsze przed kompilacją należy odpalić configure, które sprawdza dostępność bibliotek przed kompilacją i nie kompiluję dopóki configure nie da mi pozytywnego wyniku dla wszystkich bibliotek.
Jak to zrobić? Czy możesz pokazać jakieś przykłady?

squeez pisze:Nigdy nie robię tak że biorę paczki deb z innych pokrewnych dystrubucji jak Ubuntu czy też nie używam repozytoriów Ubuntu w Debianie. Jeszcze nie miałem chyba sytuacji żeby coś nie poszło według tych 4 poziomów. Jednak zawsze jak mam możliwość instalacji paczki to instaluję paczkę niż kompilacja samemu i tak też bym radził innym.
No widzisz, nie zawsze jest tak różowo.. Widocznie nie trafiła Ci się instalacja zewnętrznych sterowników (firmware, pliki z rozszerzeniem *.fw - ok, wiem, wiem, że są repozytoria, ale jednak nie zawsze). Druga sprawa, to czasami są naprawdę zewnętrzne źródła np. z github'a i chociaż (teoretycznie) można je pobrać narzędziami debianowymi do gita, to nie zawsze (u mnie się to udaje). Nie piszę już tutaj o całkowitych abstrakcjach, które mają (niestety wciąż) u Raspberry, gdzie np. okazuje się, że firmware (firmowy element14) ma jakieś bug'i i trzeba wszystko kompilować ręcznie - takie rzeczy po prostu się zdarzają. W każdym razie ja pamiętam jeszcze całkiem dobrze czasy Debiana Lenny kiedy DUUUŻO rzeczy instalowało się właśnie ręcznie (chociaż na tamte czasy byłem zrażony do Linux'a i go nie używałem, a tylko czysto eksperymentowałem - zresztą mało i z niewielkimi skutkami).

squeez pisze:Jeśli chodzi natomiast o różne poradniki ... ludzie często podchodzą bezmyślnie i kopiują całe komendy kopiuj/wklej z tego co jest na stronie do swojej konsoli. Nawet nie zwracając uwagi na to że może być tam literówka albo poradnik ma już jakiś czas i np, zmieniła się jakaś paczka albo jej wersja a co za tym idzie zależności nie są spełnione.
Nigdy tak nie robię. Katalogi, komendy, wersje kompilatora, wersje jądra i nagłówki - to wszystko musi się zgadzać.

Mój problem z RĘCZNĄ instalacją polega raczej, że nie wiem co i jak po kolei. Przedstawię krótki przykład. Załóżmy, że chcę ręcznie zainstalować sterowniki (firmware) do karty sieciowej TP-LInk TL-WN440G (taka wersja karty WiFi pod USB z antenką, dość dobrze znana). Okey, wiem, że to jest w repo ale akurat nie w tym rzecz. Załóżmy dla zobrazowania dobrego przykładu, że tego nie ma, ale (co wiem na 100%) można pobrać sterownik htc9281.fw i coś takiego co się nazywa compat-wireless. Pierwszy to plik firmware'u, drugi to zip, gdzie wewnątrz są sterowniki do routerów. Instrukcja jest napisana przez kogoś kto już to robił i słusznie mu to wychodziło, ale u mnie problem objawiał się (podobnie jak u Kolegi Krzychu) w tym, że w konsoli występowały błędy podczas próby skompilowania bibliotek (sterowników routerów - pakiet compat-wireless, objawiający się komunikatami, że nie znaleziono pliku uruchomieniowego kompilatora cmake, qmake. No i co teraz? Makefile źle napisany? Raczej nie. Po prostu brakuje narzędzia cmake z repo. Ok. Doinstalowane za pomocą apt-get i ponowna próba. Znowu coś nie tak i tak w kółko. Tutaj jest problem.

W związku z powyższy chciałem prosić o wytłumaczenie RĘCZNEJ INSTALACJI SPOZA REPOZYTORIUM - tak jak kiedyś większość rzeczy pod Linuxem się instalowało. Jest to ogólnie znana kolejność (może poza zmianą używanych narzędzi, tzn. qmake zamiast cmake, etc.). To co wiem do tej pory to jest to że trzeba wiedzieć:
1. Wersja Linux'a - tego dowiemy się z konsoli za pomocą:

Kod: Zaznacz cały

uname -a

2. Przed instalacją zaktualizować środowisko uruchomieniowe systemu czyli:

Kod: Zaznacz cały

apt-get update
apt-get upgrade

3. Ściągnąć (o ile nie ma) nagłówki jądra (właściwe dla danego jądra Linuxa):

Kod: Zaznacz cały

apt-get install header-linux-xxxxxxxx
- gdzie xxxxxxxx to numer jądra systemu Linux.
4. Dalej już nie mam pewności co po kolei, ale tutaj w tym momencie należy ściągnąć na pewno właściwą wersję kompilatora do c, odpowiednią wersję cmake, lub qmake, a dalej.. cóż trochę się gubię,

Proszę o wytłumaczenie co i jak z:
- ręczną konfiguracją pakietów
- tworzeniem własnego makefile (o ile taka potrzeba)

Wszelkie konstruktywne uwagi są jak najbardziej mile widziane. Prosiłbym też o trzymanie się tego czego temat dotyczy.
Z góry wielkie dzięki za chęć pochylenia się nad tym i za chęć pomocy.

Pozdrawiam! j23 Jarek

Awatar użytkownika
squeez
User
User
Posty: 204
Rejestracja: czwartek 04 lut 2016, 10:13

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: squeez » środa 08 mar 2017, 08:23

gcc zazwyczaj jest instalowane i jeśli pakiet nie potrzebuje wyraźnie innej wersji niż masz to zostaw taka jaką masz.
configure to skryt, który zazwyczaj jest dostarczany ze źródłami. powinien być wykonywalny (mieć prawa do wykonania) jak nie to należy mu je nadać i uruchomić ./configure skrypt ten zazwyczaj sprawdza środowisko jaki jest z wymaganiami jakie są potrzebne do kompilacji i wypluwa czy coś jest zainstalowane czy nie lub jak wersja się nie zgadza.
Jak nie ma configure to można spróbować go zrobić za pomocą autogen

Jakiś czas temu pytałem na forum o bibliotekę w C do plików konfiguracyjnych, znalazłem https://github.com/martinh/libconfuse więc po pobraniu archiwum i rozpakowaniu jest tam plik configure możesz sobie to sprawdzić jak działa (instalować nie musisz).

Krok po kroku wygląda to w moim przypadku tak:
1) pobrać i rozpakować
2) przeczytać README
3) odpalić configurte i zadbać o zależności tak by configure przeszło bez błędów
4) make
5) make install (to z prawami roota, poprzednie operacje na zwykłym użytkowniku)

Przy cmake zdaje sie że nie ma configure i właśnie cmake sprawdza zależności (ja zawsze robiłem z configure).
W przypadku cmake należy wejść do katalogu ze źródłami (bin, build itp. powinno być opisane w README) i tam wywołać cmake .. lub cmake ../
jak przejdzie OK wówczas make z qmake może być podobnie ale nie wiem bo nie korzystałem.

Pytasz też o sterowniki z tymi jest różnie, kiedyś jak nie było wpsarcia dla niektórych kart wifi na mPCI to pamiętam że było jakieś narzędzie w debianie właśnie do budowy tych sterowników nawet na bazie sterowników z windowsa. Ale było to bardzo dawno temu jakieś 5-6 lat minimum kiedy to robiłem i niestety tak starych rzeczy już nie pamiętam :D

Debian ma bardzo dobre wiki np, to czytałeś: https://wiki.debian.org/Firmware
Poza tym sterowniki niewolne należy "włączyć" w repozytoriach (nonfree) ale to pewnie wiesz :)

Fajnie by było też zrobić coś na konkretnym przykładzie, jak masz jakiś problem, wspólnie można spróbować go rozwiązać :)

PS. oczywiście przy samodzialnej kompilacji trzeba zadbać o narzędzia, te podstawowe to build-essential i checkinstall (checkinstall powala na budowę paczki deb ze źródeł, czasmi przydatne bo można zbudować paczkę i potem tylko ją instalować i odinstalować).

Awatar użytkownika
j23
User
User
Posty: 356
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: j23 » środa 08 mar 2017, 21:45

Dzięki za szybką odpowiedź Kolego Squeez. :)
Po przeczytaniu czuję się jakbym włożył kij w mrowisko, tzn. w tym momencie nie bardzo wiem do czego się najpierw odnieść, ale spokojnie.. Wszystko po kolei...

1. Odnośnie:
squeez pisze:gcc zazwyczaj jest instalowane i jeśli pakiet nie potrzebuje wyraźnie innej wersji niż masz to zostaw taka jaką masz.
configure to skryt, który zazwyczaj jest dostarczany ze źródłami. powinien być wykonywalny (mieć prawa do wykonania) jak nie to należy mu je nadać i uruchomić ./configure skrypt ten zazwyczaj sprawdza środowisko jaki jest z wymaganiami jakie są potrzebne do kompilacji i wypluwa czy coś jest zainstalowane czy nie lub jak wersja się nie zgadza.(...)
Krok po kroku wygląda to w moim przypadku tak:
1) pobrać i rozpakować
2) przeczytać README
3) odpalić configurte i zadbać o zależności tak by configure przeszło bez błędów
4) make
5) make install (to z prawami roota, poprzednie operacje na zwykłym użytkowniku)

Przy cmake (...)

Spróbuję/proponuję zrobić taki schemat, a raczej pseudo-diagram blokowy (wersja tekstowa), gdzie (składnia):
-------------------------------------------------------------------------------------------------------------------------------------------------------
NAZWA -------------------------------------------------------------------------------------------------- WYJAŚNIENIE
-------------------------------------------------------------------------------------------------------------------------------------------------------
:[nazwa_procedury] = opis_procedury -------------> nazwa_procedury_zadania_do_wykonania,np.
                                                                           [zaktualizuj_repozytorium] = w konsoli wpisz: apt-get update
:<nazwa_warunku> = rezultat: -----------------------> nazwa instrukcji warunkowej, np.
                                                                           <czy_skompilowano_biblioteki_nagłówkowe?> = tak: [zainstaluj_cmake]

Ponieważ całą instrukcję robi się krok po kroku (z możliwością cofania się do określonych procedur w zależności od zainstniałego warunku, przyjmuję że start (całej) instrukcji instalowania programów będzie w pierwszej linii, a zakończenie w jednej z ostatnich (nie wiem czy stosuje się jeszcze coś takiego jak "clean".

Edit: dokończę w następnym poście.. bo na razie muszę to poskładać


2. Odnośnie:
squeez pisze:(...)Pytasz też o sterowniki(...)
To zrobię (postaram się zrobić) na konkretnym przykładzie z Raspberry i Raspbianem (ale do tego zrobię osobny wątek w forum żeby nie namieszać w tym wątku).

3. Odnośnie:
squeez pisze:(...)Debian ma bardzo dobre wiki np, to czytałeś: https://wiki.debian.org/Firmware
Poza tym sterowniki niewolne należy "włączyć" w repozytoriach (nonfree) ale to pewnie wiesz :)
Wiem, ale dzięki. Dokładnie na bazie tej strony próbowałem zainstalować sterowniki TP-Linka (dokładnie TL-WN725 do Rasberry w wersji 1, model B, v.1.2 - co spróbuję uczynić znowu (jak już pisałem) w osobnym wątku.

4. Odnośnie:
squeez pisze:(...)Fajnie by było też zrobić coś na konkretnym przykładzie, jak masz jakiś problem, wspólnie można spróbować go rozwiązać :)

PS. oczywiście przy samodzialnej kompilacji trzeba zadbać o narzędzia, te podstawowe to build-essential i checkinstall (checkinstall powala na budowę paczki deb ze źródeł, czasmi przydatne bo można zbudować paczkę i potem tylko ją instalować i odinstalować).
Jasne, że byłoby fajnie. Po to teraz będę starał się pomęczyć i pchnąć do przodu pewne sprawy z Raspberry, przy okazji manipulując względnie bezpiecznie i względnie szybko (posty będę wklejał tak szybko jak czas pozwoli) żeby dopracować Raspbiana (tzn. przeportowaną odmianę Debiana).

Pozdrawiam! j23

Awatar użytkownika
j23
User
User
Posty: 356
Rejestracja: czwartek 08 paź 2015, 18:40

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: j23 » czwartek 19 lip 2018, 18:14

Znalazłem jeszcze coś takiego:
https://linuxiarze.pl/kompilacja/

Awatar użytkownika
piotrek
Newb
Newb
Posty: 69
Rejestracja: niedziela 05 lis 2017, 02:46

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: piotrek » czwartek 19 lip 2018, 21:10

Jest jeszcze opcja instalowania softu skompilowanego do pakietu *.deb.
Możesz ściągnąć jakiś pakiet w konkretnej wersji z repo debianowego i zainstalować poleceniem dpkg lub czasem wygodniejszym gdebi.
Bez kompilowania i konfiguracji.

Awatar użytkownika
squeez
User
User
Posty: 204
Rejestracja: czwartek 04 lut 2016, 10:13

Re: [Linux Debian Raspbian] Instalacja sterowników lub programów z zewnętrznych źródeł - jak?

Postautor: squeez » czwartek 19 lip 2018, 22:50

tylko tu trzeba też ostrożnie bo mogą być problemy z zależnościami i jeszcze jak biblioteki są dociągane automatycznie np. przez apt i potem jak usuwa się dany doft to zależności też są usuwane tak przy ręcznej instalacji pakietów z czasem może robić się śmietnik bo ręcznie instalowane pakiety zależne nie będą automatycznie usuwane

przynajmniej ja nie lubię robić ze swojego systemu śmietnika :) dlatego też nie używam M$ :D


Wróć do „GNU/Linux”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość