Category: Ubuntu

Hello World -ohjelma 3 eri ohjelmointikielellä

Tässä artikkelissa käsittelen helloworld -ohjelman luomista kolmella eri ohjelmointikielillä.

C++:

Ensiksi pitää hankkia c++ -kääntäjä. Linuxilla on g++, avoimen lähdekoodin c++ -käännin. Latasin ja asensin ohjelman komennolla $ sudo apt-get install g++, jonka jälkeen loin helloworld.cc -nimisen tiedoston nanolla (nano helloworld.cc). Kirjoitin tiedostoon:

#include <iostream>
using namespace std;

int main() {

std::cout << “Hello World!” << std::endl;
return 0;

}

Ja annoin komennon $ g++ helloworld.cc kääntääkseni lähdekoodin. Tuloksena oli a.out -niminen tiedosto, jonka ajoin komennolla $ ./a.out. Ohjelma tulosti terminaaliin “Hello World!” -tekstin.

 

C#:

Asensin ensiksi mono-mcs:n komennolla $ sudo apt-get install mono-mcs. Tämän jälkeen kirjoitin tiedoston nimeltä HelloWorld.cs:

class HelloWorld {
static void Main() {
System.Console.WriteLine(“Hello World!”);
}
}

Ja annoin komennon $ mcs HelloWorld.cs. Tuloksena oli HelloWorld.exe, jonka ajoin komennolla $ mono HelloWorld.exe. Terminaaliin tulostui “Hello World!”.

 

Java:

Java -ohjelmointia varten tarvitsee Linuxilla openjdk:n, eli open java development kitin. Kirjoittaa $ sudo apt-get install openjdk ja painaa tabulaattoria, niin saa listan openjdk -paketeista. Uusin tämän artikkelin aikana oli openjdk-7-jdk, mutta latasin silti openjd-6-jdk:n. Pitää muistaa ladata openjdk-#-jdk -niminen paketti, koska muut eivät ole development kittejä. Lataamisessa voi kestää hiukan: itselläni kesti noin kaksi minuuttia tasaisella 748 kbps nopeudella.

Kun olin asentanut openjdk, aloin tekemään HelloWorld.java -lähdekoodia ($ nano HelloWorld.java). Koodi näytti tältä:

public class HelloWorld {
public static void main(String[]args) {
System.out.println(“Hello World!”);
}
}

Käänsin lähdekoodin komennolla $ javac HelloWorld.java, ja tuloksena oli HelloWorld.class, jonka join komennolla $ java HelloWorld. Ohjelma tulosti terminaaliin “Hello World!”.

 

Lähteet:

HelloWorld -ohjeet: Programming Languages on Linux – Installing and Using on Ubuntu

