Polecenie, które pozwala na wygenerowanie zależności między załadowanymi modułami jądara Linuksa:
Przykładowy fragment diagramu:
Sty 21
Posted by Łukasz Stelmach in Linux | Comments off
Polecenie, które pozwala na wygenerowanie zależności między załadowanymi modułami jądara Linuksa:
Przykładowy fragment diagramu:
Sty 1
Posted by Łukasz Stelmach in Linux | Comments off
Jak chyba każdy korzystający ze stron podręcznika MAN wie, posiada on kilka rożnych sekcji. W każdej sekcji znajdują się opisy odpowiednich poleceń, plików konfiguracyjnych, wywołań systemowych i tak dalej (dokładną listę można poznać po wydaniu polecenia man man
).
Czasami zdarza się tak, że wpis o takiej samej nazwie istnieje w kilku sekcjach – na przykład strona podręcznika dla passwd
, istnieją wpisy odnoszące się zarówno do pliku binarnego jak i do pliku konfiguracyjnego o takiej nazwie. Wywołanie polecenia:
powinno wyświetlić jedną stronę. I tutaj zaczyna się niespodzianka, która mnie dzisiaj spotkała: wydawało mi się, że zostanie zawsze wyświetlona strona, która znajduje się w sekcji o najmniejszym numerze.
Jednak tak naprawdę wygląda to inaczej, o czym można przekonać się przeglądając stronę podręcznika man
:
Domyślnie wyszukuje we wszystkich dostępnych sekcjach, używając predefiniowanego porządku i pokazuje tylko pierwszą znalezioną stronę, nawet jeśli podana strona jest dostępna w kilku sekcjach.
Nie ma jednak żadnych informacji o faktycznej kolejności przeszukiwanych sekcji. Warto więc teraz odwołać się do pliku konfiguracyjnego /etc/manpath.config
, a tam można zaleźć taką linijkę:
I wszystko robi się jasne.
Tags: man
Wrz 24
Posted by Łukasz Stelmach in Linux | 2 komentarze
Mały wpis ku pamięci: jak policzyć, ile miejsca zajmują w danym drzewie katalogów pliki z wybranymi rozszerzeniami.
W moim przypadku chciałem się dowiedzieć, ile miejsca zajmują filmy rodzinne. Pierwszym krokiem będzie odszukanie wszystkich filmów:
Zamiast używać standardowej konstrukcji -name
użyłem wyrażenia regularnego. Pozwoliło ona na dużo bardziej zwarte umieszczenie wszystkich rozszerzeń, które mnie interesują.
Teraz wypada wyświetlić informację, ile miejsca zajmuje każdy z plików. Można to tego użyć opcji -exec
w połączeniu z wywołaniem polecenia ls
, ale dużo lepszy efekt da użycie przełącznika -ls
. Efekt będzie podobny, a całość będzie funkcjonować dużo szybciej.
Ostatnim elementem będzie wyciągnięcie kolumny z wielkością pliku i jej zsumowanie, można to zrobić przy użyciu polecenia awk
:
I to w sumie rozwiązuje problem.
Ja jeszcze tylko chciałem mieć wielkość plików wyświetlaną w megabajtach. Można sobie do przeliczyć używając nawet zwykłego polecenia echo
, chociaż spada drastycznie czytelność kodu i tworzy się taki potworek:
Java zostanie pobrana ze strony Oracle, zainstalowana i odpowiednie powiązania zostaną automatycznie ustawione.
Więcej można przeczytać tutaj: Install Oracle Java in Ubuntu via PPA repository.
Java w wersji 7 został wydana jakiś czas temu, ale ciągle nie ma odpowiednich pakietów do instalacji w Ubuntu. Pewnie pojawią się wraz z edycją 11.10, ale czekać tak długo nie mam ochoty :).
Instalacja nowej wersji Javy sprowadza się do wykonania kilku kroków, jedyną niedogodnością jest konieczność ręcznego pilnowania nowych wydań JDK.
jdk-7-linux-x64.tar.gz
.
Zostanie utworzony katalog jdk1.7.0
a w nim Java w wersji 7.
/usr/lib/jvm/
pod nazwą java-7-oracle
, gdzie znajdują się dostępne wersje JVM w systemie.
root
. Należy więc wcześnie zmienić konto lub używać polecenie sudo
.root
a możliwość odczytu i wykonywania aplikacji powinni mieć wszyscy użytkownicy. Nie jest to krok być może konieczny, ale przy niektórych ustawianiach jego brak może uniemożliwić innym użytkownikom korzystania z Javy.
Jeżeli jednak umask
jest ustawiony na bardziej restrykcyjną wartość (w moim przypadku 007
) to pojawi się problem: zwykły użytkownik nie będzie mógł ani uruchomić ani nawet odczytać katalogu z Javą. Można to poprawić przy użyciu prostej instrukcji:
update-alternatives
. Mechanizm ten pozwala na zdefiniowania wielu rożnych aplikacji dostarczających daną funkcjonalność (np. wiele wersji Javy) oraz wybranie aplikacji, która będzie uruchamiana domyślnie.
W przypadku polecenia java
można sprawdzić jakie są jego różne implementacje:
W moim przypadku mam zainstalowane dwa różne JDK, z czego domyślnie ustawiona jest wersja Suna (teraz już Oracla).
Można teraz dodać implementację Java 7:
Numer 3
oznacza kolejny numer po ostatniej dostępnej wersji JVM.
Teraz pozostaje tylko wydanie polecenia:
A teraz mały test: wywołanie poleceń java
oraz javac
:
Jak widać domyślnie została wywołana wersja Javy 7, natomiast wywołanie kompilator ciągle odwołuje się do wersji 6. Poradzić sobie można z tym definiując kolejną alternatywę a następnie ją ustawiając. Natomiast ilość plików binarnych które trzeba ustawić oraz stron MAN, które należy zmienić jest znaczna. Można to sprawdzić przy pomocy polecenia:
update-java-alternatives
. Pozwoli ona na zmianę domyślnej implementacji wszystkich plików wykonywalnych oraz powiązanych z nimi stron MAN. Niestety, trzeba je odpowiednio skonfigurować, zanim zacznie działać poprawnie.
Pierwszym krokiem będzie dodanie odpowiednich alternatyw dla wszystkich plików binarnych. Można to zrobić przy pomocy prostego skryptu o nazwie update-alternatives-java-7
. Powstał on na bazie odpowiednich skryptów po instalacyjnych wykonywanych podczas instalacji OpenJDK w systemie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #!/bin/bash # instalacja JRE-headless priority=100 basedir=/usr/lib/jvm/java-7-oracle basediralias=/usr/lib/jvm/java-7-oracle jdiralias=java-7-oracle mandir=/usr/lib/jvm/jdk1.7.0/man srcext=1.gz dstext=1.gz jre_tools='java keytool pack200 rmid rmiregistry unpack200 orbd servertool tnameserv' for i in $jre_tools; do unset slave1 slave2 || true if [ -e $mandir/man1/$i.$srcext ]; then slave1="--slave \ /usr/share/man/man1/$i.$dstext \ $i.$dstext \ $mandir/man1/$i.$srcext" fi update-alternatives --verbose \ --install \ /usr/bin/$i \ $i \ $basediralias/jre/bin/$i \ $priority \ $slave1 $slave2 done update-alternatives --verbose \ --install /usr/bin/jexec jexec $basediralias/jre/lib/jexec $priority # instalacja JRE jre_tools='policytool ControlPanel java_vm javaws jcontrol' for i in $jre_tools; do unset slave1 slave2 || true if [ -e $mandir/man1/$i.$srcext ]; then slave1="--slave \ /usr/share/man/man1/$i.$dstext \ $i.$dstext \ $mandir/man1/$i.$srcext" fi update-alternatives --verbose \ --install \ /usr/bin/$i \ $i \ $basediralias/jre/bin/$i \ $priority \ $slave1 $slave2 done # instalacja JDK jdk_tools='appletviewer apt extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc' for i in $jdk_tools; do unset slave1 slave2 || true if [ -e $mandir/man1/$i.$srcext ]; then slave1="--slave \ /usr/share/man/man1/$i.$dstext \ $i.$dstext \ $mandir/man1/$i.$srcext" fi update-alternatives --verbose \ --install \ /usr/bin/$i \ $i \ $basediralias/bin/$i \ $priority \ $slave1 $slave2 done |
W skrypcie należy zwrócić szczególną uwagę na definicję odpowiednich ścieżek dostępu. Po jego wykonaniu zostaną zdefiniowanie odpowiednie alternatywy dla odpowiednich plików, ale nie zostaną one jeszcze uaktywnione.
Konfiguracja update-java-alternatives
sprowadza się do zdefiniowania odpowiedniego pliku konfiguracyjnego. Należy utworzyć (lokalizacja i nazwa pliku jest ważna) plik: /usr/lib/jvm/.java-7-oracle.jinfo
o następującej zawartości:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | name=java-7-oracle alias=java-7-oracle priority=100 section=non-free jre ControlPanel /usr/lib/jvm/java-7-oracle/jre/bin/ControlPanel jre java /usr/lib/jvm/java-7-oracle/jre/bin/java jre java_vm /usr/lib/jvm/java-7-oracle/jre/bin/java_vm jre javaws /usr/lib/jvm/java-7-oracle/jre/bin/javaws jre jcontrol /usr/lib/jvm/java-7-oracle/jre/bin/jcontrol jre keytool /usr/lib/jvm/java-7-oracle/jre/bin/keytool jre pack200 /usr/lib/jvm/java-7-oracle/jre/bin/pack200 jre policytool /usr/lib/jvm/java-7-oracle/jre/bin/policytool jre rmid /usr/lib/jvm/java-7-oracle/jre/bin/rmid jre rmiregistry /usr/lib/jvm/java-7-oracle/jre/bin/rmiregistry jre unpack200 /usr/lib/jvm/java-7-oracle/jre/bin/unpack200 jre orbd /usr/lib/jvm/java-7-oracle/jre/bin/orbd jre servertool /usr/lib/jvm/java-7-oracle/jre/bin/servertool jre tnameserv /usr/lib/jvm/java-7-oracle/jre/bin/tnameserv jre jexec /usr/lib/jvm/java-7-oracle/jre/lib/jexec jdk appletviewer /usr/lib/jvm/java-7-oracle/bin/appletviewer jdk apt /usr/lib/jvm/java-7-oracle/bin/apt jdk extcheck /usr/lib/jvm/java-7-oracle/bin/extcheck jdk idlj /usr/lib/jvm/java-7-oracle/bin/idlj jdk jar /usr/lib/jvm/java-7-oracle/bin/jar jdk jarsigner /usr/lib/jvm/java-7-oracle/bin/jarsigner jdk javac /usr/lib/jvm/java-7-oracle/bin/javac jdk javadoc /usr/lib/jvm/java-7-oracle/bin/javadoc jdk javah /usr/lib/jvm/java-7-oracle/bin/javah jdk javap /usr/lib/jvm/java-7-oracle/bin/javap jdk jconsole /usr/lib/jvm/java-7-oracle/bin/jconsole jdk jdb /usr/lib/jvm/java-7-oracle/bin/jdb jdk jhat /usr/lib/jvm/java-7-oracle/bin/jhat jdk jinfo /usr/lib/jvm/java-7-oracle/bin/jinfo jdk jmap /usr/lib/jvm/java-7-oracle/bin/jmap jdk jps /usr/lib/jvm/java-7-oracle/bin/jps jdk jrunscript /usr/lib/jvm/java-7-oracle/bin/jrunscript jdk jsadebugd /usr/lib/jvm/java-7-oracle/bin/jsadebugd jdk jstack /usr/lib/jvm/java-7-oracle/bin/jstack jdk jstat /usr/lib/jvm/java-7-oracle/bin/jstat jdk jstatd /usr/lib/jvm/java-7-oracle/bin/jstatd jdk native2ascii /usr/lib/jvm/java-7-oracle/bin/native2ascii jdk rmic /usr/lib/jvm/java-7-oracle/bin/rmic jdk schemagen /usr/lib/jvm/java-7-oracle/bin/schemagen jdk serialver /usr/lib/jvm/java-7-oracle/bin/serialver jdk wsgen /usr/lib/jvm/java-7-oracle/bin/wsgen jdk wsimport /usr/lib/jvm/java-7-oracle/bin/wsimport jdk xjc /usr/lib/jvm/java-7-oracle/bin/xjc |
Teraz jest już dostępna nowa wersja JVM w systmie:
Pozostaje ustawić Jave 7 jako domyślną implementację JVM:
Tags: instalacja, Java
Mar 22
Posted by Łukasz Stelmach in Debian/Ubuntu, Java | Comments off
Standardowo w Ubuntu Java w wersji od Oracla (czyli dawana Sunowska) jest dostępna w repozytorium partner
. Jednak w przypadku Ubuntu Natty (w wersji alfa) niestety jej tam jeszcze nie ma, prawdopodobnie zostanie umieszczona już po premierze wersji stabilnej. Na szczęście, łatwo można ją zainstalować przy wykorzystaniu dodatkowych repozytoriów, wystarczy wydać polecenie:
I zainstalować Javę:
Tags: instalacja
You are currently browsing the archives for the Linux category.
Arclite theme by digitalnature | powered by WordPress