Bezpieczniejszy sposób uruchamiania oprogramowania Bleeding Edge na Debianie i Ubuntu
Być może zauważyłeś, że niektóre oprogramowanie w Twojej dystrybucji nie jest najnowszą dostępną wersją. Większość ludzi nawet nie jest tego świadoma, ponieważ często nie stanowi to problemu. Problem pojawia się tylko wtedy, gdy potrzebujesz najnowszych funkcji. Załóżmy, że w Twoim ulubionym edytorze wideo wprowadzono pewne zmiany w kodzie, które skracają czas renderowania o 20%. To może być coś, czego chcesz.
Krótko mówiąc, większość dystrybucji uznawanych za „stabilne” lub „długoterminowe wsparcie” będzie miała (przynajmniej częściowo) starsze oprogramowanie w swoich repozytoriach. Jednak „rolling dystrybucje” zawierają znacznie nowsze oprogramowanie, ponieważ stale pobierają aktualizacje od zewnętrznych programistów. Debian Unstable (o nazwie kodowej Sid) jest taką dystrybucją. Dzięki magii wiersza poleceń możesz uruchomić Debain Sid w bieżącej instalacji Debian Stable lub Ubuntu.
Po co to robić, skoro mogę po prostu dodać umowy PPA lub backporty?
Archiwa pakietów osobistych są bardzo popularne wśród użytkowników, którzy chcą dodać nowsze oprogramowanie do Ubuntu. Ale umowy PPA, backporty (w Debianie) i inne podobne metody zakłócają twoją główną instalację. Oznacza to, że mogą uaktualnić fragmenty głównego systemu. Zwiększa to ryzyko, że coś pójdzie nie tak, niekompatybilność nowego i starego oprogramowania, pojawienie się nowych błędów w systemie operacyjnym i tak dalej.
Natomiast metoda opisana w tym samouczku izoluje oprogramowanie w osobnej przestrzeni i w żaden sposób nie zakłóca głównej instalacji. Jest nieco podobny do kontenera (bez silnych zabezpieczeń). Co więcej, Debian Sid zawiera znacznie więcej oprogramowania niż można znaleźć w umowach PPA lub backportach. Jednak wszystko ma swoje ograniczenia, więc pamiętaj o uwagach ze strony Debian Unstable.
Utwórz minimalną instalację Debian Sid za pomocą debootstrap
Otwórz emulator terminala i zainstaluj „debootstrap:”
sudo apt install debootstrap
Przejdź do katalogu domowego;
cd $HOMERozpocznij ładowanie nowej instalacji Debian Sid w katalogu „debian-sid”:
sudo debootstrap sid debian-sidProces zajmie trochę czasu, więc poczekaj kilka minut.
Przygotuj instalację Debian Sid
Najpierw zainstaluj nowy pakiet.:
sudo apt install systemd-containerTeraz użyj nowo zainstalowanego narzędzia, aby „wkroczyć” do swojej dystrybucji Debian Sid:
sudo systemd-nspawn -D debian-sid/Jeśli kiedykolwiek utkniesz w tym kontenerze, możesz nacisnąć Ctrl + ] trzy razy z rzędu, aby wymusić wyjście. Używaj go tylko jako metody awaryjnej.
Dodaj nowego użytkownika. W tym przykładzie użytkownik jest po prostu nazywany „użytkownikiem”, ale możesz go zastąpić wybraną przez siebie nazwą użytkownika, chociaż to, jak się nazywa, nie ma znaczenia.
adduser userWybierz hasło dla tego użytkownika. Podczas pisania nie będzie wyświetlany żaden tekst. Po naciśnięciu klawisza Enter wpisz ponownie to samo hasło, gdy zostaniesz o to poproszony. Kolejne szczegóły, takie jak „Imię i nazwisko”, nie są wymagane, więc po pojawieniu się takiego monitu możesz po prostu nacisnąć klawisz Enter. Na koniec wpisz „y”, gdy zostaniesz zapytany, czy informacje są poprawne, i naciśnij Enter.
Zainstaluj sudo:
apt install sudoDodaj użytkownika do grupy sudo:
adduser user sudoUstaw nazwę hosta dla swojego kontenera. Pomoże Ci to na terminalu, dzięki czemu będzie jaśniejsze, kiedy jesteś zalogowany do kontenera i kiedy jesteś w swoim głównym systemie. Pomoże to uniknąć błędów.
echo debian-sid > /etc/hostnameWyjdź z kontenera Debian Sid:
exitWirtualnie uruchom kontener Debian Sid za pomocą systemd-nspawn
Do wejścia do tego kontenera można było użyć prostego polecenia chroot, ale systemd-nspawn ma silniejsze metody izolacji. To lepiej zapobiega przypadkowemu „wyciekowi” pojemnika do głównego systemu. Ponadto narzędzie zawiera wirtualny przełącznik rozruchu. To symuluje prawdziwy rozruch instalacji Debian Sid. Spowoduje to uruchomienie niektórych procesów w tle, których niektóre aplikacje mogą wymagać do prawidłowego działania (na przykład dbus).
„Uruchom” swoją instalację Debian Sid:
sudo systemd-nspawn --boot -D debian-sid/Zaloguj się przy użyciu wybranej wcześniej nazwy użytkownika i hasła.
Zainstaluj i uruchom żądane oprogramowanie
Powiedzmy, że chcesz zainstalować edytor obrazów GIMP:
sudo apt install gimpZamknij kontener, aby móc ponownie uruchomić komputer ze wszystkimi zainstalowanymi w nim nowymi rzeczami (zależności takie jak dbus):
sudo systemctl poweroff
Gdy skończysz pracę z kontenerem, jest to polecenie, którego powinieneś użyć, aby zakończyć.
GIMP jest aplikacją graficzną, więc potrzebuje serwera graficznego. Ze względów technicznych nie działa to w Twoim kontenerze, ale w systemie głównym. Uruchom to w głównym systemie operacyjnym (nie w kontenerze):
echo $DISPLAYMożesz otrzymać odpowiedź w rodzaju :0.0.
Uruchom ponownie kontener:
sudo systemd-nspawn --boot -D debian-sid/Po zalogowaniu poinformuj kontener, gdzie może znaleźć wyświetlacz.
export DISPLAY=:0.0Zamień :0.0, jeśli masz inną odpowiedź.
Przeczytaj także: Jak przejść na Xorg z Wayland w systemie Linux
Działa to tylko z serwerem graficznym Xorg. Jeśli używasz Waylanda, być może będziesz musiał wykonać powyższe czynności ze zmienną WAYLAND_DISPLAY zamiast DISPLAY. Jeśli to nie zadziała, tymczasowo użyj Xorg, korzystając z opcji menedżera logowania.
Teraz możesz uruchomić Gimpa:
gimpNie zwracaj uwagi na ostrzeżenia w terminalu. Otrzymujesz je w dowolnym systemie po uruchomieniu aplikacji graficznej z terminala. To normalne wyjście. Po prostu zwykle tego nie widzisz, ponieważ zwykle uruchamiasz aplikacje z graficznego programu uruchamiającego.
Wniosek
Dotarcie do tego punktu może być trudne, ale gdy już skończysz, możesz łatwo zainstalować nowe oprogramowanie. Po prostu uruchom kontener, apt install, wyeksportuj wyświetlacz i uruchom aplikację. Kiedy już będziesz miał wszystko, czego potrzebujesz, po prostu od czasu do czasu będziesz musiał dokonać aktualizacji. Zrób to za pomocą apt update && apt upgrade. Czasami może być konieczne użycie apt update && apt full-upgrade po poprzednim poleceniu.



