Smart/Polecenia

Z openSUSE wiki

Spis treści


Kilka uwag o SMART w naszym WIKI

~~> Polecenia związane z aktualizacją i instalacją pakietów i kanałów wykonujemy z uprawnieniami root.

~~> Zapytania (query) dotyczące np. istnienia czy umiejscowienia pakietu można wykonywać z poziomu użytkownika.

~~> Wszystkie operacje można wykonywać zarówno w trybie graficznym, jak i w konsoli.

~~> W niniejszym opisie większy nacisk kładziony będzie na polecenia z konsoli. Dlaczego?

  • obsługa programu z interfejsem graficznym jest intuicyjna
  • obsługa programu z konsoli jest ZDECYDOWANIE szybsza
  • wyniki komend w konsoli można łatwiej postować na forum
  • dowolną czynność na pakietach łatwiej "wyrazić" w konsoli, nie trzeba opisów typu: kliknij tu, potem tam itd.
  • z konsoli łatwiej zdalnie zawiadywać pakietami (np. przez ssh)
  • smart nie odpala się w powłoce graficznej
  • konsola.. bo to linux! :-)

Komenda man smart oraz parametry

Komenda

man smart

wyświetla podręcznik (ang. manual) dotyczący programu SMART i opcji komend. Szczegółowy opis komend wraz z parametrami i przykładami znajdziesz tutaj.

Podstawowe polecenia SMARTa

Uaktualnienie kanałów

Gdy zaimportowaliśmy już listę kanałów z adresami do repozytoriów, należy je w pierwszym rzędzie uaktualnić. Oznacza to, że SMART łączy się ze zdefiniowanymi serwerami i pobiera pliki, zawierające informacje o pakietach na serwerze.

Wskazówka.png Wskazówka: Często błędnie sądzi się, że podczas update kanałów ściągane są pakiety programów. Faktycznie ściągane są tylko informacje o pakietach i ich wersjach. Same pakiety ściągane są dopiero wówczas, gdy instalujemy programy.

Komenda

smart update

Aktualizacja potrwa dłuższą chwilę. Czas ten zależy od posiadanego łącza, obciążenia serwerów oraz parametrów komputera. Jeżeli smart wyświetli błędy pobierania podczas aktualizacji kanałów, to należy ponowić próbę ich aktualizacji powyższą komendą. Uwaga! może się zdarzyć, iż pomimo wielu prób smart będzie monitował o błędzie pobierania z jakiegoś serwera. Może to być spowodowane chwilową awarią/przerwą techniczną/obciążeniem serwera - to nie jest błąd w programie SMART.

Aktualizacja systemu

Za jednym kliknięciem można dokonać aktualizacji całego systemu. SMART sprawdza, czy na serwerach znajdują się nowsze wersje pakietów, które są już zainstalowane w naszym systemie. Ekstremalnie może to być kilkaset pakietów.

Wskazówka.png Wskazówka: Sprawdź, czy nie masz przypadkiem aktywnych kanałów z eksperymentalnymi pakietami i kernelami. Sprawdź, czy zablokowałeś/zablokowałaś kernel-default i kernel-source, aby uchronić się przed niespodziankami!

Ta komenda wykonuje samą aktualizację pakietów w systemie.

smart upgrade

Pamiętaj, aby pakiety były najaktualniejsze, przed aktualizacja samego systemu musisz wykonać aktualizację list pakietów. Całkowitą aktualizację możesz zrobić poleceniem:

smart update; smart upgrade -y

Dzięki opcji -y SMART nie będzie oczekiwał Twojego podsumowania instalacji pakietów, po prostu je zaktualizuje. ... i w międzyczasie można skoczyć na kawę :-)

Instalacja wybranego pakietu/programu i/lub programów oraz bibliotek/i

Wskazówka.png Wskazówka: Często zapomina się, iż SMART instaluje biblioteki. Nie ma potrzeby szukania na rpmbone.net. SMART sam znajdzie pakiet, w którym biblioteka się znajduje

Komendy:

smart install nazwa_pakietu  
smart install nazwa_biblioteki  

lub kilka naraz

smart install nazwa_pakietu1 nazwa_pakietu2 nazwa_pakietu3 nazwa_biblioteki1 nazwa_biblioteki2

Instalacja wszystkich pakietów które w nazwie mają nazwa:

