środa, 15 maja 2013

Brzydkie czcionki w Linuksie

Na wielu forach internetowych można natknąć się na wpisy, w których użytkownicy systemów opartych na Linuksie narzekają na sposób renderowania czcionek. Biorąc pod uwagę liczbę możliwych konfiguracji kart graficznych i monitorów, nie powinno to dziwić. A propos, w systemie Windows (7, 8, ale nie pod XP(!)) również dzieją się takie rzeczy, np. w konfiguracjach zintegrowanej grafiki AMD ATI i niektórych monitorów (np. Samsunga) o natywnej rozdzielczości 1366x768.

Środowisko XFCE

W środowisku XFCE wybieramy Ustawienia/Wygląd/Czcionki. Włączamy, jeżeli nie zaznaczono, "Antyaliasing", i eksperymentujemy z ustawieniami "Przyciąganie do siatki" oraz "Układ podpikseli" – tu zazwyczaj ustawiamy "RGB". Jako czcionkę interfejsu polecić można "Liberation Sans" lub "Droid Sans".

Archlinux

Jeżeli ustawienia oferowane przez środowisko nie zaspokajają potrzeb, spróbujmy doinstalować pakiety dostępne w repozytorium AUR, zawierające biblioteki i konfiguracje czcionek z Ubuntu.
Na początku warto zainstalować menedżera pakietów obsługującego repo AUR, może to być np. packer (używany domyślnie np. w Bridge Linux) lub yaourt. Wybrany menedżer trzeba zainstalować ręcznie:
  • sudo pacman -S base-devel – instalujemy pakiet deweloperski
  • mkdir ~/builds – tworzymy katalog roboczy do zbudowania pakietu instalacyjnego
  • pobieramy archiwum (tarball) wybranego menedżera i zapisujemy w utworzonym powyżej katalogu
  • cd ~/builds; tar -xvzf packer(yaourt).tar.gz – rozpakowujemy pobrane archiwum
  • makepkg -s – tworzymy pakiet instalacyjny godząc się na zainstalowanie (-s) potrzebnych zależności
  • sudo pacman -U packer.x.pkg.tar.xz – instalujemy utworzoną paczkę
Od tej pory do instalacji pakietów z AUR (i nie tylko) możemy używać zainstalowanego menedżera. Aby zainstalować wspomniane wyżej pakiety do obsługi czcionek wydajemy polecenia:
  • sudo packer (yaourt) -S fontconfig-ubuntu freetype2-ubuntu cairo-ubuntu libxft-ubuntu
Podczas budowania pakietów wciskamy 'n' na pytania, czy chcemy przeglądać skrypty budujące, oraz 't' na pytanie, czy zainstalować pakiet i ewentualnie zastąpić pakiety standardowe (mają takie same nazwy, ale bez przyrostka "-ubuntu").
W razie problemów zawsze warto przeczytać artykuł nt. konfiguracji czcionek w Archu. Przywrócenie oryginalnych pakietów umożliwia polecenie:
  • sudo pacman -S --asdeps fontconfig freetype2 cairo libxft

Debian

Prostym sposobem na poprawę  jakości wyświetlania czcionek w jest podmienienie konfiguracji czcionek plikami z pakietu przygotowanego dla Ubuntu.
  • ściągamy pakiet fontconfig-config z ostatniego wydania Ubuntu (teraz: 13.04)
  • sudo cp -r /etc/fonts /etc/fonts.debian – archiwizujemy konfigurację Debiana
  • dpkg -x fontconfig-config_2.10.2-0ubuntu2_all.deb ~/tmp – rozpakowujemy pakiet instalacyjny do utworzonego wcześniej katalogu
  • sudo cp -r ~/tmp/etc/fonts /etc – kopiujemy pliki konfiguracyjne
  • sudo chown -R root:root /etc/fonts – ustawienie właściwych uprawnień
Dwie ostatnie operacje łatwiej wykonać za pomocą konsolowego menedżera Midnight Commander. Po ponownym zalogowaniu się i ewentualnym dostrojeniu ustawień (patrz wyżej), jakość czcionek powinna się poprawić.

