Nie upodabniaj się do komputera, lecz staraj się upodabniać komputer do siebie.
Znowu szukałem programu do odtwarzania muzyki na moim Debianie. Jest cała masa programów do tego celu. Od takich, które działają jako demony (np. mpd) do przerośniętych kombajnów takich jak Amarok 2. Nie zaspokajają jednak moich potrzeb – mają zbyt dużo funkcyj i skomplikowany interfejs, albo wymagają zbyt stałej konfiguracji dysku. Nie jest wbrew pozorom bardzo łatwo.
Istnieje pewien bardzo dobry w mojej opinii program do odtwarzania muzyki, a zwie się Beep Media Player. Jest to fork starego, dobrego odtwarzacza XMMS. Nie rozwijany już przez jego autora, porzucony i pozostawiony samemu sobie. BMP został nawet usunięty z repozytoriów Debiana. Niby powstał jego następca Audacious. Na pierwszy rzut oka jest dobry. Ma przepiękne domyślne skórki, pierdyrlion pluginów, tak naprawdę mało komu potrzebnych. Niby prawie jak stary dobry BMP. Zmyłka! Po pierwsze Audacious zamraża się kiedy próbwałem do niego wczytać zwykłą playlistę z moimi ulubionymi radiami internetowymi. Druga sprawa, po zminimalizowaniu do tray’a i przywróceniu jego okna, okno to nie wraca do tej samej pozycji. Kolejna nieco irytująca sprawa to suwaki, które działają jakoś mniej precyzyjnie niż w BMP. Niby pierdółka, ale mnie przeszkadza. Przy buforowaniu strumienia stacji internetowej Audacious też zamienia się w “lód”. Trudno powiedzieć dlaczego programiści z dobrze działających funkcyj zrobili buble?! Poruszałem ten temat kiedyś na forum Audaciousa – bez większego odzewu.
Szukałem, niedługo, ale intensywnie i znalazłem. Powstał projekt ReBMP. Stary, dobry Beep Media Player wyposażony dodatkowo w pluginy do odtwarzania muzyki w formacie FLAC oraz MonkeyAudio (oba formaty przechowują bezstratnie skompresowaną informację dźwiękową). Polecam jeszcze do kompletu schludny i porządny plugin dokujący BMP do tray’a.

Przy okazji reklama radia Soma FM.
Dodawanie własnego menu do menu fluxboksa (i innych menadżerów okien) to prosta sprawa. Na początek należy zainstalować pakiet menu
# aptitude install menu
Aby wygodnie dodawać własne pozycje do menu fluxboksa należy utworzyć katalog ~/menu:
% mkdir ~/.menu
Następnie zakładamy w wcześniej utworzonym katalogu plik np. amule
% editor ~/.menu/amule
o następującej zawartości:
?package(local.amule):needs=”x11″ section=”Apps/Net” title=”aMule” hints=”ed2k clients” \
command=”/usr/local/bin/amule” icon=”/usr/share/pixmaps/amule.xpm”
?package(local.amule) – zawiera listę nazw pakietów, rozdzielaną przecinkami, które są niezbędne aby pozycja pojawiła się w menu np. (amule,amulecmd). Jeśli nie mamy zainstalowanej takiej paczki, np. instalowaliśmy program innym sposobem, to w wpisujemy wartość (local.amule). W tej sytuacji automat potraktuje to jakby pakiet był zainstalowany.
needs=”x11″ – informuje automat w jakim środowisku uruchamia się program, w naszym przypadku jest to środowisko graficzne X (więcej file:///usr/share/doc/menu/html/ch3.html#s3.4)
section=”Apps/Net” – określa sekcję w menu w jakiej pojawi się nasza pozycja, pełna lista sekcji znajduje się pod adresem: file:///usr/share/doc/menu/html/ch3.html#s3.5
title=”aMule” – tytuł jaki będzie wyświetlany w menu
command=”/usr/local/bin/amule” – ścieżka do programu wykonywalnego.
hints=”ed2k clients” – pole jest opcjonalne, po informacje można zajrzeć pod file:///usr/share/doc/menu/html/ch3.html#s3.8
Obowiązkowe pola to: needs, section, title i command.
Kiedy nasz plik jest już gotowy wydajemy polecenie
update-menus
W przypadku fluxboksa należy się upwenić, że w pliku ~/.fluxbox/init klucz session.menuFile: ma wartość ~/.fluxbox/fluxbox-menu
session.menuFile: ~/.fluxbox/fluxbox-menu
Po uruchomieniu fluxboksa nasza nowa pozycja powinna pojawić się w menu. Szczegółowa dokumentacja: file:///usr/share/doc/menu/html/index.html
Czasem należy wykonać kilka bardziej złożonych operacji przy pomocy aptitude. Pełną pomoc do aptitude można znaleźć w podręczniku użytkownika aptitude, jednak zdarzają się przypadki, kiedy nie ma czasu zgłębiać dokumentacji. W niniejszym wpisie zamieszczam kika zastosowań aptitude w przypadkach, z którymi się zetknąłem lub sam miałem do czynienia.
% aptitude search "?or(~nnetwork, ~dnetwork)"
Polecenie wyszuka wszystkie pakiety, które w opisie bądź w nazwie zawierają słowo network.
Wyszukiwanie pakietów np. z archiwum experimental i wyświetlenie samych nazw pakietów, np. w celu użycia jako argument dla innego polecenia.
% aptitude aptitude search ~i~Aexperimental -F "%p"
Kiedy instalujemy pakiet przy pomocy aptitude, pakiety zależne są instalowane automatycznie poprzez zależności. Takie automatycznie zainstalowane pakiety są zaznaczanie prze menadżera pakietów jako A – instalowane automatycznie. Czasem przy usuwaniu pakietu, takie zależności również są usuwane, gdyż zostały automatycznie zainstalowane. Czasem jest to zachowanie niepożądane w stosunku do niektórych pakietów, np. takich które chcemy jednak zostawić. Podczas odinstalowywania pakietu widzimy, które pakiety będą automatycznie odinstalowane. Należy przerwać proces i wszystkim pakietom, które chcemy zostawić usunąć flagę A – auto.
# aptitude unmarkauto pakiet1 pakiet2
Można użyć wyników wyszukiwania jako argumentów polecenia, np. gdy chcemy usunąć metapakiet kde4, ale nie usuwać całego kde4
# aptitude unmarkauto `apt-cache depends kde4 | awk '{if ($1=="Depends:") print $2}'`
Następnie można usunąć metapakiet kde4 po to aby spokojnie usunąć tę część kde, której nie używamy, np. kdegames.
# aptitude remove kdegames
% aptitude search ~i~b
Załóżmy, że to pakiet mplayer-nogui ma złamane zależności:
iBA mplayer-nogui – The Ultimate Movie Player For Linux
Szukamy teraz pakietu, z którym jest problem:
#aptitude search `apt-cache depends mplayer-nogui | awk '{if ($1=="Depends:") print $2}'`
Pakiety, które (w moim przypadku) są interesujące to libxvmc1 oraz libxv1.
idA libxv1 – X11 Video extension library
iBA libxvmc1 – X11 Video extension library
Problem polegał na tym, że pakiet libxv1 był zaznaczony do usunięcia – flaga d. Wystarczyło polecenie:
# aptitude install libxv1
# aptitude hold pakiet
Załóżmy, że przestaliśmy lubić kde i chcemy znaleźć każdy zainstalowany program z sekcji kde, aby pozbyć się kde raz na zawsze. Następnie użyć listy do usunięcia kde.
% aptitude search ~skde | egrep "^i" | awk '{ if($2 ~/A/){ print $3} else print $2}'
# aptitude purge `aptitude search ~skde | egrep "^i" | awk '{ if($2 ~/A/){ print $3} else print $2}'`
Jak sobie poradzić? Nie jest to trudne, ale nie zawsze rozwiązuje problem, ze względu na różne czynniki.
# apt-file search usr/lib/gcc/i486-linux-gnu/4.2/include/limits.h | awk -F ':' '{print $1}' | xargs aptitude install
Program apt-file musi być zainstalowany i jego baza zaktualizowana (apt-file update)
# COLUMNS=140 dpkg -l|grep ^rc|awk {'print $2'}|xargs dpkg -P
lub
aptitude purge `aptitude search ~c -F %p`
Można by było przywołać więcej niestandardowych zastosowań aptitude i innych narzędzi do zarządzania pakietami. Po więcej zapraszam do poczytania podręcznika do aptitude. Dwa istotnie linki z tego podręcznika:
Mplayer to znany i ceniony odtwarzacz filmów dla systemu linux i nie tylko. Inne systemy nas jednak nie interesują.
Do pliku /etc/apt/sources.list należy dodać wpis z repozytorium debiana (dowolnym edytorem tekstowym).
deb http://www.debian-multimedia.org lenny main
deb http://www.debian-multimedia.org etch main
deb http://www.debian-multimedia.org testing main
deb http://www.debian-multimedia.org sid main
Należy też dodać odpowiednie klucze do repozytorium aby aktualizacja repozytorium przebiegła bez błędu. Należy ściągnąć pakiet debian-multimedia-keyring_2008.10.16_all.deb i zainstalować go.
dpkg -i debian-multimedia-keyring_2008.10.16.deb
Aktualizujemy informacje o pakietach w repozytorium:
aptitude update
Stable (lenny), oldstable (etch), testing (lenny), unstable (sid)
aptitude install mplayer mplayer-doc w32codecs ttf-dejavu
aptitude install mplayer mplayer-doc w64codecs sttf-dejavu
Jeśli masz już ustawienia mplayera to zarchiwizuj stare pliki, tak aby nowe utworzyły się od podstaw.
mv ~/.mplayer ~/.mplayer.bak && mkdir ~/.mplayer
Otwieramy plik konfiguracyjny Mplayera
editor $HOME/.mplayer/config
i wpisujemy do niego następującą zawartość:
fontconfig = “1″
font = “dejavu sans”
subfont-text-scale = “3,3″
subcp = “cp1250″
sub-fuzziness = “2″
vo = “xv”
ao = “alsa”
Zapisujemy plik.
sub-fuzziness – Dostosowuje niedokładność dopasowywania przy szukaniu napisów:
subfont-text-scale <0-100> – (tylko FreeType)- ustawia wskaźnik automatycznego skalowania napisów jako procent rozmiaru ekranu (domyślnie: 5).
Uwaga: W przypadku gdy mamy włączoną akcelerację sprzętową (direct rendering), sterownik xv należy zastąpić sterownikiem gl2. Możemy sprawdzić to poleceniem glxinfo | grep direct z pakietu mesa-utils. Akceleracja sprzętowa jest włączona jeśli wynik polecenia jest jak poniżej
direct rendering: Yes
v – Przełącza wyświetlanie napisów
b/j – Przełącza dostępne napisy
F (shift+f) – Przełącza wyświetlanie tylko wymuszonych napisów
z i x – Zmienia opóźnienie napisów o +/- 0.1 sekund
r i t – Przesuwa napisy w górę/w dół
1 i 2 – Modyfikuje kontrast
3 i 4 – Modyfikuje jasność
5 i 6 – Modyfikuje barwę (kolorów)
7 i 8 – Modyfikuje nasycenie.
* i `/ z numerycznej oraz 9 i 0 z normalnej – modyfikuje głośność
Reszta sterujących skrótów klawiszowych – man mplayer.
Pełną dokumentację do mplayera znajdziemy w pliku file:///usr/share/doc/mplayer-doc/HTML/pl/index.html
Więcej informacji o repozytorium na stronie www.debian-multimedia.org
Wielu ludzi pracuje przy pomocy OpenSSH, jest to bardzo popularne i bardzo użyteczne narzędzie. Istnieje wiele sposobów aby usprawnić korzystanie z ssh. Jednym z nich jest plik konfiguracyjny config. Pozwala on nam ustawić różne opcje ssh dla każdego host z osobna lub dla całej grupy hostów. Pozwala to na uniknięcie wpisywania opcji komendy ssh w lini poleceń i używanie łatwych do zapamiętania nazw zamiast adresów IP czy nazwy domenowej. Nazw tych można używać z poleceniem ssh, scp, w programie midnight commander oraz w wielu innych sytuacjach.
Domyślnie plik znajduje się w katalogu domowym użytkownika (~/.ssh/config). Konfiguracja opcjiI ssh obejmująca cały system (dla wszystkich użytkowników) znajduje się w /etc/ssh/ssh_config. Opcje w ~/.ssh/config mają pierwszeństwo przed opcjami w pliku /etc/ssh/ssh_config. To oczywiście znaczy, że użytkownik ma możliwość ustawienia własnej konfiguracji klienta ssh.
Zakładam, że OpenSSH jest zainstalowane. W Debianie jest to pakiet openssh-client.
Konfiguracja dla użytkownika jak i dla całego systemu jest taka sama. Różni się tylko lokalizacją pliku.
Zakładamy plik konfiguracyjny, który domyślnie nie jest tworzony i nadajemy uprawnienia do odczytu tylko dla użytkownika – 600.
touch ~/.ssh/config
chmod 600 ~/.ssh/config
Następnie otwieramy plik:
editor ~/.ssh/config
Przykładowy wpis dla jakiegoś hosta:
Host router
Port 1234
HostName nasz.host.pl
User jakislogin
Compression yes
W ten sposób przy logowaniu będziemy mogli wydawać polecenie:
ssh router
zamiast
ssh jakislogin@nasz.host.pl -p 1234 -o "Compression no"
W midnight commander nie trzeba się już martwić jak przekazać port, na którym nasłuchuje ssh na hoście do którego potrzebujemy się połączyć. Będzie to wyglądało następująco:

Jest to duże ułatwienie w codziennej pracy. Oczywiście można też korzystać z kombinacji klawiszy Ctrl+r i Ctrl+s. Jednak, krótsze polecenia są czytelniejsze.
Załóżmy, że łączymy się przez ssh do komputerów w różnych sieciach – w sieci lokalnej i w jakiejś sieci odległej i w sieci lokalnej używamy loginu romek, a w sieci odległej atomek. Można skonfigurować ssh tak aby dla różnych zakresów adresów była używana domyślnie różna nazwa użytkownika oraz różne wartości parametru Compression. Uwierzytelnianie odbywa się za pomocą kluczy, jednak dla każdej sieci będą to inne klucze.
Oto przykładowa konfiguracja:
# dla sieci lokalnej
# wyłączona kompresja, login "romek", port 3476 i plik z kluczem
#
Host 192.168.14.*
Port 3476
User romek
IdentityFile ~/.ssh/id_rsa
Compression no
# dla sieci zdalnej
# włączona kompresja, login "atomek", port 1234 i plik z kluczem
#
Host *.example.com
Port 1234
User atomek
IdentityFile ~/.ssh/id2_rsa
Compression
Na hosta w sieci lokalnej logujemy się poleceniem (odpowiednie parametry będą odczytane z pliku konfiguracyjnego ssh):
ssh 192.168.14.34
Na hosta w sieci odległej polecenie będzie wyglądało tak:
ssh alfa.example.com
Objaśnienie do wpisów:
Host – nasza, łatwa do zapamiętania nazwa hosta, a w przypadku zakresu hostów, zakres adresów IP lub pełnych nazw domenowych,
Port – port na jakim nasłuchuje serwer OpenSSH
User – login na jaki logujemy sią na zdalnej maszynie
HostName – prawdziwa nazwa hosta (może być nazwa domenowa lub adres IP)
Compression – włącza lub wyłącza kompresję danych podczas sesji ssh
Konfiguracja dla danego hosta lub grupy hostów kończy się w momencie wystąpienia kolejnego wpisu Host.
Oczywiście ssh pozwala na ustawienie tutaj każdej dostępnej opcji. Więcej w man 5 ssh_config.