(Uważaj z taką komendą, ponieważ praktycznie nie wiesz, co jakie pakiety instalujesz!)

smart install '*nazwa*'

Instalacja pakietu znajdującego sie na dysku lokalnym przyklad-pakiet.rpm

smart install ./przyklad-pakiet.rpm

Instalacja pakietu znajdującego sie na serwerze http

smart install http://some.url/some/path/przyklad.rpm

Instalacja pakietu znajdującego sie na serwerze ftp

smart install ftp://some.url/some/path/przyklad.rpm

Rozbudowane polecenia SMARTa z opcjami i parametrami [PRZYKŁADY]

Jak uruchomić SMARTa w konsoli w powłoce graficznej?

smart --gui

Jak nazywa się pakiet i czy jest on w repozytoriach?

Czasem chcemy zainstalować jakiś program. Problemem może okazać się, że program nazywa się nieco inaczej aniżeli pakiet. Wiele osób zdziwi się zapewne, że nie ma pakietu o nazwie popularnej przeglądarki internetowej Firefox. Dowód?

19:03 c16:~ > smart query firefox
Loading cache...
Updating cache...                                  ######################################## [100%]

error: 'firefox' matches no packages

19:04 c16:~ >   

Wtedy można poszukać, czegokolwiek, co ma w nazwie firefox (pisownia z małej czy dużej litery nie ma znaczenia). Komenda

smart query '*firefox*'

wyświetli coś takiego:

19:10 c16:~ > smart query '*firefox*'
Loading cache...
Updating cache...                                  ######################################## [100%]

MozillaFirefox-2.0.0.1-0.1@i586
MozillaFirefox-2.0.0.2-1.1@i586
MozillaFirefox-2.0.0.4-1.1@i586
MozillaFirefox-2.0.0.5-1.1@i586
MozillaFirefox-translations-2.0.0.1-0.1@i586
MozillaFirefox-translations-2.0.0.2-1.1@i586
MozillaFirefox-translations-2.0.0.4-1.1@i586
MozillaFirefox-translations-2.0.0.5-1.1@i586


19:11 c16:~ >   

Widzimy wszystkie dostępne wersje pakietów mające w nazwie 'firefox'.

Jeżeli nic to nie pomaga, spróbuj w ten sposób.

W jakich (konkretnie) repozytoriach znajduje się (konkretny) pakiet?

Teraz chcemy sprawdzić, w którym repozytorium (oczywiście zdefiniowanym w naszych kanałach!)znajduje się poszukiwany pakiet? Pozostańmy przy przeglądarce Firefox. Wiemy, że pakiet nazywa się MozillaFirefox i jego najwyższa dostępną wersją jest 2.0.0.5-1.1@i586 i ktoś na forum twierdzi z uporem maniaka, że tej wersji nie ma w repozytorium. Sprawdzamy komendą:

smart query MozillaFirefox-2.0.0.5-1.1@i586 --show-channel

Pojawi się

19:24 c16:~ > smart query MozillaFirefox-2.0.0.5-1.1@i586 --show-channel
Loading cache...
Updating cache...                 ########################################### [100%]

MozillaFirefox-2.0.0.5-1.1@i586 [opensuse-update, rpm-sys]


19:25 c16:~ >

Widzimy, że ta wersja pochodzi z repozytorium [opensuse-update]. Dokładna ścieżka repozytorium serwera widoczna jest po wpisaniu komendy

smart channel --show

pod adresem URL. Alternatywnie informacje o pakiecie i repozytorium dostępne są po wykonaniu komendy

00:36 c16:/home/dm # smart info MozillaFirefox-2.0.0.5-1.1@i586 --urls --paths
Loading cache...
Updating cache...                                  ########################## [100%]

Name: MozillaFirefox
Version: 2.0.0.5-1.1@i586
Priority: 0
Group: Productivity/Networking/Web/Browsers
Installed Size: 21.3MB
Reference URLs: http://www.mozilla.org/
Flags:
Channels: RPM System; opensuse-update
Summary: Mozilla Firefox Web Browser
Description:
 Mozilla Firefox, formerly known as Phoenix and Firebird, is a redesign
 of the Mozilla browser component, similar to Galeon, K-Meleon and
 Camino, but written using the XUL user interface language and designed
 to be cross-platform. It is a stand-alone application instead of part
 of the Mozilla Application Suite.
 .
 .
 .
 Authors:
 --------
 Mozilla Foundation <drivers@mozilla.org>