środa, 8 maja 2013

Archlinux - brak ikon w Evince 3.8

Wraz z aktualizacją środowiska Gnome do wersji 3.8, uaktualnieniu podlega również wykorzystywana również w instalacjach z innymi środwiskami przeglądarka plików pdf Evince, w wyniku czego program uruchamia się bez ikon, tzn. zamiast oznaczeń narzędzi na pasku widoczne są czerwone krzyżyki. Rozwiązanie jest proste, należy ponownie zainstalować bibliotekę librsvg: sudo pacman -S librsvg.

wtorek, 26 marca 2013

Nginx + php + userdir

W Nginx nie zaimplementowano mechanizmu userdir, znanego z serwera Apache, który w prosty sposób umożliwia uruchamianie skryptów php w katalogach użytkowników. Uczyniono tak ze względów bezpieczeństwa. Niemniej jednak czasami przydaje się taka funkcjonalność, np. do celów testowych, a więc nauki programowania w php. Poniżej konfiguracja działająca na Debianie/Ubuntu i Archu/Bridge'u:

server {
  listen   80;
  access_log  /var/log/nginx/localhost.access.log;
  index index.php index.html index.htm;

  server_name localhost;
  autoindex on;

  location ~ ^/~([^/]+)/(.+\.php)$ {
    include fastcgi_params;
    alias /home/$1/public_html/$2;
    fastcgi_pass unix:/var/run/php5-fpm.sock; # dla Debiana, Ubuntu
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # dla Bridge'a
    fastcgi_index index.php;
  }

  location ~ ^/~(.+?)(/.*)?$ {
    alias /home/$1/public_html$2;
  }

  location ~ /\.ht { deny all; }
  location ~ /\. { deny all; }
}

W Debianie/Ubuntu powyższa konfiguracja powinna zostać zapisana w jakimś pliku (np. userdir) w katalogu /etc/nginx/sites-available, a następnie dowiązana w katalogu /etc/nginx/sites-enabled. W Archu/Bridge'u dopisujemy to w pliku /etc/nginx/nginx.conf.
Uwaga: powyższa konfiguracja nie jest bezpieczna, nadaje się wyłącznie do celów testowych. Jeśli chcesz więcej wiedzieć, zajrzyj na stronę wiki projektu Nginx.

wtorek, 5 lutego 2013

Archlinux - problemy z weryfikacją pakietów podczas instalacji