Lähdekoodit (c++ ja c#, javan kirjoitin itse): Transwiki:List of hello world programs

myy.haaga-helia.fi:lle kirjautumisen automatisointi (OpenSSH)

Raportoin tässä raportissa onnistuneesta julkisen avaimen luonnista ja sen käytöstä myy.haaga-helia.fi -palvelimella.

10:55 – Onnistuin luomaan julkisen avaimen ja annoin avaimen käyttäjälleni myyllä, mutta ilmeni sama bugi kuin oppitunnilla, eli ”Agent admitted failure to sign using the key.”

11:19 – Päätin kokeilla tehdä prosessin laittamalla SSH_AUTH_SOCK=0 komentojen eteen. Tämä ei korjaa bugia, vaan on menetelmä millä kiertää bugi. Laitoin SSH_AUTH_SOCK=0 käyttöön koko istunnalle komennolla

$ export SSH_AUTH_SOCK=0

11:22 – Annoin komennon

$ ssh-copy-id kayttajatunnus@myy.haaga-helia.fi

ja annoin salasanan jonka olin luonut julkiselle avaimelle.

11:25 – Kokeilin kirjautua sisään. Minulta pyydettiin taas julkisen avaimen salasanaa (passphrase). Annoin sen ja pääsin sisään.

11:26 – Kokeilin kirjautua uudelleen sisään. Salasanaa (passphrase) kysytään joka kerta.

11:27 – Loin uuden julkisen avaimen ja annoin sen kayttajatunnus@myy.haaga-helia.fi:lle.

$ ssh-keygen

$ ssh-copy-id kayttajatunnus@myy.haaga-helia.fi

Tällä kertaa en laittanut passphrasea. Pyydettiin salasanaa, ja avain oli kopioitu. Kirjauduin onnistuneesti sisään eikä salasanaa pyydetty.

Lähteet:

Karvinen, Tero. ICT01TN002 -kurssin materiaali <http://terokarvinen.com/&gt;

OpenSSH -palvelimen ja julkisen avaimen käytön raportti

Tässä raportissa kerron onnistuneesta openssh-server –palvelinohjelmiston asennuksesta ja sen käytöstä. Raportoin myös julkisen avaimen luomisesta ja käyttämisestä.

Edit: auth.log:n aikaleimat ovat eri aikavyöhykkeellä, 2 tuntia Suomen aikaa jäljessä, eli CET.

10:00 – Annoin komennon

$ sudo apt-get update

ja asensin openssh-server –ohjelmistopaketin komennolla

$ sudo apt-get install openssh-server

10:03 – Muutin salasanani (default salasana: enter) hyvään salasanaan.

10:05 – Onnistuneesti kirjauduin sisään localhostilla.

$ ssh ubuntu@localhost

10:08 – Yritin kirjautua sisään tietokoneen ip-osoitteella localhostin sijaan.

$ ssh ubuntu@10.0.0.4

Sain virheilmoituksen ”permission denied”. Olin kirjoittanut salasanan väärin.

auth.log:ssa kyseinen tilanne näytti tältä:

Feb 11 08:09:38 ubuntu sshd[6575]: pam_unix(sshd_auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=ubuntu.local user=ubuntu

Feb 11 08:09:39 ubuntu sshd[6757]: Failed password for ubuntu from 10.0.0.4 port 53810 ssh2

10:16 – Yritin uudelleen kirjautua, ja sain salasanan oikein tällä kertaa.

auth.log:

Feb 11 08:16:57 ubuntu sshd[6645]: Accepted password for ubuntu from 10.0.0.4 port 53811 ssh2

Feb 11 08:16:57 ubuntu sshd[6645]: pam_unix(sshd:session): session opened foruser ubuntu by (uid=0)

10:19 – Loin uuden käyttäjän petteri, ja sille hyvän salasanan.

$ sudo adduser petteri

10:22 – Onnistuneesti kirjauduin ssh:lla sisään petteri –käyttäjän käyttäjätunnuksilla.

$ ssh petteri@10.0.0.4

Kirjauduin ulos ja ryhdyin automatisoimaan kirjautumisen.

10:24 – Loin julkisen avainparin komennolla

$ ssh-keygen

sen jälkeen annoin julkisen avaimen petteri –käyttäjälle komennolla

$ ssh-copy-id petteri@10.0.0.4

10:25 – Kokeilin kirjautumista petteri –käyttäjätunnuksilla. Kirjauduin automaattisesti sisään. Kirjautumisen automatisointi oli valmis.

auth.log:

Feb 11 08:25:58 ubuntu sshd[7365]: Accepted publickey for petteri from 10.0.0.4 port 53816 ssh2

Feb 11 08:25:58 ubuntu sshd[7365]: pam_unix(sshd:session): session opened for user petteri by (uid=0)

 

Lähteet

Karvinen, Tero. ICT01TN002 -kurssin materiaali. <http://terokarvinen.com/&gt;

LAMP -ympäristön pystyttäminen

Tässä artikkelissa raportoin onnistuneesta LAMPin käyttöönotosta Linux Ubuntun LiveCD -tilassa.

Ohjelmistot, mitä käytettiin olivat tietenkin: L = Linux, A = Apache, M = MySQL ja P = PHP. Tietokantojen ja taulukoitten luontiin käytettiin PHPMyAdminiä, joka ei ilmeisesti ole avoimen lähdekoodin ohjelmisto.

Ohitan nyt tähän mennessä perustoiminnot, kuten mitä tehdään ennen kuin asennetaan jotain. Menen siis suoraan asiaan.

Asensin Apache2 -webbipalvelimen onnistuneesti. Laitoin modin userdir päälle ja käynnistin Apache2:n uudelleen.

$ sudo a2enmod userdir

$ sudo service apache2 restart

Uudelleenkäynnistyksen jälkeen tarkistin toimiiko localhost. Localhost toimi, mutta tarvittiin public_html -hakemisto /home/user -hakemistoon.

$ mkdir public_html

Siirryin public_html -hakemistoon ja tein sinne tiedoston index.html. Tässä vaiheessa en kirjoittanut tiedostoon muuta kuin “Moi” testaussyistä.

Tarkistin localhostin ja omalla IP-osoitteella sivun tilan. Koska ei ilmennyt mitään ongelmia ja Moi luki sivulla, lisäsin html -ohjelmoinnilla sivulle nimen ja lisää tekstiä. Tähän kaikkeen kesti noin viisi minuuttia. Skandinaavisia kirjaimia en laittanut päälle, koska osaaminen puuttui. Jatkoin sitten asentamalla MySQL -tietokantapalvelimen ja PHPMyAdmin -tietokantahallintaohjelmiston.

$ sudo apt-get install mysql-server phpmyadmin

Ekalla yrityksellä unohdin pistää rastin (tähden) ruutuun, kun kysyttiin, että haluanko mysql:n virittävän apache2 -palvelimen tukemaan mysql:ää. Lopputuloksena oli kasa virheilmoituksia PHPMyAdmin:n asennuksen aikana. Koska poistoprosessin aikana ilmestyi myös virheilmoituksia, estäen poiston, sammutin Linuxin liveCD -tilan ja käynnistin uudelleen. Jouduin täten myös asentamaan apache2:n uudelleen. Käytin tähän aikaa noin 20 minuuttia.

Toisella kerralla onnistuin. PHPMyAdmin -sivu aukeni ja pääsin sisään hallitsemaan tietokantoja. Lisäsin tietokannan LAMP_test, ja sinne taulun nimeltä “asunto”. Tauluun laitoin kolme saraketta ja lisäsin kaksi riviä siihen. Tähän kesti noin 15 minuuttia.

Kokeilin tässä vaiheessa toimiko php. Muutin index.html -tiedoston index.php:ksi, lisäsin siihen yksinkertaisen laskutoimituksen (2+2) ja testasin sivua. Firefox tarjosi sivua ladattavaksi, joten tiesin php:n olevan pois päältä. PHPMyAdmin asentaa php -modin Apache2 -palvelimeen kun sen asentaa, joten modi oli valmiina, se ei vaan ollut päällä. Menin /etc/apache2/mods-enabled/ -hakemistoon ja avasin sudolla php5.conf -tiedoston muokattavaksi.

$ sudo nano php5.conf

Kuten oli opastettu, lisäsin opastettuihin kohtiin #-merkin. Sen jälkeen käynnistin apache -palvelimen uudelleen. Kokeilin sivua uudelleen, ja sivu ilmestyi. Sivulla oli myös haluttu tulos, eli 4. Tähän kesti noin viisi minuuttia.

Tein yksinkertaisen PHP-ohjelman, joka lukee tietokantaa. Parametreina tietokannalle oli aikaisemmin mainittu tietokanta “LAMP_test” ja taulu oli “asunto”. Tallensin PHP-sivun (hello.php) public_html -hakemistoon ja kokeilin sitä Firefox:ssa. Sivulle tulostui “Connected successfully” ja taulun tiedot. Koska kopioiminen nano -editoriin ei onnistu, kirjoitin ohjelman mallin mukaan käsin. Ohjelman luominen ja testaaminen kesti noin 10 minuuttia.

Lähteet:

LAMP -ohjeet (englanninkieliset)

Command Line Basics

Commands for Admins

Install Apache Web Server on Ubuntu

Perusteellinen analyysi 6 Linux -ohjelmistosta

Asensin ja kokeilin 3 ohjelmaa joissa oli graafinen käyttöliittymä ja 3 komentoriviohjelmaa. Kaikki ohjelmat ovat sellaisia, mitä en ole aikaisemmin käyttänyt.

GUI (Graphical User Interface) -varustetut ohjelmat:

  1. Amarok – musiikintoisto-ohjelma
  2. Miro
  3. Bangarang

Kaikki ovat mediasovelluksia.

Komentoriviohjelmat:

  1. irssi
  2. lynx
  3. rtorrent

Aloitin avaamalla terminaalin ja päivittämällä lähteet pistämällä komennon:

$ sudo apt-get update

Seuraavaksi etsin Amarokin, sen tiedot ja asensin sen (kyseisessä järjestyksessä):

$ apt-cache search Amarok

$ apt-cache show amarok

$ sudo apt-get install amarok

Ohjelma asentui tasaisesti ja kysymysten kohdalla vastasin myönteisesti (y ja enter). Ohjelmalla oli paljon riippuvuuksia, joten asennuksessa kesti pitkään. Asennus kesti noin 3 minuuttia. Asennuksen lopussa käynnistin ohjelman laittamalla sen nimen terminaaliin ja painamalla enteriä.

Yrittäessäni toistaa mp3 -tiedostoa, ohjelma ilmoitti koodekin puuttuvan. Ilmestyi ponnahdusikkuna, jossa kerrottiin puuttuvat koodekit ja kysyttiin, että haluaisinko asentaa kyseiset koodekit. Hyväksyin, ja koodekit asentuivat ilman virheilmoituksia. Silti amarok ei pystynyt toistamaan tiedostoa, ja väitti koodekin puuttuvan. Amarokin tunnusmusiikki suostui toistumaan (oma mediatiedostonsa).

Videotiedostotkaan eivät suostuneet toistumaan. Asensin koodekit ja silti videotiedostot eivät toistuneet. Luulen, että syynä on tiedostojen formaatti (XviD).

Poistin Amarokin käytön jälkeen komennolla (säästin riippuvuudet):

$ sudo apt-get remove amarok

Poistoprosessi hyytyi kesken ja jäi kohtaan

kbuildsycoca4(11011) kdemain: Emitting notifyDatabaseChanged (“apps”, “services”)

Katkaisin prosessi Ctrl + C -näppäinyhdistelmällä.

Seuraavaksi kokeilin Miroa.

Päivitin lähteet taas ennen asennusta. Etsin, tarkastelin tietoja ja asensin samoilla komennoilla kuin mitä käytin aikaisemmin, mutta ohjelman nimen kohdalla luki Miro. Asennus jähmettyi samaan kohtaan mihin amarokin poistoprosessi jäi. Katkaisin asennuksen samalla tavalla.

Vaikka asennus jähmettyikin, ohjelma käynnistyi ilman virheilmoituksia tai hidastuksia. Miro kysyi, jos haluaisin sen käynnistyvän tietokoneen käynnistyksen yhteydessä. Valitsin kielteisen vaihtoehdon, ja tein samoin seuraavassa kysymyksessä, missä kysyttiin haluanko Miron tarkastavan koneen mediatiedostoja varten. Kun pääsin lopulta ohjelmaan, Miro kehotti minua asentamaan Bonjourin, jota en kuitenkaan asentanut (suljin vain ikkunan). Otin Podcasts -kohdasta sivupaneelista TEDTalks ja latasin Mikko Hyppösen luennon. Tiedosto latautui nopeasti ja pääsin pian katsomaan luentoa. Luento toistui täydellisesti.

Ylempänä Miro.

Siirryin Miron jälkeen Bangarangiin. Päivitin lähteet ja paketin etsiminen alkoi. Asennusprosessi jähmettyi taas samaan kohtaan, mistä mainitsin aikaisemminkin. Lopetin asennusprosessin Ctrl + C -näppäinyhdistelmällä.

Bangarang käynnityi ilman virheilmoituksia, ja nopeasti. Kaikki kokeilemani mediatiedostot toistuivat ongelmitta (mp3, avi ja mkv -tiedostoja). Tekstityksetkin “toistuivat” täydellisesti videotiedostoissa joissa niitä oli. Kuten ohjelman kuvauksessakin luki, ohjelma oli erittäin kevyt. Käyttöliittymä oli erittäin simplistinen, ja siitä löytyi vain pakolliset painikkeet. Olin myönteisesti yllättynyt

Ensimmäisenä komentoriviohjelmista kokeilin irssiä. Irssi on suomalaisten luoma irc -pääteohjelma joka pyörii täysin komentorivissä. Irssi käynnistyy yksinkertaisesti komennolla joka on sama kuin sen nimi. Sen jälkeen pitää yhdistää jollekin palvelimelle käyttämällä vastaavanlaista komentoa:

/connect pa.lve.lin

Komento mahdollisesti vaatii portin joka lisätään komennon perään tällä tavalla:

:####

Risuaidat tietenkin korvataan numeroilla. Kun palvelimelle on yhdistetty, kanavalle mennään komennolla:

/join #kanava

Jotkin kanavat vaativat salasanan.

Olen käyttänyt irc -pääteohjelmia aikaisemmin, kuten mIRCiä ja firefoxiin luotua IRC -pluginnia, mutta tämä on ensimmäinen kerta kun käytän varsinkin Suomessa suosittua irssiä. Irssin vahvapuoli on se, että se pyörii komentorivissä ja se on erittäin kevyt (IRC -pääteohjelmat nyt yleensä eivät olekaan raskaita). Tässä vaiheessa en voi sanoa onko irssi milläkään muulla tavalla ylivertaisempi kuin muut IRC -pääteohjelmat.

Seuraavana komentoriviohjelmana oli Lynx. Lynx on verkkoselain joka pyörii komentorivissä. Lynxin paketti on nimellä lynx-cur, eli asennuksessa käytetään komentoa:

$ sudo apt-get install lynx-cur

Selailin eri sivuja, mutta en onnistunut saamaan aputietoja auki. Katsoin manuaalista tietoja siitä, miten pääsisi googlen sivuille, mutta en onnistunut löytämään mitään mikä olisi auttanut minua. Siirryin seuraavaan komentoriviohjelmaan.

rTorrent on komentorivissä toimiva torrent -pääteohjelma. Suosittelen kaikille manuaalin lukemista ennen ohjelman käyttöä. Ohjelma siis toimii siten, että yksi näppäin vastaa jotakin tiettyä toimintoa. Kaikki toiminnot ja niitä vastaavat näppäimet ovat dokumentoitu rTorrentin sivuilla. Ongelmia voi tosin ilmetä, koska dokumentaatio on amerikan näppäimistölle tehty, eli ei vastaa suomalaisia näppäimistöjä. Suosittelenkin suomenkielisiä ohjeita.

rTorrentin hyödyllisyys piilee siinä, että sitä voi ohjata etäältä terminaaliemulaattorilla puhelimesta. En itse kokeillut kyseistä ominaisuutta, mutta olen nähnyt kaverini tekevän niin.

Linux -asennuslevyn poltto ja testaus

Käyttöjärjestelmä jonka levykuva poltettiin levylle on Linux Ubuntu 10.04 LTS 32-bittinen. Polttoprosessi ja testaus meni ongelmitta. Polton ja testauksen päivämäärä oli 16.01.2012.

Tarkat tiedot pöytäkoneesta, jota käytettiin:

  • Emolevy: Asus P6T, Intel x58 -arkkitehtuuri
  • CPU: Intel i7 920 2.66gHz quadcore
  • GPU: MSI GeForce GTX 560 Ti Twin-Frozr II OC
  • RAM: g.skill 6GB 1600mHz F3-12800CL9-2GBNQ
  • Optinen asema: LG HL-DT-ST DVDRAM GH22NS50
  • PSU: Silverstone Element 650W

Kiintolevyjä on 2 (molemmat SATA II):

  • Samsung Spinpoint F1 1TB 7200rpm HD103UJ (jaettu 2 osioon, yksi 100GB jossa Windows ja toinen 899GB)
  • Western Digital Caviar Green 2TB 7200-5600rpm 64mb

Käyttöjärjestelmänä koneessa oli Windows Vista 64-bittinen SP2. Tiesin laitteiston etukäteen, mutta tarkistin Speccy -ohjelmistolla tiedot toiseen kertaan.

Vanhan laptopin tietoja en saanut selville (laptop on sen käyttäjän mukana Haagissa). Sen tiedän, että siinä on:

  • 2-ydin Intel -prosessori
  • 80GB SATA kiintolevy
  • Optinen DVD-asema
  • 2GB DDR2 RAM -muistia
  • Mobiili ATI -näytönohjain
  • Intelin valmistama verkkokortti jossa WLAN

Latasin Ubuntun kotisivuilta Ubuntu 10.04 LTS (Long-term Support) 32-bittisen levykuvan. Latauksessa kesti noin 10 minuuttia vaihtelevalla nopeudella (200 – 800 kbps). Tiedoston tallensin oletuskansioon eli Downloads tai Lataukset -kansioon.

Poltossa käytin ImgBurn 2.5.5.0 -versiota. CD-levy oli Sonyn valmistama CD-R -levy. Poltossa kesti noin kolme minuuttia (15:00-15:03) ja varmistus noin minuutin. Polton aikana ei ollut mitään ongelmia.

Boot Order eli käynnistysjärjestystä piti säätää, koska ensimmäisenä oli (ilman mitään syytä) Floppy Drive, jota pöytäkoneessa ei edes ollut. Tämä tapahtui käynnistyksen yhteydessä painamalla BIOS -ruudun aikana Del -näppäintä. Boot Order kun oli säädetty oikein, eli käynnistämään ensiksi CD tai DVD -levyltä jos se on mahdollista, painamalla F10:ntä sain tallennettua muutokset ja siirtymään käynnistykseen. Tässä vaiheessa Ubuntu -levy oli jo CD-asemassa.

Ubuntu 10.04 LTS käynnisty liveCD -tilassa paljolti ongelmitta. Käynnistyksessä kesti noin 4 minuuttia. Testasin luonnollisesti hiiren, näppäimistön, äänet ja internetin toimivuuden, ja missään näistä ei ilmennyt ongelmia. Ainoa ongelma oli näytön resoluution kanssa. Näytön natiiviresoluutio oli 1920×1080, mutta kuvaruudun resoluutio livecd -tilassa oli 860×640. Kysyin asiasta kokeneemmilta Linux -käyttäjiltä, ja minulle kerrottiin asian johtuvan mahdollisesti livecd -tilan puutteellisesta tuesta näyttöni natiiviresoluutiolle. Kokeilin Ubuntu -levyä toisessa koneessa, vanhassa laptopissa, ja siinä Ubuntu toimi liveCD -tilassa laptopin näytön natiiviresoluutiolla.

Lähteet: