Category Archives: Ubuntu

Ruby 2.2.0, Ruby on Rails 4.2.0 — instalacja na Ubuntu 14.04

Na początek instalujemy potrzebne biblioteki i narzędzia do skompilowania Rubiego i gemów domyślnie będących w zależnościach Railsów.

sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool nodejs

W przypadku korzystania z gemu ‚pg’ warto doinstalować:
sudo apt-get install libpq-dev

Na stronie: https://rvm.io/rvm/install za pomocą polecenia:

curl -L https://get.rvm.io | bash -s stable --ruby

instalujemy RVM (Ruby Version Manager) oraz najnowszą wersję Rubiego.

Następnie do pliku .bashrc w katalogu domowym dodajemy następujące linijki:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"

W terminalu wczytujemy zmieniony .bashrc za pomocą polecenia source ~/.bashrc.

Teraz opcjonalnie możemy stworzyć plik .gemrc w katalogu domowym i dodać:

gem: --no-ri --no-rdoc

Dzięki temu przy instalacji gemów nie będzie generowana dokumentacja.

Poleceniem:

rvm use 2.2.0 --default

wskazujemy, że domyślnie chcemy korzystać z Rubiego 2.2.0.

Zaktualizujmy narzędzie gem do najnowszej wersji:

gem update --system

Warto zainstalować jeszcze Bundlera:

gem install bundler

Do zainstalowania pozostały jeszcze Railsy, co robimy poleceniem:

gem install rails

Po instalacji tworzymy testowy projekt, aby sprawdzić poprawność działania.

rails new projekt
cd projekt
rails server

Wchodzimy na stronę: http://localhost:3000, aby zobaczyć działającą aplikację.

Ubuntu 12.10: Domeny dla lokalnych aplikacji internetowych

Problem:

Chcemy, aby rozwijane przez nas aplikacje internetowe były dostępne pod „dobrze wyglądającymi” domenami, np. myapp.dev.

Rozwiązanie:

Rozwiązanie mocno bazuje na wpisie: Serving Apps Locally with Nginx and Pretty Domains

W pierwszej kolejności sprawdzamy czy wśród procesów nie działa dnsmasq. Jeśli tak, to zabijamy ten proces.

Stwórzmy plik ~/dnsmasq.conf z następującą konfiguracją:

keep-in-foreground

address=/.dev/127.0.0.1
listen-address=127.0.0.1

W konsoli wystartujmy: sudo dnsmasq --conf-file=~/dnsmasq.conf.

Do pliku /etc/resolv.conf dodajmy następującą linijkę przed wszystkimi innymi wpisami nameserver:
nameserver 127.0.0.1
Dzięki temu w pierwszej kolejności zadziała nasz lokalny DNS.

To co nam pozostało do zrobienia do konfiguracja serwera nginx.
Przykładowy fragment konfiguracji /usr/local/nginx/conf/nginx.conf:

  server {
    listen 80;
    server_name localhost myapp.dev;

    location / {
      root /home/user/public_html;
      autoindex on;
      allow all;
    }
  }

Startujemy nginksa i wchodzimy pod adres http://myapp.dev/

Źródła:

Serving Apps Locally with Nginx and Pretty Domains | zaiste.net
Dnsmasq – Community Ubuntu Documentation

Ubuntu 12.04, Netbeans 7.0.1: Problem z GUI Builder

Podczas pracy z Netbeans 7.0.1 na Ubuntu 12.04 postanowiłem skorzystać z GUI Buildera do zaprojektowania prostego interfejsu dla aplikacji.
Stworzyłem nowy JFrame Form i przeszedłem do karty Design.
Jedyne, co na początku widziałem to napis Loading…
W końcu zauważyłem ikonę minusa, po kliknięciu, której przeszedłem do komunikatu z wyjątkiem:
java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal

Rozwiązanie znalazłem na bugs.launchpad.net.
Do pliku /usr/bin/netbeans na końcu wśród opcji dla eval launchNbexec dodałem:
--cp:a /usr/share/java/xercesImpl.jar.

To rozwiązało mój problem.

Ubuntu 12.04 | zsh: command not found

Po kilku próbach w końcu zmieniłem domyślnego basha na zsh. Z zestawem wtyczek z oh-my-zsh korzystanie z konsoli stało się bardziej efektywne. I tu pojawia się ALE… To, co lubię w bashu, to domyślne podpowiadanie, co mogę zainstalować, jeśli polecenie, którego akurat użyłem nie jest dostępne, bo zapomniałem czegoś doinstalować.
Jak się okazuje, można ją w łatwy sposób włączyć. Do pliku .zshrc należy dodać poniższą linijkę:

source /etc/zsh_command_not_found

Zmiana Look and Feel dla Netbeans 7.0.1 na Ubuntu 12.04

W pliku /etc/netbeans.conf do netbeans_default_options= dodajemy np. opcję:
--laf javax.swing.plaf.metal.MetalLookAndFeel

Więcej informacji na temat dostępnych L&F: http://wiki.netbeans.org/NBLookAndFeels

Łączenie dwóch wirtualnych maszyn VirtualBox

Na wstępie zakładam, że chcemy połączyć dwie maszyny wirtualne; na każdej zainstalowane Ubuntu.
Sam zrobiłem to w taki sposób, że stworzyłem jedną VM, a następnie ją sklonowałem z poziomu programu VirtualBox (testowane na wersji 4.1.16 na Ubuntu 12.04).

Dla każdej maszyny wirtualnej wykonujemy:
Settings → Network
Attached to: Internal network
Name: intnet
Promiscuous mode: Allow All
Mac Address: (dowolny różny dla obu maszyn)

Ustawienie Internal network oznacza, że tak przygotowane maszyny wirtualne będą odizolowane od świata zewnętrznego.