Pacman, domyślny menedżer pakietów w Archu, umożliwia weryfikowanie pakietów na podstawie podpisów, niestety niekiedy mechanizm ten sprawia problemy. Co można zrobić?
Pierwsza rzecz to wydać polecenie pacman-key --refresh-keys, które powinno zaktualizować lokalną bazę kluczy. Notabene odświeżenie kluczy zapewnia również instalacja pakietu archlinux-keyring. Jeżeli to nie pomoże, spróbuj zmienić repozytorium w /etc/pacman.d/mirrorlist. Jeżeli i to nie pomoże, można spróbować następujących kroków:

  1. W pliku konfiguracyjnym pacman.conf tymczasowo wyłączamy weryfikację pakietów dla repozytoriów core, extra i community, czyli wpisujemy SigLevel = Never,
  2. rm -R /etc/pacman.d/gnupg - usunięcie katalogu z kluczami,
  3. rm /var/cache/pacman/pkg/* - opróżnienie cachu pakietów, wymagane, gdyż w przeciwnym razie mogą wystąpić błędy mówiące o uszkodzonych pakietach,
  4. w tym miejscu trzeba czasem zmienić serwer, z którego pobierane są pakiety (zajrzyj do pliku /etc/pacman.d/mirrolist),
  5. pacman -Syu archlinux-keyring - instalujemy aktualne klucze Archa,
  6. pacman-key --init - przygotowanie lokalnej bazy kluczy, podczas tej operacji warto w innych konsolach wydać polecenie ls -R / oraz poruszać i poklikać myszą, co przyśpieszy generowanie entropii; można też zainstalować pakiet haveged i poprzedzić inicjalizację poleceniem haveged -w 1024,
  7. pacman-key --populate archlinux - inicjalizacja kluczy, podczas której należy potwierdzić zaufanie dla kluczy głównych deweloperów wciskając "T" + Enter (samo Enter nie wystarczy!),
  8. W pliku pacman.conf przywracamy weryfikację podpisów, czyli ustawiamy SigLevel = PackageRequired dla poszczególnych repozytoriów,
  9. pacman -Syyu - odświeżenie list pakietów i aktualizacja systemu.

Jeżeli powyższe kroki nie umożliwią bezproblemowej instalacji pakietów, pozostaje wspomniana opcja SigLevel = Never. To rozwiązanie ostateczne, wyłącza przecież weryfikację podpisów pakietów, nie jest więc polecenie, ale czasem przydaje się, żeby "awaryjnie" zainstalować jakiś pakiet.

Niestety, zdarzyło się ostatnio kilka razy po zainstalowaniu najnowszego Bridge Linuksa, że powyższe porady nie przyniosły oczekiwanego skutku. Ciągle pozostawał jeden pakiet, co do którego pojawiała się informacja mówiąca o jego uszkodzeniu. Rozwiązanie było następujące: usunięcie problematycznego pakietu wg sugestii pacmana, tymczasowa zmiana serwera, zainstalowanie opornego pakietu, przywrócenie poprzedniego serwera (notabene niekonieczne, ale był szybszy) i dalsza instalacja (aktualizacja).

czwartek, 10 stycznia 2013

Problemy z Dnsmasq

Opis konfiguracji Dnsmasq na serwerze Ubuntu 12.04 LTS znajduje się tutaj. Czasem jednak nie wszystko do końca działa, jak trzeba. Dobrze skonfigurowany Dnsmasq powinien zapewniać rozwiązywanie nazw hostów podpiętych do lokalnej sieci. Można to osiągnąć stosując adresowanie statyczne IP oraz dopisując aliasy hostów w pliku /etc/host na serwerze. Plik ten jest następnie propagowany do hostów w sieci lokalnej. Jeżeli jednak chcemy korzystać z adresowania dynamicznego (co nie przeszkadza oczywiście adresować wybranych hostów statycznie) i mieć możliwość rozwiązywania lokalnych nazw, musimy sprawdzić kilka rzeczy, na co zwraca uwagę m.in. FAQ Dnsmasqa.
  1. Upewniamy się, że na interfejsie, na którym nasłuchujemy żądań z sieci lokalnej jest dobrze ustawiony adres broadcast, który w systemach opartych na debianie ustawiamy w /etc/network/interfaces; polecenie sudo ip addr pozwoli sprawdzić poprawność ustawień.
  2. Porty 67 i 68 dla protokołu UDP oraz ruch dla pakietów broadcast z adresem źródłowym 0.0.0.0 i adresem przeznaczenia 255.255.255.255 powinny być odblokowane w firewallu na interfejsie lokalnym. Jeżeli w sieci mamy MS Vistę, to do firewalla dodajemy:
    iptables -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d $UNIVERSE --dport 68 -j ACCEPT
    - gdzie $INTIF to nazwa interfejsu LAN, np. eth1, $INTIP - adres IP naszego serwera DHCP, $UNIVERSE - dowolny adres, czyli 0.0.0.0/0 (zobacz przykładową konfigurację firewalla).
  3. W przypadku systemów Windows XP zaleca się we właściwościach lokalnego połączenia sieciowego podać nazwę lokalnej domeny, czyli Panel sterowania / Połączenia sieciowe, prawy klik na połączeniu lokalnym i Właściwości / Protokół internetowy TCP/IP / Właściwości / Zaawansowane / DNS / Sufiks DNS dla tego połączenia: .mojadomena.org.
  4. Dystrybucje linuksa korzystają zazwyczaj z dwóch różnych klinetów dhcp. Jest to albo dhcpcd - z nim nie ma problemu, tzn. domyślnie wysyła do serwera nazwę hosta, albo dhclient, który jest również domyślnie wykorzystywany przez ostatnie wersje Network Managera, np. w Archu. W tym ostatnim przypadku musimy utworzyć plik /etc/dhclient.conf i wpisać w nim linię: send host-name = pick-first-value(gethostname(), "ISC-dhclient"); lub po prostu: send host-name = mojhost;.
  5. Warto dodać, że Network Manager na stacjach roboczych z Archem, podpiętych do sieci lokalnej za pomocą kabla, nie jest potrzebny. Możemy go odinstalować za pomocą polecenia: pacman -Rns networkmanager network-manager-applet. Pamiętać tylko trzeba, żeby uruchamiać domyślnie usługę dhcpcd, czyli: systemctl enable dhcpcd@eth0.service.

piątek, 21 grudnia 2012

Archlinux - konfiguracja


Po zainstalowaniu "czystego" Archa, co opisałem w poprzednim poście, czas na dostosowanie go do własnych potrzeb. Poniżej pokazuję, jak doinstalować i skonfigurować środowisko graficzne i programy użytkowe potrzebne w codziennej pracy. Wszystko wykonujemy po zalogowaniu się na konto roota.

Instalacja

Uwaga: znak ";" oznacza zatwierdzenie komendy, czyli naciśnięcie Enter; po znakach "#" umieszczono komentarze do poleceń.
  1. pacman -S sudo; visudo; #odkomentowujemy wpis %wheel ALL=(ALL) NOPASSWD: ALL, dzięki czemu zwykły użytkownik dodany do grupy wheel będzie mógł wykonywać polecenia administracyjne z użyciem sudo 
  2. pacman -S xorg-server xorg-xinit xorg-server-utils xterm mesa xf86-video-vesa xf86-video-... #instalacja serwera X, biblioteki grafiki 3D oraz sterownika karty graficznej, zamiast kropek trzeba wpisać: intel, nouveau lub ati; jeżeli ktoś ma wątpliwości lub starszy sprzęt powinien zajrzeć do podręcznika instalacji
  3. pacman -S alsa-utils lxdm xfce4 xfce4-goodies gvfs-smb xdg-user-dirs gksu #instalacja grfaicznego menedżera logowania (lxdm) oraz środowiska xfce4 i kilku narzędzi
  4. pacman -S ttf-dejavu ttf-liberation cantarell-fonts ttf-droid #podstawowe czcionki
  5. pacman -S mc p7zip zip unzip unrar file-roller #menedżer plików i archiwów
  6. pacman -S gtk-engine-murrine gtk-engine-unico #silniki tematów graficznych
  7. pacman -S leafpad evince gpicview vlc gimp gstreamer0.10-plugins audacious #instalacja edytora tekstów, przeglądarki pdf i plików graficznych oraz obsługi multimediów
  8. pacman -S chromium jre7-openjdk icedtea-web-java7 flashplugin #przeglądarka, obsługa javy i flasha 
  9. pacman -S libreoffice mythes mythes-pl hunspell hunspell-pl hyphen hyphen-pl #instalacja pakietu biurowego, podczas wyboru składników można pominąć pakiety numer 7,9,10 i 11, polski pakiet lokalizacji ma numer 73
  10. pacman -S geany #jeżeli ktoś programuje...
  11. pacman -S networkmanager network-manager-applet #menedżer połączeń sieciowych

Konfiguracja

  1. usermod -a -G wheel alek #dodanie konta zwykłego użytkownika do grupy wheel
  2. systemctl enable graphical.target #ustawienie graficznego trybu uruchamiania systemu jako domyślnego
  3. systemctl enable lxdm.service #ustawienie automatycznego uruchamiania graficznego menedżera logowania
  4. systemctl enable NetworkManager #automatyczne zarządzanie połączeniami sieciowymi
  5. nano /etc/skel/.xinitrc #odkomentować linię: exec startxfce4
  6. nano /etc/X11/xorg.conf.d/10-keyboard-layout.conf:
       Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "pl, us"
       EndSection
    
  7. nano /etc/lxdm/lxdm.conf #ustawiamy w sekcji [base] session=/usr/bin/startxfce4 i sekcji [userlist] disable=1
  8. nano /etc/xdg/user-dirs.defaults #wpisujemy domyślne nazwy folderów użytkownika, np. Pulpit, Pobrane, Szablony, Publiczny, Dokumenty, Muzyka, Obrazy, Wideo

Uwagi

Zanim zrestartujemy system warto przetestować poprawność uruchamiania się serwera X, graficznego menedżera logowania i środowiska Xfce. W tym celu na drugiej konsoli logujemy się jako zwykły użytkownik, którego konto założyliśmy podczas instalacji, a następnie uruchamiamy usługę graficznego menedżera logowania: sudo systemctl start lxdm.
Jeżeli uda się nam zalogować, Xfce zaoferuje utworzenie panelu, wybieramy opcję "domyślny". Jeżeli nie, błędów szukamy w plikach: /var/log/Xorg.0.log oraz ~/.xsession-errors.

niedziela, 16 grudnia 2012

Archlinux - instalacja

Przygodę z Archlinuksem można zacząć od jakiejś dystrybucji opartej na nim, ale prostszej w instalacji i zazwyczaj już skonfigurowanej. Przykładami takich dystrybucji są Bridge Linux lub Cinnarch, które warto oczywiście wypróbować. Są o wiele lepiej przemyślane niż popularne Ubuntu. Jednak różnice pomiędzy "łatwiejszymi" dystrybucjami a "czystym" Archiem sprowadzają się w gruncie rzeczy do graficznego opakowania instalacji i (ewentualnie) konfiguracji.
Jeżeli chcemy poznać podstawy dystrybucji linuksowych, warto spróbować instalacji i konfiguracji Archa od podstaw. Dodatkową korzyścią takiego podejścia jest także szybciej i zazwyczaj stabilniej działający system, ponieważ znajdą się w nim tylko pakiety wymagane przez nasz sprzęt. Proces ten dla średniozaawansowanego lub po prostu chcącego się czegoś nauczyć użytkownika nie jest bardzo trudny ze względu na świetną dokumentację zapewnianą przez Wiki Archa. Na początku warto przejrzeć następujące strony:


Ponieważ powyższe zasoby są dosyć rozbudowane, uwzględniają wiele potencjalnych konfiguracji i omawiają różne możliwości, przygotowałem skróconą, podręczną wersję.

Najpierw pobieramy obraz aktualnego medium instalacyjnego, wypalamy go na CD lub przenosimy na pendrive'a, a następnie uruchamiamy z niego komputer. Po uruchomieniu systemu trafimy do konsoli tekstowej, w której przeprowadzamy właściwą instalację.

Instalacja

Uwaga: znak ";" oznacza zatwierdzenie komendy, czyli naciśnięcie Enter; po znakach "#" umieszczono komentarze do poleceń.
  1. loadkeys pl; setfont Lat2-Terminus16; #wczytanie polskiej klawiatury i ustawienie czcionki konsoli (można też użyć Lat2-Terminus16)
  2. nano /etc/locale.gen; #określamy język, w którym będziemy porozumiewali się z systemem; w pliku odkomentowujemy (tj. usuwamy znak #) linie zawierające wpisy: en_US.UTF-8 i pl_PL.UTF-8
  3. locale-gen; export LANG=PL_PL.UTF-8; #tworzymy bazę zlokalizowanych komunikatów systemowych i ustawiamy zmienną systemową określającą nasz język
  4. cfdisk /dev/sda #uruchamiamy narzędzie pozwalające przygotować partycje potrzebne do instalacji systemu, na początek wystarczą dwie, jedna o wielkości ok. 8-10 GB i druga, której wielkość jest dwa razy większa niż ilość pamięci RAM w naszym komputerze
  5. mkfs.reiserfs /dev/sda2; mount /dev/sda2 /mnt; #tworzymy system plików na przygotowanej partycji (można też użyć mkfs.ext4) i montujemy partycję instalacyjną
  6. mkswap /dev/sda3; swapon /dev/sda3; # tworzymy i montujemy partycję wymiany
  7. nano /etc/pacman.d/mirrorlist; #opcjonalnie wybieramy repozytorium
  8. pacstrap -i /mnt base base-devel; #instalujemy podstawowe grupy pakietów
  9. genfstab -U -p /mnt >> /mnt/etc/fstab; nano /mnt/etc/fstab; # generujemy plik fstab
  10. arch-chroot /mnt; #zmiana katalogu root na /mnt
  11. powtarzamy punkty 1-3
  12. echo LANG=pl_PL.UTF-8 > /etc/locale.conf #ustawiamy polski język w konsoli
  13. nano /etc/vconsole.conf; #spolszczamy konsolę: KEYMAP=pl; FONT=lat2-16; FONT_MAP=;
  14. ln -s /usr/share/zoneinfo/Europe/Warsaw /etc/localtime #ustawienie strefy czasowej
  15. hwclock --set --date="2012-12-14 14:12:05" --utc; hwclock --hctosys --utc #ustawienie zegara RTC (sprzętowego) na czas UTC i zsynchronizowanie go z zegarem systemowym
  16. timedatectl set-time "2012-12-14 14:12:05 ; timedatectl set-local-rtc 0 #tych poleceń można użyć po(!) instalacji do ustawienia zegara;
  17. echo archie > /etc/hostname; #ustawienie nazwy komputera (archie)
  18. systemctl enable dhcpcd@eth0.service; #uruchomienie automatycznej konfiguracji sieci. Uwaga: nazwa interfejsu może być inna, sprawdzamy ją, wydając polecenie: ip link.
  19. nano /etc/pacman.d/mirrorlist; #opcjonalne sprawdzenie repozytoriów
  20. mkinitcpio -p linux; #wygenerowanie obrazu initrd (initial ramdisk environment)
  21. passwd; #ustawienie hasła roota
  22. useradd -m -g users -G wheel,lp,optical,power,storage -s /bin/bash alek; passwd alek; #dodanie konta użytkownika i ustawienie hasła
  23. pacman -S grub-bios os-prober; grub-install --target=i386-pc --recheck --force /dev/sda; grub-mkconfig -o /boot/grub/grub.cfg; #instalacja bootmenedżera GRUB w MBR i wygenerowanie jego pliku konfiguracyjnego
  24. exit; umount /mnt; reboot; #wyjście ze środowiska chroot, odmontowanie i restart

  25. Uwagi

  • Relatywnie najtrudniejszym elementem jest tworzenie partycji. Jeżeli mamy na dysku jakiś system, a także (zazwyczaj) jakieś partycje, lepiej skorzystać z graficznego edytora partycji i z jego pomocą wygospodarować miejsce na instalację. Można użyć np. środowiska GParted Live lub CloneZilla. Oczywiście oznaczenia partycji (np. /dev/sda2), należy dostosować.
  • Menadżer pakietów w Archu, czyli pacman, używa repozytoriów zgodnie z kolejnością ich wystąpienia w pliku /etc/pacman.d/mirrorlist. Na początek warto skopiować jakieś europejskie repo, np. bardzo szybkie i często aktualizowane:
    Server = http://mir1.archlinux.fr/archlinux/$repo/os/$arch.
  • Uwaga: z doświadczenia wynika, że od czasu do czasu repozytorium trzeba zmienić ze względu na błędy podczas aktualizacji systemu.
  • Powyższa instrukcja pomija konfigurację sieci, zwłaszcza wifi, i zakłada automatyczne nawiązanie połączenia z internetem za pomocą łącza kablowego. Połączenie kablowe jest zalecane podczas instalacji.
  • W razie problemów zajrzeć trzeba do wspomnianych wyżej stron wiki.
W następnym wpisie przedstawię przykładową konfigurację Archa.