Smart/Polecenia
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.
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: 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: 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ą!
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].