URLs:
 opensuse-update
    ftp://ftp5.gwdg.de/pub/suse/update/10.2/rpm/i586/MozillaFirefox-2.0.0.5-1.1.i586.rpm (7.8MB)
Paths:


00:37 c16:/home/dm # 

Jakiego/jakich pakietów B/B1,B2,B3 wymaga pakiet A?

Czasem zdarza się, że aby doinstalować jakiś pakiet, zauważamy, że instalowanych jest więcej. Na przykład chcący zainstalować pakiet MozillaFirefox-translations trzeba doinstalować pakiet MozillaFirefox i to w odpowiedniej wersji (SMART robi to automatycznie).

19:53 c16:~ > smart query MozillaFirefox-translations --show-requires
Loading cache...
Updating cache...                                  ################################ [100%]

MozillaFirefox-translations-2.0.0.1-0.1@i586
  Requires:
    MozillaFirefox = 2.0.0.1 [pre]
MozillaFirefox-translations-2.0.0.2-1.1@i586
  Requires:
    MozillaFirefox = 2.0.0.2 [pre]
MozillaFirefox-translations-2.0.0.4-1.1@i586
  Requires:
    MozillaFirefox = 2.0.0.4 [pre]
MozillaFirefox-translations-2.0.0.5-1.1@i586
  Requires:
    MozillaFirefox = 2.0.0.5 [pre]


19:53 c16:~ >        

Natomiast sam pakiet MozillaFirefox-2.0.0.5-1.1@i586 wymaga poniższych bibliotek, ale nie wymaga pakietu MozillaFirefox-translations-2.0.0.5-1.1@i586

20:08 c16:~ > smart query MozillaFirefox-2.0.0.5-1.1@i586 --show-requires
Loading cache...
Updating cache...                                  ############################ [100%]

MozillaFirefox-2.0.0.5-1.1@i586
  Requires:
    /bin/sh
    /bin/sh [pre]
    /usr/lib/libaoss.so
    fileutils [pre]
    gconf2 [pre]
    libORBit-2.so.0
    libX11.so.6
    libXau.so.6
    libXdmcp.so.6
    libXft.so.2
    libXrender.so.1
    libXt.so.6
    libatk-1.0.so.0
    libbonobo-2.so.0
    libbonobo-activation.so.4
    libc.so.6
    libc.so.6(GLIBC_2.0)
    libc.so.6(GLIBC_2.1)
    libc.so.6(GLIBC_2.1.3)
    libc.so.6(GLIBC_2.2)
    libc.so.6(GLIBC_2.3)
    libc.so.6(GLIBC_2.3.4)
    libc.so.6(GLIBC_2.4)
    libcairo.so.2
    libdbus-1.so.3
    libdbus-glib-1.so.2
    libdl.so.2
    libdl.so.2(GLIBC_2.0)
    libexpat.so.1
    libfontconfig.so.1
    libfreetype.so.6
    libgcc_s.so.1
    libgcc_s.so.1(GCC_3.0)
    libgcc_s.so.1(GLIBC_2.0)
    libgconf-2.so.4
    libgdk-x11-2.0.so.0
    libgdk_pixbuf-2.0.so.0
    libglib-2.0.so.0
    libglitz.so.1
    libgmodule-2.0.so.0
    libgnome-2.so.0
    libgnomevfs-2.so.0
    libgobject-2.0.so.0
    libgthread-2.0.so.0
    libgtk-x11-2.0.so.0
    libjpeg.so.62
    libm.so.6
    libm.so.6(GLIBC_2.0)
    libm.so.6(GLIBC_2.1)
    libnspr4.so
    libnss3.so
    libnss3.so(NSS_3.10)
    libnss3.so(NSS_3.11.1)
    libnss3.so(NSS_3.2)
    libnss3.so(NSS_3.3)
    libnss3.so(NSS_3.4)
    libnss3.so(NSS_3.5)
    libnss3.so(NSS_3.6)
    libnss3.so(NSS_3.7)
    libnss3.so(NSS_3.9)
    libnss3.so(NSS_3.9.2)
    libnss3.so(NSS_3.9.3)
    libpango-1.0.so.0
    libpangocairo-1.0.so.0
    libpangoft2-1.0.so.0
    libpangoxft-1.0.so.0
    libplc4.so
    libplds4.so
    libpng12.so.0
    libpopt.so.0
    libpthread.so.0
    libpthread.so.0(GLIBC_2.0)
    libpthread.so.0(GLIBC_2.1)
    libpthread.so.0(GLIBC_2.2)
    libsmime3.so
    libsmime3.so(NSS_3.2)
    libsmime3.so(NSS_3.3)
    libsmime3.so(NSS_3.4)
    libsmime3.so(NSS_3.4.1)
    libsmime3.so(NSS_3.6)
    libssl3.so
    libssl3.so(NSS_3.2)
    libssl3.so(NSS_3.4)
    libstartup-notification-1.so.0
    libstdc++ [pre]
    libstdc++.so.6
    libstdc++.so.6(CXXABI_1.3)
    libstdc++.so.6(GLIBCXX_3.4)
    libz.so.1
    mozilla-nspr >= 4.6.3
    mozilla-nss >= 3.11.3
    textutils [pre]


20:09 c16:~ >         

Wymowa takiej zależności jest następująca: Mogę mieć zainstalowany pakiet MozillaFirefox, bez konieczności instalowania MozillaFirefox-translations. Ale jeżeli chcę MozillaFirefox-translations to obligatoryjnie zainstaluje się MozillaFirefox. Przy usuwaniu: Jeżeli usunę MozillaFirefox, to automatycznie zostanie usunięty pakiet MozillaFirefox-translations. Jeżeli usunę MozillaFirefox-translations - pakiet MozillaFirefox pozostaje nienaruszony. Jeżeli usunę MozillaFirefox biblioteki pozostaną!

Uwaga.png Uwaga:

Jest to kluczowe w zrozumieniu następującej kwestii: Niektóre programy wymagają dodatkowych bibliotek. Instalując program, automatycznie dociągane są biblioteki. Jeżeli kasuję program, biblioteki pozostają, albowiem być może są używane przez inne programy? Krócej: Programów bez bibliotek nie można zainstalować, biblioteki bez programów - tak. System "puchnie".

  •  !!! WSZYSTKIE ZALEŻNOŚCI SĄ PRAWIE PERFEKCYJNIE ZDEFINIOWANE W REPOZYTORIACH openSUSE !!!
  • ~~> Nie potrzebujesz NICZEGO z rpmseek czy rpmbone.net <~~

Jak usunąć pakiet?

Komenda

smart remove nazwa_pakietu

Mozna również usunąć jednocześnie kilka pakietów

smart remove nazwa_pakietu1 nazwa_pakietu2

Przykład:

23:53 c16:/home/dm # smart remove MozillaFirefox-2.0.0.5-1.1@i586
Loading cache...
Updating cache...                                  ######################################## [100%]

Computing transaction...

Removing packages (2):
  MozillaFirefox-2.0.0.5-1.1@i586                                MozillaFirefox-translations-2.0.0.5-1.1@i586

47.6MB will be freed.

Confirm changes? (Y/n): Y

23:55 c16:/home/dm #

Jak widać zostal usunięty pakiet MozillaFirefox-2.0.0.5-1.1@i586 wraz z zależnym od niego pakietem MozillaFirefox-translations-2.0.0.5-1.1@i586.

Jaki najnowszy kernel mamy do dyspozycji w naszym repozytorium i w którym?

20:09 c16:~ > smart query kernel-default --show-channel
Loading cache...
Updating cache...                                  ################################### [100%]

kernel-default-2.6.18.8-0.1@i586 [opensuse-update]
kernel-default-2.6.18.8-0.3@i586 [opensuse-update]
kernel-default-2.6.18.8-0.5@i586 [opensuse-update]
kernel-default-2.6.22.2-ccj52@i586 [rpm-sys]
kernel-default-2.6.22.3-ccj53@i586 [repo-ccj]


20:28 c16:~ >

Interpretacja: Używany jest niestandardowy kernel openSUSE. Zainstalowany jest kernel-default-2.6.22.2-ccj52@i586 z repozytorium jengelh'a, który znajduje się już tylko lokalnie i nie ma go w samym repozytorium (wskazuje na to [rpm-sys]), natomiast dostępna jest nowsza wersja kernel-default-2.6.22.3-ccj53@i586 w tymże repozytorium jengelh'a [repo-ccj].