Uruchamiamy obie maszyny wirtualne z Ubuntu. Sprawdzamy wszystkie istniejące interfejsy poleceniem: ifconfig -a.

Dla każdej z maszyn ustawiamy statyczne adresy IP, np. 192.168.0.1 i 192.168.0.2 z uwzględnieniem nazwy interfejsu.
sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0
sudo ifconfig eth1 192.168.0.2 netmask 255.255.255.0

Jeśli wszystko udało się nam poprawnie skonfigurować, to ping powinien być tylko formalnością.
na 192.168.0.1ping 192.168.0.2
na 192.168.0.2ping 192.168.0.1

Wykorzystanie karty grafiki na zdalnym komputerze

Opis sytuacji:

  • na komputerze lokalnym jest zainstalowane Ubuntu 12.04 oraz znajduje się karta ATI Mobility Radeon™ HD 3470
  • na komputerze zdalnym jest zainstalowane Ubuntu 11.10 64-bit oraz znajduje się karta NVidia GeForce GTS 450 z zainstalowaną platformą CUDA

Zadanie, które sobie postawiłem to takie skonfigurowanie obu komputerów, aby obliczenia wykonywać z użyciem środowiska CUDA na komputerze zdalnym, ale wyświetlanie wizualnych efektów odbywało się już na komputerze lokalnym.

Na początek ssh z flagą -Y, „trusted X11 Forwarding”.
ssh -Y user@host

Pojawia się pierwszy błąd:
Error: couldn't find RGB GLX visual or fbconfig
Proponowane rozwiązanie znalezione w sieci:
sudo apt-get install libgl1-mesa-swx11 na komputerze lokalnym.
UWAGA: sterowniki fglrx i inna wersje biblioteki mesa zostaną usunięte.

Drugi błąd:
Xlib: extension "NV-GLX" missing on display "localhost:10.0".
Proponowane rozwiązanie znalezione w sieci:
użycie standardowych bibliotek Mesa dla OpenGL
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGL.so na komputerze zdalnym.

Udało się uruchomić prosty program napisany w OpenGL-u 🙂
Niestety przykładowe programy z CUDA SDK zwracają błąd cudaSafeCall() Runtime API error : unknown error.

Dodawanie ikony do programu w Ubuntu

W folderze /usr/share/icons znajdują się ikony do programów, ale nic nie stoi na przeszkodzie, aby dodać własne.

W inkscape tworzymy nową grafikę *.svg i zapisujemy tak, aby wymiary dokumentu były ustawione na: 16×16, 32×32, 48×48, 64×64, 128×128 (wymiary w pikselach).

Wrzucamy stworzone ikony do folderu: /usr/share/icons/Humanity/apps/[rozmiar]

Następnie w terminalu przechodzimy do folderu: /usr/share/applications, listujemy zawartość katalogu ls -l i edytujemy interesujący nas plik.

Przykład: gedit.desktop

[Desktop Entry]
Name=gedit
GenericName=Text Editor
Comment=Edit text files
Exec=gedit %U
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.2.3
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit/gedit-bugreport
X-Ubuntu-Gettext-Domain=gedit

Dla Icon= ustawiamy nazwę nowej ikony i zapisujemy plik.

Jeśli nowa ikona nie załadowała się, to usuwamy plik icon-theme.cache z folderu /usr/share/icons/Humanity. Po odświeżeniu zawartości katalogu nowa ikona powinna być widoczna.

vim – kompilacja ze źródeł

Wchodzimy na stronę http://www.vim.org, a następnie Download → Sources. Pobieramy archiwum i rozpakowujemy.

Uruchamiamy skrypt konfigurujący:

  • wersja podstawowa:
    ./configure
  • wersja z dodatkowymi flagami
    ./configure --enable-rubyinterp --enable-pythoninterp

Polecam sprawdzić tę drugą wersję, część wtyczek korzysta ze skryptów napisanych np. w Rubym czy Pythonie. Aby sprawdzić inne flagi w bashu, wpisujemy -- i naciskamy Tab dwukrotnie.

Na 64-bitowej architekturze warto włączyć flagę multibyte --enable-multibyte, aby VIM poprawnie obsługiwał kodowanie UTF-8.

Jeśli w trakcie skrypt zgłasza brak plików nagłówkowych (aby znaleźć paczki, w których znajduje się brakujący plik), możemy skorzystać z

apt-file search nazwa_pliku

Zostały jeszcze dwa polecenia do wykonania

make
sudo make install

Terminal dopasowany do potrzeb

Na początku tego wpisu pragnę polecić dwa repozytoria do przetestowania:

Są to ciekawe projekty mające na celu dostosowanie terminala do swoich potrzeb.

Zalety?
Duży zbiór wtyczek, rozszerzeń, aliasów ułatwiających codzienną pracę.
Wady?
Dopasowanie konfiguracji do własnych potrzeb może być czasochłonne, natomiast włączenie wszystkich wtyczek może spowolnić działanie terminala.

Ze względu na szybkość działania terminala zrezygnowałem z zestawu wtyczek, ale postanowiłem wykorzystać część zawartych w nich rozwiązań.

  • Przede wszystkim zdefiniowałem zbiór aliasów dla poleceń, z których najczęściej korzystam.
  • Stworzyłem plik .dircolors w katalogu domowym i dopasowałem wyświetlane kolory m.in. przy wywołaniu komendy ls
    Tworzymy plik:

    dircolors -p > ~/.dircolors

    i następnie edytujemy wg uznania. Opis opcji znajduje wewnątrz pliku, ale warto zapoznać się także z Configuring LS_COLORS.

  • Włączyłem kolory dla polecenia git:
    git config --global color.ui true