<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fi">
	<id>https://www.linux.fi/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Apdeit</id>
	<title>Linux.fi - Käyttäjän muokkaukset [fi]</title>
	<link rel="self" type="application/atom+xml" href="https://www.linux.fi/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Apdeit"/>
	<link rel="alternate" type="text/html" href="https://www.linux.fi/wiki/Toiminnot:Muokkaukset/Apdeit"/>
	<updated>2026-04-11T16:27:49Z</updated>
	<subtitle>Käyttäjän muokkaukset</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=OpenDocument-tiedoston_pelastaminen&amp;diff=47424</id>
		<title>OpenDocument-tiedoston pelastaminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=OpenDocument-tiedoston_pelastaminen&amp;diff=47424"/>
		<updated>2017-01-09T14:32:02Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: n-ajatusviiva korjattu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenOffice]]n, [[LibreOffice]]n, [[Lotus Symphony|IBM:n Symphonyn]] ja monen muun (paitsi MS Officen) käyttämä ISO-standardoitu [[OpenDocument]]-tiedostomuoto on käytännössä [[zip]]-pakattu kokoelma [[XML]]-tiedostoja. OpenDocument-tiedoston pääte on sisällöstä riippuen &amp;lt;tt&amp;gt;odt&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ods&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;odp&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos tiedosto jostain syystä korruptoituu siten, ettei LibreOffice pysty avaamaan sitä, voit yrittää pelastaa sen zip-ohjelman korjaustominnolla:&lt;br /&gt;
&lt;br /&gt;
 [[zip]] -FF asiakirja.odt&lt;br /&gt;
&lt;br /&gt;
Sisältä löytyvät XML-tekstitiedostot ja kuvat voi sitten tutkia käsin tekstieditorilla ja kuvankatseluohjelmalla.&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Signal_K&amp;diff=47423</id>
		<title>Signal K</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Signal_K&amp;diff=47423"/>
		<updated>2017-01-09T14:25:13Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: luokka:verkko&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Signal K&#039;&#039;&#039; on kehitteillä oleva merielektroniikan yhteyskäytäntö jonka tavoite on tarjota sama toiminnallisuus ip-protokollan välittämänä kuin CAN-pohjaiset NMEA-0183 ja NMEA-2000 väylät tarjoavat.&lt;br /&gt;
&lt;br /&gt;
Kehitysympäristö toimii Mac OS X:ssä ja Linux-jakeluissa. Ympäristöön liittyviä projekteja ovat https://github.com/SignalK ja [[CanBoat]]&lt;br /&gt;
&lt;br /&gt;
* [http://signalk.org signalk.org]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=.desktop&amp;diff=47421</id>
		<title>.desktop</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=.desktop&amp;diff=47421"/>
		<updated>2017-01-09T14:11:45Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Encoding on poistettu määrittelystä, Categories tuplana, https&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.desktop on tiedostomuoto, jota käytetään [[Unix]]-tyyppisissä käyttöjärjestelmissä kuvaamaan [[GUI|graafisessa]] ympäristössä esiintyviä linkkejä ohjelmistoihin, tavallisiin tiedostoihin tai verkkosijainteihin. Esimerkiksi [[työpöytäympäristö]]n valikossa tai työpöydällä olevat kuvakkeet ohjelmistoihin ovat tavallisesti .desktop-muodossa.&lt;br /&gt;
&lt;br /&gt;
[[symbolinen linkki|Symbolisista linkeistä]] poiketen .desktop-tiedostot voivat sisältää runsaasti linkin kohteeseen liittyvää [[wikipedia:fi:metatieto|metatietoa]], kuten tiedon sen kuvakkeena käytettävästi kuvatiedostosta, nimiä ja kommentteja eri kielillä, tietoa linkin luokittelusta esimerkiksi valikon sisällä ym. .desktop-tiedostoja ei toisaalta voi käyttää yleispätevinä linkkeinä sijainteihin, koska niitä ymmärtävät lähinnä työpöytäympäristöt ja muut korkeamman tason ohjelmistot.&lt;br /&gt;
&lt;br /&gt;
Teknisesti .desktop-tiedostot ovat [[UTF-8]]-koodattuja tekstitiedostoja, joita voidaan muokata millä tahansa [[tekstieditori]]lla. Tiedostopäätteena käytetään joko &amp;lt;tt&amp;gt;.desktop&amp;lt;/tt&amp;gt;ia tai käyttöliittymän (esimerkiksi valikon) hakemistoja kuvaavien tiedostojen osalta &amp;lt;tt&amp;gt;.directory&amp;lt;/tt&amp;gt;a. &lt;br /&gt;
&lt;br /&gt;
Työpöytäympäristöjen (pää)valikoissa olevien ohjelmalinkkien .desktop-tiedostot löytyvät [[hakemistorakenne|hakemistosta]] &amp;lt;tt&amp;gt;/usr/share/applications&amp;lt;/tt&amp;gt; ja näiden valikoiden sisältämiä hakemistoja (esim. &#039;&#039;Toimisto-ohjelmat&#039;&#039;) kuvaavat tiedostot hakemistosta &amp;lt;tt&amp;gt;/usr/share/desktop-directories&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Windows-maailman vastine .desktop-tiedostoille ovat yleisesti pikakuvakkeiksi kutsutut .lnk-tiedostot.&lt;br /&gt;
&lt;br /&gt;
==Rakenne==&lt;br /&gt;
.desktop-tiedoston sisällä voidaan määritellä eri kappaleita kirjoittamalla niiden nimi hakasulkeiden sisään. Tiedoston alussa on aina oltava jokin kappalemäärittely, yleensä &amp;lt;tt&amp;gt;[Desktop Entry]&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Muut tiedot määritellään muodossa &amp;lt;tt&amp;gt;Nimi=arvo&amp;lt;/tt&amp;gt;. Niitä voivat olla esimerkiksi:&lt;br /&gt;
*&#039;&#039;&#039;Type&#039;&#039;&#039; - linkin tyyppi, kuten &#039;&#039;Application&#039;&#039;, &#039;&#039;Link&#039;&#039;, &#039;&#039;Directory&#039;&#039; tai &#039;&#039;Service&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039; - nimi, kuten &#039;&#039;[[Konqueror]]&#039;&#039; tai &#039;&#039;Musiikki&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;GenericName&#039;&#039;&#039; - yleinen nimi, kuten &#039;&#039;www-selain&#039;&#039; tai &#039;&#039;kuvankäsittelyohjelma&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;NoDisplay&#039;&#039;&#039; - näytetäänkö linkki esimerkiksi valikossa vai ei, arvona voi olla &#039;&#039;true&#039;&#039; tai &#039;&#039;false&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;Comment&#039;&#039;&#039; - kommentti.&lt;br /&gt;
*&#039;&#039;&#039;Icon&#039;&#039;&#039; - [http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html kuvakkeena] käytettävä kuvatiedosto.&lt;br /&gt;
*&#039;&#039;&#039;Hidden&#039;&#039;&#039; - kertoo, onko käyttäjä poistanut linkin omassa käyttöliittymässään, &#039;&#039;true&#039;&#039; tai &#039;&#039;false&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;OnlyShowIn&#039;&#039;&#039;, &#039;&#039;&#039;NotShowIn&#039;&#039;&#039; - määrittelee, missä yhteyksissä linkki näytetään.&lt;br /&gt;
*&#039;&#039;&#039;TryExec&#039;&#039;&#039; - ohjelmatiedoston nimi tai polku sen varmistamiseksi, onko se ylipäänsä ajettavissa.&lt;br /&gt;
*&#039;&#039;&#039;Exec&#039;&#039;&#039; - ajettava komento mahdollisine [[valitsin|valitsimineen]] ym.&lt;br /&gt;
*&#039;&#039;&#039;Path&#039;&#039;&#039; - ohjelman ajossa käytettävä [[työhakemisto]].&lt;br /&gt;
*&#039;&#039;&#039;Terminal&#039;&#039;&#039; - onko ohjelma tarkoitettu ajettavaksi [[terminaaliemulaattori]]ssa vai ei, arvona &#039;&#039;true&#039;&#039; tai &#039;&#039;false&#039;&#039;.&lt;br /&gt;
*&#039;&#039;&#039;MimeType&#039;&#039;&#039; - ohjelman tukemat [[wikipedia:fi:MIME|MIME]]-tyypit.&lt;br /&gt;
*&#039;&#039;&#039;Categories&#039;&#039;&#039; - linkin luokittelu esimerkiksi valikoissa.&lt;br /&gt;
*&#039;&#039;&#039;StartupNotify&#039;&#039;&#039; - näytetäänkö ilmoitus ohjelman käynnistymisestä (esimerkiksi pomppiva kursori).&lt;br /&gt;
*&#039;&#039;&#039;StartupWMClass&#039;&#039;&#039; - käynnistettävän ikkunan luokka [[ikkunointiohjelma]]ssa.&lt;br /&gt;
*&#039;&#039;&#039;URL&#039;&#039;&#039; - [[URL]]-osoite, mikäli linkki viittaa etäsijaintiin.&lt;br /&gt;
&lt;br /&gt;
Esimerkki [[Tux Paint]]iin viittaavan .desktop-tiedoston sisällöstä (käännöksiä sisältäviä osuuksia on lyhennetty tilan säästämiseksi):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cfg&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Tux Paint&lt;br /&gt;
Name[fi]=Tux Taiteilija&lt;br /&gt;
Type=Application&lt;br /&gt;
Exec=tuxpaint&lt;br /&gt;
Icon=tuxpaint&lt;br /&gt;
Terminal=false&lt;br /&gt;
Categories=Education;Art;&lt;br /&gt;
GenericName=Drawing program&lt;br /&gt;
GenericName[fi]=Maalausohjelma&lt;br /&gt;
Comment=A drawing program for children&lt;br /&gt;
Comment[fi]=Maalausohjelma lapsille&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Muita käyttötarkoituksia==&lt;br /&gt;
.desktop-tiedostoja käytetään linkkien määrittelyn ohella myös puhtaina metatietovarastoina. Esimerkiksi hakemiston &amp;lt;tt&amp;gt;/usr/share/locale/l10n&amp;lt;/tt&amp;gt; alta löytyy .desktop-tiedostoja, joita käytetään [[kotoistus|kotoistukseen]] liittyvien tietojen tallentamiseen.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[Symbolinen linkki]]&lt;br /&gt;
*[[Kova linkki]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://standards.freedesktop.org/desktop-entry-spec/latest/ .desktop-tiedostojen määrittely freedesktop.orgissa]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Tiedostomuodot]]&lt;br /&gt;
[[Luokka:Järjestelmä]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian-paketin_tekeminen&amp;diff=47379</id>
		<title>Debian-paketin tekeminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian-paketin_tekeminen&amp;diff=47379"/>
		<updated>2016-12-26T11:21:47Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Ak: Ohjaus sivulle Deb-paketin tekeminen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#OHJAUS [[Deb-paketin tekeminen]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=47378</id>
		<title>Deb-paketin tekeminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=47378"/>
		<updated>2016-12-26T11:20:53Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: /* Aiheesta muualla */ Pragmatic Debian Packaging&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Debian]]issa ja siihen pohjautuvissa jakeluissa (esim. [[Ubuntu]]ssa ja [[Linux Mint]]issä) käytetään [[Dpkg]]-paketinhallintajärjestelmää. Dpkg:ssa paketit ovat &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-tiedostoja, jotka sisältävät itse ohjelman lisäksi mm. tiedot paketin riippuvuuksista ja siitä, mihin ohjelma asennetaan. Deb-pakettien tekeminen ei ole mitenkään ylivoimainen tehtävä, kunhan perusasiat ja mm. [[komentorivi|komentorivin käyttö]] ovat hallussa.&lt;br /&gt;
&lt;br /&gt;
Tässä oppaassa luodaan aluksi malliksi yksinkertainen paketti [http://www.gnu.org/software/hello/ GNU Hello] -ohjelmasta, joka on [[GNU]]-projektin esimerkkiohjelma. Ohjelman lähdekoodipaketin voi ladata [http://ftp.gnu.org/gnu/hello/ GNU:n palvelimelta]. Paketin luomisessa käytetään tässä apuna Debhelper-apuohjelmaa (&amp;lt;tt&amp;gt;dh&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Debianin eri versiosta löytyvän paketin voi kääntää käytetylle versiolle sopivaksi tai pakettiin tehdä pieniä muutoksia huomattavasti helpommin kuin tätä ohjetta seuraamalla, komennoilla &amp;lt;tt&amp;gt;apt-get build-dep paketti&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;apt-get source paketti&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;dpkg-deb -build pakettihakemisto&amp;lt;/tt&amp;gt;, jolloin muutokset tehdään viimeksi mainittujen välissä (varsinainen muutos + uusi kohta tiedostoon &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;). Jos paketti tehdään valmiista Debianin lähdekoodipaketista, kääntämisen binääripaketiksi voi hoitaa paketin hakemisen yhteydessä komennolla &amp;lt;tt&amp;gt;apt-get --compile source paketti&amp;lt;/tt&amp;gt;. Lisätietoja näistä komennoista löytyy artikkeleista [[apt-get]] ja [[dpkg]].&lt;br /&gt;
&lt;br /&gt;
== Valmistelut ==&lt;br /&gt;
Aluksi on hyvä asentaa muutamia perustyökaluja, jotka sisältävät paketointityössä tarvittavia tai valinnaisia apuohjelmia. Asenna siis seuraavat paketit (&amp;lt;tt&amp;gt;[[APT#apt|apt]] install &amp;lt;i&amp;gt;paketit&amp;lt;/i&amp;gt;&amp;lt;/tt&amp;gt;):&lt;br /&gt;
 dpkg-dev autoconf dh-make devscripts [[fakeroot]] [[Gpg|gnupg]] build-essential lintian libtool automake pbuilder&lt;br /&gt;
&lt;br /&gt;
Kun paketit on asennettu, lataa Hello-ohjelman lähdekoodi ja [[tar|pura]] se työhakemistoosi (&amp;lt;code&amp;gt;tar xzvf &#039;&#039;tiedosto&#039;&#039;&amp;lt;/code&amp;gt;). Nyt sinulla pitäisi olla työhakemistossasi tiedosto &amp;lt;tt&amp;gt;hello-2.10.tar.gz&amp;lt;/tt&amp;gt; ja hakemisto &amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Paketoinnin aloitus ==&lt;br /&gt;
Aluksi kannattaa kokeilla, että saat ohjelman [[Kääntäminen|käännettyä]] ja ajettua. Sinun pitäisi jo osata tehdä tämä, jos luet tätä opasta, mutta lyhykäisyydessään voit asentaa Hellon hakemistoon &amp;lt;tt&amp;gt;~/hello&amp;lt;/tt&amp;gt; seuraavasti:&lt;br /&gt;
 ./configure --prefix=/home/käyttäjä/hello&lt;br /&gt;
 [[make]]&lt;br /&gt;
 make install&lt;br /&gt;
Nyt hakemistosta ~/hello pitäisi löytyä alihakemistot bin ja share, joissa Hellon tiedostot ovat.&lt;br /&gt;
&lt;br /&gt;
Putsaa nyt hakemisto, jossa käänsit Hellon komennolla&lt;br /&gt;
 make distclean&lt;br /&gt;
Nyt jos ohjelma kääntyi oikein, voimme aloittaa itse paketin tekemisen.&lt;br /&gt;
&lt;br /&gt;
=== Pohja ===&lt;br /&gt;
Siirry ohjelman hakemistoon (hello-2.10) ja aja komento&lt;br /&gt;
 dh_make -e sinun@sähköpostiosoitteesi -f ../hello-2.10.tar.gz&lt;br /&gt;
Toinen parametri on siis paketin tekijän sähköpostiosoite ja neljäs alkuperäinen lähdekooditiedosto. Ohjelma kysyy aluksi, minkätyyppistä pakettia olemme luomassa:&lt;br /&gt;
 Type of package: (single, indep, library, python)&lt;br /&gt;
 [s/i/l/p]?&lt;br /&gt;
Vastaa tähän s (&#039;&#039;single binary&#039;&#039;), sillä olemme luomassa yksinkertaista yhden ohjelman käsittävää pakettia. Tämän jälkeen vahvista tiedot enterillä, jonka jälkeen dh_make luo hakemistoon &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-alihakemiston, joka sisältää tiedostot, joiden perusteella varsinainen paketti luodaan. Se myös luo ylähakemistoon tiedoston &amp;lt;tt&amp;gt;paketti_versio.orig.tar.gz&amp;lt;/tt&amp;gt;, tässä tapauksessa siis &amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt;, joka sisältää alkuperäisen lähdekoodipaketin.&lt;br /&gt;
&lt;br /&gt;
Huomaa, että &amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; kuuluu ajaa vain kerran! Tulevien muutosten pohjalla käytetään paketin olemassa olevaa &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-kansiota, eikä dh_makea siis tarvitse ajaa uudelleen.&lt;br /&gt;
&lt;br /&gt;
== Asennushakemisto ==&lt;br /&gt;
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon &amp;lt;tt&amp;gt;debian/hello/usr/bin/hello&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Muiden muassa [[Autoconf]]ia, [[CMake]]a ja [[QMake]]a käyttävien pakettien kanssa paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin &amp;lt;tt&amp;gt;--prefix=/hakemisto/jonne/ohjelma/asennetaan&amp;lt;/tt&amp;gt;. Paketointiapuohjelma antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.&lt;br /&gt;
&lt;br /&gt;
Joskus, kun ohjelman kääntäminen ei suju Debhelperiltä automaattisesti, asennushakemistosta on huolehdittava itse. Tämä tulee eteen kun myöhemmin muokkaamme tiedostoa &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Asetustiedostot ==&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; loi &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemiston, joka sisältää monia tiedostoja, joiden perusteella itse paketti luodaan. Tässä vaiheessa on käytävä ne läpi ja muokattava sopiviksi.&lt;br /&gt;
&lt;br /&gt;
=== control ===&lt;br /&gt;
Tiedostossa &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt; kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: &amp;lt;insert the upstream URL, if relevant&amp;gt;&lt;br /&gt;
Vcs-Git: git://anonscm.debian.org/collab-maint/hello.git&lt;br /&gt;
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: &amp;lt;insert up to 60 chars description&amp;gt;&lt;br /&gt;
 &amp;lt;insert long description, indented with spaces&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Riveillä 1–9 on &#039;&#039;lähdekoodipaketin&#039;&#039; (engl. &#039;&#039;source&#039;&#039;) perustiedot:&lt;br /&gt;
* Rivillä 1 on lähdekoodipaketin nimi&lt;br /&gt;
* Rivillä 2 kerrotaan, mihin osioon paketti kuuluu. Debianissa paketit osioihin, joita ovat mm. &#039;&#039;main&#039;&#039; (vapaat ohjelmat), &#039;&#039;non-free&#039;&#039; (ohjelmat, jotka eivät ole vapaita) ja &#039;&#039;contrib&#039;&#039; (ohjelmat, jotka riippuvat vapaista ohjelmista). Nämä ohjelmat on yhä jaettu pienempiin osioihin, kuten &#039;&#039;devel&#039;&#039; (kehitystyökalut) ja &#039;&#039;mail&#039;&#039; (sähköpostiohjelmat). Hellolle sopiva osio voisi olla &#039;&#039;text&#039;&#039;. Osiot on listattu [http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections Debian policyssä].&lt;br /&gt;
* Kolmannella rivillä kerrotaan, kuinka tärkeää käyttäjälle on asentaa tämä paketti. Vaikka &amp;quot;Terve maailma!&amp;quot; -viestin tulostava ohjelma voi tuntua tärkeältä, ehkäpä se ei kuitenkaan ole yhtä tärkeä kuin vaikka ydin, joten asetetaan sen tärkeysasteeksi &#039;&#039;optional&#039;&#039;, jota käytetään useimmille paketeille.&lt;br /&gt;
* Neljännellä rivillä on paketin tekijän nimi ja sähköpostiosoite&lt;br /&gt;
* Rivillä 5 listataan pilkulla erotettuna paketit, jotka tarvitaan tämän paketin kääntämiseen. Jos ohjelmasta on oltava tietty versio, haluttu versio voidaan ilmoittaa sulkeissa (esimerkissä tarvitaan &#039;&#039;debhelper&#039;&#039;-paketin versio 9 tai uudempi). Käytännössä aina tarvittavia paketteja (esim. gcc ja make) ei tarvitse luetella, sillä ne otetaan mukaan automaattisesti. Kuitenkin kaikki muut kääntämisessä tarvittavat vähänkin harvinaisemmat paketit on lueteltava. Tässä vaiheessa voitaisiin myös samalla tavalla luetella paketit, jotka estävät kääntämisen (&#039;&#039;Build-Conflicts: paketti1, paketti2&#039;&#039;). Hello on sen verran helppo kääntää, ettei meidän tarvitse nyt lisätä tähän mitään ylimääräisiä paketteja.&lt;br /&gt;
* Rivillä 6 kerrotaan, minkä &#039;&#039;Debian Policy&#039;&#039; -standardin version mukainen paketti on. Tähän ei tarvitse koskea.&lt;br /&gt;
* Riville 7 kirjoitetaan ohjelman kotisivu.&lt;br /&gt;
* Riveillä 8 ja 9 voidaan kertoa, missä [[versionhallintajärjestelmä]]ssä debian-pakettia ylläpidetään. Me voimme poistaa nämä rivit, koska emme tässä käytä versionhallintaa.&lt;br /&gt;
&lt;br /&gt;
Riveillä 11–15 on &#039;&#039;binääripaketin&#039;&#039; tiedot:&lt;br /&gt;
* Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi.&lt;br /&gt;
* Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon &amp;quot;any&amp;quot;, jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. jos se on ohjepaketti tai [[Perl]]- tai [[Python]]-skripti), arkkitehtuuriksi laitetaan &amp;quot;all&amp;quot;.&lt;br /&gt;
* Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. &amp;quot;&#039;&#039;${shlibs:Depends}&#039;&#039;&amp;quot; aiheuttaa sen, että pakettia luotaessa pyritään riippuvuuksiksi lisäämään automaattisesti ne paketit, joiden tiedostoja vasten tämän paketin konekieliset tiedostot on linkitetty.&lt;br /&gt;
* Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedosto voisi näyttää tältä:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: text&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: https://www.gnu.org/software/hello/&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: Hello world -ohjelma&lt;br /&gt;
 Klassinen Hello world -ohjelma, jonka avulla opettelemme &lt;br /&gt;
 deb-pakettien tekemistä.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin ====&lt;br /&gt;
Riippuvuuksien lisäksi paketti voi myös suositella jonkin toisen paketin asentamista, tai se voi myös kieltäytyä asentumasta samaan järjestelmään jonkin toisen paketin kanssa (ristiriita toisen paketin kanssa, engl. &#039;&#039;conflict&#039;&#039;). Tällaiset paketit esitellään &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedostossa samaan tapaan kuin riippuvuudet. &lt;br /&gt;
&lt;br /&gt;
Riippuvuuksien lisäksi apt tukee seuraavia suhteita pakettien välillä:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Recommends&amp;lt;/tt&amp;gt;: Suositeltavat paketit. Yleensä paketteja, joita käytetään käytännössä aina tämän paketin kanssa. Esim. [[aptitude]] asentaa nämä automaattisesti, apt vain suosittelee.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Suggests&amp;lt;/tt&amp;gt;: Muita tämän paketin kanssa hyviä paketteja. Monet apt:n edustaohjelmat (kuten aptitude) näyttävät tämän listan, apt ei.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Pre-Depends&amp;lt;/tt&amp;gt;: Vahvempi kuin Depends. Vaatii, että paketit on asennettu ja otettu käyttöön ennen kuin suostuu asentamaan tämän paketin. Käytetään erittäin harvoin.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Conflicts&amp;lt;/tt&amp;gt;: Paketit, joiden kanssa samaan järjestelmään tätä pakettia ei voida asentaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Provides&amp;lt;/tt&amp;gt;: Mitkä virtuaaliset paketit tämä paketti toteuttaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Replaces&amp;lt;/tt&amp;gt;: Paketit, jotka tämä paketti korvaa.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi pakettimme nyt vaatisi paketin &#039;&#039;foo&#039;&#039; version 2.3 tai uudemman, paketti &#039;&#039;bar&#039;&#039; olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä &#039;&#039;libfoo&#039;&#039;:n kanssa, voisimme lisätä seuraavat rivit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}, foo (&amp;gt;= 2.3)&lt;br /&gt;
Recommends: bar&lt;br /&gt;
Conflicts: libfoo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vastaavasti on mahdollista asettaa myös lähdekoodipaketille &#039;&#039;Build-Conflicts&#039;&#039; ja muut vastaavat suhteet.&lt;br /&gt;
&lt;br /&gt;
=== copyright ===&lt;br /&gt;
Paketin tekijänoikeuksista kerrotaan tiedostossa &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;. Tämän tiedoston muoto on periaatteessa vapaa, mutta kannattaa seurata [https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Machine-readable debian/copyright file] -standardia. Hyvän tiedoston saa muokkaamalla dh_maken luomaa. Tässä tiedostosta tulee käydä ilmi paketin luoja, alkuperäinen tekijä ja ohjelman tekijänoikeustiedot (esim. [[GPL]]-lisenssin version 3 tai myöhemmän alainen).&lt;br /&gt;
&lt;br /&gt;
=== changelog ===&lt;br /&gt;
dh_make luo seuraavanlaisen pohjan &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostolle: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 hello (2.10-1) unstable; urgency=medium&lt;br /&gt;
2&lt;br /&gt;
3   * Initial release (Closes: #nnnn)  &amp;lt;nnnn is the bug number of your ITP&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
4  -- Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;  Fri, 29 Jul 2016 11:42:23 +0300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rivillä 1 on aluksi lähdekoodipaketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (&#039;&#039;urgency&#039;&#039;), yleensä &amp;quot;medium&amp;quot; on sille oikea arvo.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen seuraavilla riveillä on itse muutosloki (engl. &#039;&#039;changelog&#039;&#039;). Rivin alussa on kaksi välilyöntiä ja tähti (*). Viimeisenä (rivillä 4) on tieto paketin tekijästä ja tekoajankohdasta (esimerkin mukaisessa muodossa). Tämän rivin alussa on yksi välilyönti.&lt;br /&gt;
&lt;br /&gt;
Yleensä paketteihin tehdyt muutokset korjaavat joitain vianhallintajärjestelmään ilmoitettuja vikoja (bugeja). Jos paketti korjaa jonkin ilmoitetun vian, se ilmoitetaan muutoslokissa. Jos paketti esimerkiksi korjaa Debianin vianseurantajärjestelmän bugin numero 123456, tulee muutoslokissa esiintyä merkkijono &amp;lt;tt&amp;gt;Closes: #123456&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Muutoslokia pystyy muokkaamaan joko muokkaamalla tekstitiedostoa suoraan tai käyttämällä [[dch]]-komentoa (tai sen pidempää muotoa, komentoa &amp;lt;tt&amp;gt;debchange&amp;lt;/tt&amp;gt;). Sopivan pohjan uudelle muutokselle saa luotua komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Tämä avaa muutoslokin &amp;lt;tt&amp;gt;EDITOR&amp;lt;/tt&amp;gt;-[[ympäristömuuttuja]]ssa asetettuun tekstieditoriin. Muutoksen tekijän nimi haetaan ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBFULLNAME&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;NAME&amp;lt;/tt&amp;gt; ja sähköpostiosoite ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBEMAIL&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;EMAIL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== rules ===&lt;br /&gt;
Tiedosto &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt; on [[Makefile]]n tapainen tiedosto, jonka perusteella varsinainen paketti luodaan. Tämän tiedoston perusteella ohjelma käännetään ja asennetaan hakemistoon &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, tässä tapauksessa &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;. Tähän hakemistoon asentuvien tiedostojen perusteella luodaan varsinainen paketti.&lt;br /&gt;
&lt;br /&gt;
Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/make -f&lt;br /&gt;
# See debhelper(7) (uncomment to enable)&lt;br /&gt;
# output every command that modifies files on the build system.&lt;br /&gt;
#export DH_VERBOSE = 1&lt;br /&gt;
&lt;br /&gt;
# see FEATURE AREAS in dpkg-buildflags(1)&lt;br /&gt;
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all&lt;br /&gt;
&lt;br /&gt;
# see ENVIRONMENT in dpkg-buildflags(1)&lt;br /&gt;
# package maintainers to append CFLAGS&lt;br /&gt;
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic&lt;br /&gt;
# package maintainers to append LDFLAGS&lt;br /&gt;
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed&lt;br /&gt;
&lt;br /&gt;
%:&lt;br /&gt;
	dh $@ --with autotools_dev&lt;br /&gt;
&lt;br /&gt;
# dh_make generated override targets&lt;br /&gt;
# This is example for Cmake (See https://bugs.debian.org/641051 )&lt;br /&gt;
#override_dh_auto_configure:&lt;br /&gt;
#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos tiedoston syntaksi on epäselvä, katso artikkeli [[Makefile]]. Suurin osa tiedoston sisällöstä on #-merkillä alkavia kommentteja, poikkeuksena kuitenkin ensimmäinen rivi, joka on erityinen [[wikipedia:en:Shebang (Unix)|#!-rivi]].&lt;br /&gt;
&lt;br /&gt;
Rivien 6–7 &amp;quot;hardening&amp;quot; viittaa [https://wiki.debian.org/Hardening#Environment_variables Debianin käyttöön ottamiin GCC-valitsimiin], joiden avulla voitaisiin estää mm. tietyntyyppisiä tietomurtoja.&lt;br /&gt;
&lt;br /&gt;
Riveillä 9–13 asetetaan käännösoptiot, jos niitä tarvitsee erikseen määritellä. Esimerkiksi [[gcc|C-kääntäjän]] käännösparametrit laitetaan muuttujaan DEB_CFLAGS_MAINT_APPEND, C++-kääntäjän muuttujaan DEB_CXXFLAGS_MAINT_APPEND ja linkittäjän ([[ld]]) muuttujaan DEB_LDFLAGS_MAINT_APPEND.&lt;br /&gt;
&lt;br /&gt;
Rivillä 15 oleva Makefilen jokerimerkki (engl. &#039;&#039;wildcard&#039;&#039;) &#039;&#039;&#039;%&#039;&#039;&#039; tarkoittaa, että kun kutsutaan &amp;lt;tt&amp;gt;debian/rules &#039;&#039;build&#039;&#039;&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;debian/rules &#039;&#039;binary&#039;&#039;&amp;lt;/tt&amp;gt;, make suorittaa rivin 16 mukaan komennon &amp;lt;tt&amp;gt;dh &#039;&#039;build&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;dh &#039;&#039;binary&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt;. Komento &amp;lt;tt&amp;gt;dh build&amp;lt;/tt&amp;gt; taas puolestaan suorittaa pitkän listan erilaisia dh-alkuisia ohjelmia, jotka ovat debhelperin funktiokutsuja, jotka tekevät erilaisia pieniä operaatioita rakentaen pakettia. Mm. seuraavia funktioita on tarjolla:&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Komento&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Kuvaus&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testdir&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että ollaan oikeassa hakemistossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testroot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että meillä on pääkäyttäjän oikeudet kun niitä tarvitaan&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_configure&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa ./configure:n tai vastaavan vaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_build&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Kääntää paketin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa make installin tai vastaavan asentamisvaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_strip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Ajaa [[strip]]-komennon suoritettaville tiedostoille, jolloin niiden koko pienenee&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_compress&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Pakkaa [[gzip]]illä [[man]]-sivut ja ohjetiedostot, joiden koko ylittää 4kt&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_gencontrol&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Luo binääripaketille &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston ja kopioi sen hakemistoon &amp;lt;tt&amp;gt;debian/hello/DEBIAN&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_md5sums&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Laskee [[md5sum|MD5]]-tarkistussummat paketin tiedostoille&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Jos ohjelma ei asenna kaikkia tarpeellisia tiedostoja oikeisiin hakemistoihin autoconfin avulla (esim. komennolla &amp;lt;tt&amp;gt;make install&amp;lt;/tt&amp;gt;), voi käyttää tätä apufunktiota, jolle kerrotaan asennettavat tiedostot ja hakemistot &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;.install&amp;lt;/tt&amp;gt;-tiedostossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installchangelog&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa muutoslokin polkuun &amp;lt;tt&amp;gt;/usr/share/doc/package/changelog&amp;lt;/tt&amp;gt;. Jos komennolle annetaan parametrina paketin mukana tulevan muutoslokin tiedostonimi, asennetaan myös se.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_shlibdeps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Määrittää paketin riippuvuuksia binääritiedostoihin linkitettyjen kirjastotiedostojen perusteella&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installdocs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa &amp;lt;tt&amp;gt;debian/docs&amp;lt;/tt&amp;gt;-tiedostossa listatut tiedostot ja mm. &amp;lt;tt&amp;gt;debian/README.debian&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;-tiedostot polkuun &amp;lt;tt&amp;gt;/usr/share/doc/paketti&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Taulukossa on vain osa dh-funktioista, loput ovat man-sivulla debhelper(7). Rules-tiedostossamme viimeisenä on esimerkki &#039;&#039;override targetista&#039;&#039;, jollainen ajetaan vastaavan dh-ohjelman sijasta.&lt;br /&gt;
&lt;br /&gt;
Jos paketti ei jotain yleisistä käännösjärjestelmistä (kuten Ant, GNU Autotools, CMake, QMake tai tavallinen Makefile), on &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt; muokattava sellaiseksi, että ohjelma kääntyy ja asentuu polkuun &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;&amp;lt;/tt&amp;gt;. Se, miten kääntäminen tapahtuu, riippuu ohjelmasta. Funktion &amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt; avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binääripaketissa.&lt;br /&gt;
&lt;br /&gt;
=== compat ===&lt;br /&gt;
Tässä tiedostossa ilmoitamme, mitä versiota debhelperistä paketista käytetään. Kirjoitushetkellä viimeisin vakaa versio on 9.&lt;br /&gt;
&lt;br /&gt;
=== source/format ===&lt;br /&gt;
Tätä tiedostoa ei tarvitse muuttaa. Sen sisältö on:&lt;br /&gt;
 3.0 (quilt)&lt;br /&gt;
Quilt viittaa [[#Patchit|patchien hallintaan]] käyttämäämme ohjelmaan. 3.0:n merkityksestä voi lukea tarkemmin Debian Wikin artikkelista [https://wiki.debian.org/Projects/DebSrc3.0 DebSrc3.0].&lt;br /&gt;
&lt;br /&gt;
=== .ex-päätteiset tiedostot ===&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; luo &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistoon monia .ex-päätteisiä tiedostoja. Näitä tiedostoja muokkaamalla on mahdollista esimerkiksi saada paketti lisäämään tehtäviä [[cron]]ille ja kuvakkeen työpöytäympäristön valikkoon.&lt;br /&gt;
&lt;br /&gt;
Oletuksena .ex-päätteisiä tiedostoja ei huomioida. Jos haluat käyttää niitä, muokkaa tiedosto ensin sopivaksi ja poista tiedostonimestä tämän jälkeen .ex-pääte. Lisäksi tarkista, että sopivaa funktiota kutsutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa.&lt;br /&gt;
&lt;br /&gt;
Poista ne .ex-tiedostot, joita et tarvitse. Hellon tapauksessa emme tarvitse näitä. Seuraavassa esitellään kuitenkin muutamia yleisimmin käytettyjä tiedostoja joita luultavasti tulet joskus tarvitsemaan:&lt;br /&gt;
&lt;br /&gt;
==== cron.d ====&lt;br /&gt;
Tiedostoon &amp;lt;tt&amp;gt;cron.d&amp;lt;/tt&amp;gt; kirjoitetaan rivit, jotka halutaan lisätä &amp;lt;tt&amp;gt;cron&amp;lt;/tt&amp;gt;-järjestelmään. Rivit kirjoitetaan samassa muodossa kuin missä cronille annetaan suoritettavia tehtäviä. Katso lisätietoja artikkelista [[cron]].&lt;br /&gt;
&lt;br /&gt;
==== init.d ====&lt;br /&gt;
[[init]]-skripti, joka asennetaan polkuun &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedoston komennolla &amp;lt;tt&amp;gt;dh_installinit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== manpage.1 ====&lt;br /&gt;
Ohjelman [[man]]-sivu. Pisteen jälkeen oleva numero kertoo, mihin kategoriaan man-sivu asennetaan (kategoriat on listattu artikkelissa [[man]]). Man-sivu asennetaan paikoilleen &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa olevalla komennolla &amp;lt;tt&amp;gt;dh_installman debian/mansivu.1&amp;lt;/tt&amp;gt;. Tiedoston nimi on yleensä muotoa &amp;lt;tt&amp;gt;paketinnimi.numero&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== watch ====&lt;br /&gt;
Kertoo &amp;lt;tt&amp;gt;uscan&amp;lt;/tt&amp;gt;-ohjelmalle, miten paketin uudet versiot voi ladata internetistä. Lisätietoja tiedostomuodosta: &amp;lt;code&amp;gt;man 1 uscan&amp;lt;/code&amp;gt; ja [https://wiki.debian.org/debian/watch Debian Wiki]. Watch-tiedosto mahdollistaa lähdekoodipaketin helpon päivittämisen aina uusimpaan versioon.&lt;br /&gt;
&lt;br /&gt;
[[GNU]]:n projekteille, jollainen Hellokin on, toimii seuraavanlainen watch-tiedosto:&lt;br /&gt;
 version=4&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://ftp.gnu.org/gnu/@PACKAGE@/&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
    @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate&lt;br /&gt;
&lt;br /&gt;
== Tehdään paketti! ==&lt;br /&gt;
Nyt kun tarvittavat tiedostot on lopulta muokattu sopiviksi, on aika luoda varsinainen paketti. Siirry ohjelman päähakemistoon (&amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;) ja aja komento&lt;br /&gt;
 debuild&lt;br /&gt;
joka tekee seuraavat asiat:&lt;br /&gt;
*Siistii paketin (ajaa [[make]]lla komennon &amp;lt;tt&amp;gt;debian/rules clean&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Kääntää ohjelman (&amp;lt;tt&amp;gt;debian/rules build&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Luo binääripaketin (&amp;lt;tt&amp;gt;debian/rules binary&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Allekirjoittaa .dsc-tiedoston [[gpg|gnupgllä]]&lt;br /&gt;
*Luo ja allekirjoittaa .changes-tiedoston&lt;br /&gt;
*Käyttää [[fakeroot]]ia, jolloin pääkäyttäjän oikeuksia ei tarvita&lt;br /&gt;
Allekirjoitus vaatii, että olet luonut [[gpg]]:llä itsellesi avaimen. Tällöin sinulta kysytään avaimesi salasanaa.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen, jos kaikki sujui ilman virheitä, ylähakemistosta pitäisi löytyä seuraavat tiedostot:&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.build&amp;lt;/tt&amp;gt; – kääntämisloki (&#039;&#039;build log&#039;&#039;)&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.changes&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu tiedosto, joka sisältää paketin muutoslokin (&amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;) ja pakettiin liittyvien tiedostojen [[SHA]]1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.deb&amp;lt;/tt&amp;gt; – lopullinen deb-paketti!&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.debian.tar.xz&amp;lt;/tt&amp;gt; – &amp;lt;tt&amp;gt;debian-hakemiston&amp;lt;/tt&amp;gt; sisältö [[xz]]-pakattuna tar-arkistona&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.dsc&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston kaltainen tiedosto, jossa on listattu lähdekooditiedoston ja diff-tiedoston SHA1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt; – alkuperäinen lähdekoodi&lt;br /&gt;
&lt;br /&gt;
Nyt lopullinen paketti voidaan asentaa [[dpkg]]:llä:&lt;br /&gt;
 dpkg -i hello_2.10-1_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Kun myöhemmin teet muutoksia pakettiin, voit luoda uuden paketin nopeasti komennolla&lt;br /&gt;
 fakeroot debian/rules binary&lt;br /&gt;
joka ei kuitenkaan käännä ohjelmaa alusta lähtien (tärkeää huomata, jos muutat lähdekoodia).&lt;br /&gt;
&lt;br /&gt;
=== Lähdekoodipaketti ===&lt;br /&gt;
Edellä teimme tavallisen ns. &#039;&#039;binääripaketin&#039;&#039;, joka sisältää valmiiksi käännetyn ohjelman. Monesti on tarpeen tehdä myös lähdekoodipaketti, joka sisältää pakettiin ja sen kääntämiseen ja asentamiseen liittyvät tiedot (&amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto) ja ohjelman lähdekoodin. Tällöin paketti on mahdollista kääntää ja asentaa jokaiselle sopivalle alustalle kun taas käännetty &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-paketti toimii vain yhdellä alustalla (esim. amd64, i386 tai armhf).&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketteja käytetään etenkin kun paketti julkaistaan esimerkiksi lisäämällä se jonkin jakelun virallisiin pakettilähteisiin. Tällöin kehittäjä yleensä vain lähettää palvelimelle lähdekoodipaketin, jonka palvelin sitten kääntää useille eri arkkitehtuureille.&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketti luodaan ajamalla paketin päähakemistossa komento&lt;br /&gt;
 debuild -S -sa&lt;br /&gt;
Missä valitsin &amp;lt;tt&amp;gt;-S&amp;lt;/tt&amp;gt; tarkoittaa, että luodaan lähdekoodipaketti ja &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt; sisällyttää pakettiin mukaan alkuperäisen lähdekooditiedoston (&amp;lt;tt&amp;gt;.orig.tar.gz&amp;lt;/tt&amp;gt;). Tällöin ylähakemistoon pitäisi ilmestyä samanlaisten tiedostojen kuin luotaessa binääripakettia, paitsi että varsinaista &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-pakettia ei ilmesty. &lt;br /&gt;
&lt;br /&gt;
Nyt lähdekoodipaketti koostuu näistä tiedostoista (&amp;lt;tt&amp;gt;paketti.dsc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;paketti.orig.tar.gz&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;paketti.debian.tar.xz&amp;lt;/tt&amp;gt;), ja sitä voidaan hallita esimerkiksi &amp;lt;tt&amp;gt;dpkg-source&amp;lt;/tt&amp;gt;-ohjelmalla. Jos esimerkiksi olet saanut jostain lähdekoodipaketin, voit purkaa ja kääntää seuraavasti&lt;br /&gt;
 dpkg-source -x paketti.dsc&lt;br /&gt;
 cd paketti&lt;br /&gt;
 debuild&lt;br /&gt;
&lt;br /&gt;
Ilman &amp;lt;tt&amp;gt;debuildin&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt;-valitsinta voi luoda paketin, joka ei sisällä alkuperäistä lähdekoodia. Tälle on käyttöä silloin, kun paketteja pidetään ulkopuolisessa pakettivarastossa ja uusi versio voidaan julkaista vain lähettämällä palvelimelle uusi lähdekoodipaketti ilman alkuperäistä lähdekoodia. Tällainen tilanne tulee eteen, kun paketista tehdään uusi versio joka ei muuta itse ohjelman lähdekoodia tai muuttaa sitä erillisellä &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedostolla (eli ohjelman tekijä ei ole julkaissut uutta versiota, mutta paketin tekijä tekee muutoksia joko itse ohjelmaan tai paketointiin).&lt;br /&gt;
&lt;br /&gt;
== Lintian: onnistuiko paketti? ==&lt;br /&gt;
Lintian on ohjelma, joka tarkistaa tekemäsi paketin laadun. Sille annetaan parametrina pakettia luotaessa syntynyt &amp;lt;tt&amp;gt;.changes&amp;lt;/tt&amp;gt;-päätteinen tiedosto. Yleensä kannattaa antaa myös valitsimet -E, -v, -i ja -I (iso &#039;&#039;i&#039;&#039;), jolloin lintian kertoo tarkemmin, mikä paketissa on vialla:&lt;br /&gt;
 lintian -EviI hello_2.10-1_amd64.changes&lt;br /&gt;
Tulosteessa E:-alkavat rivit tarkoittavat virhettä, W:-alkavat varoituksia ja N:-alkavat huomautuksia.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi et poistanut &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistosta &amp;lt;tt&amp;gt;.ex&amp;lt;/tt&amp;gt;-päätteisiä tiedostoja, lintian varoittaa niistä. Yleensä paketin tulisi olla sellainen, ettei lintian löydä siitä mitään valitettavaa.&lt;br /&gt;
&lt;br /&gt;
== Patchit ==&lt;br /&gt;
Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä.&lt;br /&gt;
&lt;br /&gt;
== Muut pakettityypit ==&lt;br /&gt;
===Multi-binary: Monta pakettia yhdestä lähdekoodipaketista ===&lt;br /&gt;
Joskus tulee eteen tilanne, jossa yksi ohjelma on jaettava useampaan eri pakettiin. Tällainen tilanne tulee eteen mm. silloin, kun paketoidaan suurta peliä: yleensä peleissä itse käännetty ohjelma vie murto-osan siitä tilasta, jonka pelin datatiedostot vievät. Jos koko ohjelma laitettaisiin yhteen pakettiin, käytettäisiin turhaan palvelimen levytilaa ja resursseja, kun samat alustariippumattomat datatiedostot kopioitaisiin jokaiselle arkkitehtuurille tehtyyn pakettiin. &lt;br /&gt;
&lt;br /&gt;
Toinen esimerkki tilanteesta, jossa ohjelman jakaminen moneen pakettiin on järkevää on ohjelma, jonka mukana tulee paljon (esimerkiksi jopa kymmeniä megatavuja) dokumentaatiota ja ohjeita.&lt;br /&gt;
&lt;br /&gt;
Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt;-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: extra&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Recommends: hello-doc&lt;br /&gt;
Description: Hello-ohjelma&lt;br /&gt;
 Klassinen hello-ohjelma, joka tulostaa tekstin&lt;br /&gt;
 hello world.&lt;br /&gt;
&lt;br /&gt;
Package: hello-doc&lt;br /&gt;
Architecture: all&lt;br /&gt;
Depends: hello&lt;br /&gt;
Description: Hellon ohjeet&lt;br /&gt;
 Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen muutetaan paketin asentamista (&amp;lt;tt&amp;gt;debian/install&amp;lt;/tt&amp;gt;) siten, että esimerkiksi pakettiin &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt; kuuluvat tiedostot asennettaisiin hakemistoon &amp;lt;tt&amp;gt;debian/hello/&amp;lt;/tt&amp;gt; ja paketin &amp;lt;tt&amp;gt;hello-doc&amp;lt;/tt&amp;gt;-tiedostot hakemistoon &amp;lt;tt&amp;gt;debian/hello-doc&amp;lt;/tt&amp;gt;. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun &amp;lt;tt&amp;gt;debian/hello/usr/bin/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos jokin Debhelperin komento (muotoa &amp;lt;tt&amp;gt;dh_jotain&amp;lt;/tt&amp;gt;) halutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa ajaa vain tietylle paketille, voidaan käyttää valitsinta &amp;lt;tt&amp;gt;--package&amp;lt;/tt&amp;gt; eli lyhyemmin &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt;, esimerkiksi komennolla&lt;br /&gt;
&amp;lt;source lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
override_dh_installinfo:&lt;br /&gt;
	dh_installinfo -phello&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
asennettaisiin [[info]]-tiedostot vain &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt;-pakettia luotaessa.&lt;br /&gt;
&lt;br /&gt;
== Pbuilder ==&lt;br /&gt;
Pbuilder on järjestelmä, joka kääntää ja rakentaa paketit omassa pienessä [[chroot]]-järjestelmässä. Pbuilderia käytettäessä saavutetaan mm. seuraavat edut:&lt;br /&gt;
#Käännösaikaiset riippuvuudet (&#039;&#039;build-depends&#039;&#039;) asennetaan automaattisesti&lt;br /&gt;
#Paketti käännetään puhtaassa ja mahdollisimman yksinkertaisessa ympäristössä, johon ei ole asennettu mitään ylimääräistä. Näin varmistetaan, että paketin kääntäminen onnistuu kaikissa järjestelmissä ja että käännösaikaiset riippuvuudet ovat riittävät.&lt;br /&gt;
#Paketin voi kääntää eri jakeluille ja jopa eri arkkitehtuurille&lt;br /&gt;
&lt;br /&gt;
Lisätietoja Pbuilderin käytöstä löytyy artikkelista [[Pbuilder]].&lt;br /&gt;
&lt;br /&gt;
== Paketin päivittäminen ja muokkaaminen ==&lt;br /&gt;
Edellä käsiteltiin uuden paketin tekemistä. Monesti eteen tulee kuitenkin myös tilanteita, joissa jo olemassa olevaa pakettia tulee muuttaa tai päivittää. Päivittämiselle tulee tarve kun paketoidusta ohjelmasta julkaistaan uusi versio tai vaikkapa silloin, kun ohjelmassa oleva ohjelmavirhe (bugi) korjataan &#039;&#039;patch&#039;&#039;-tiedostolla.&lt;br /&gt;
&lt;br /&gt;
Muokkauksen tekeminen alkaa hakemalla lähdekoodipaketti. Tämä onnistuu kätevästi komennolla &amp;lt;tt&amp;gt;[[apt-get]] source paketti&amp;lt;/tt&amp;gt;. Tällöin &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; hakee nykyiseen hakemistoon paketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedoston, muutokset sisältävän &amp;lt;tt&amp;gt;.diff.gz&amp;lt;/tt&amp;gt;-tiedoston ja alkuperäisen ohjelman sisältävän &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt;-paketin. Lisäksi hakemistoon syntyy &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt;-hakemisto, jonka sisältä löytyy sekä itse ohjelma että siihen tehdyt muutokset (mm. &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;)-hakemisto.&lt;br /&gt;
&lt;br /&gt;
Jos nyt halutaan esimerkiksi korjata ohjelmassa oleva bugi, voidaan edellä neuvotulla tavalla lisätä pakettiin uusi &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedosto. Tämän lisäksi on aina muistettava kirjata tiedot muutoksesta &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostoon. Tämä onnistuu helpoiten komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Muutoslokin on tarkoitus tarkkaan kertoa, mitä muutoksia on tehty. Yleensä muutos korjaa jonkun vianhallintajärjestelmässä olevan ilmoitetun bugin, jolloin muutoslokissa mainitaan tämän bugin numero (Debianin vianseurantajärjestelmän kanssa käytetään syntaksia &amp;lt;tt&amp;gt;Closes: #numero&amp;lt;/tt&amp;gt; ja Ubuntun Launchpad-järjestelmässä ilmoitettujen bugien kanssa syntaksia LP: #numero).&lt;br /&gt;
&lt;br /&gt;
Jos paketoidusta ohjelmasta on ilmestynyt uusi versio, täytyy toimia hieman eri tavalla. Ensimmäinen tehtävä on ladata uuden ohjelman lähdekoodipaketti ja tutustua uuden version mukana tuomiin muutoksiin (&amp;lt;tt&amp;gt;NEWS&amp;lt;/tt&amp;gt;- tai &amp;lt;tt&amp;gt;CHANGELOG&amp;lt;/tt&amp;gt;-tiedosto). Tämän jälkeen puretaan paketti tiedostoon &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt; ja uudelleennimetään lähdekoodipakettitiedosto nimelle &amp;lt;tt&amp;gt;ohjelman_versio.orig.tar.gz&amp;lt;/tt&amp;gt;. Eli aivan kuin olisimme paketoimassa uutta ohjelmaa. &lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen voidaan kopioida vanha &#039;&#039;debianisointi&#039;&#039; eli &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto vanhasta paketista uuteen pakettiin. Helpoimmissa tapauksissa tämä riittää, mutta etenkin käytettävien patchien toimiminen ja tarpeellisuus uuden version kanssa on todella tärkeä selvittää. Lisäksi ohjelman kääntäminen ja asentaminen saattaa uuden version kanssa tapahtua eri tavalla. Tällaisessa tapauksessa muutoslokiin kirjataan maininta uudesta versiosta (&amp;quot;New upstream release&amp;quot;) ja kerrotaan myös, mitä muita muutoksia pakettiin tehtiin (esimerkiksi jätettiin pois tarpeettomaksi käynyt patchi.&lt;br /&gt;
&lt;br /&gt;
Uuden version numero riippuu siitä, paketoitiinko uusi versio vai korjattiinko vain vanhassa versiossa oleva ongelma. Jos itse ohjelman versio ei muuttunut, kasvatetaan paketin &amp;quot;revision&amp;quot;-numeroa yhdellä, esimerkiksi versio &amp;quot;0.4.1-2&amp;quot; muuttuisi versioksi &amp;quot;0.4.1-3&amp;quot;. Jos taas ohjelman versio muuttui, asetetaan paketin versioksi uuden version numero ja &amp;quot;revisioniksi&amp;quot; asetetaan 1: &amp;quot;0.4.1-2&amp;quot; -&amp;gt; &amp;quot;0.4.2-1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Näiden toimenpiteiden jälkeen voidaan paketti luoda kuten normaalistikin &amp;lt;tt&amp;gt;debuild&amp;lt;/tt&amp;gt;- ja &amp;lt;tt&amp;gt;pdebuild&amp;lt;/tt&amp;gt;-komennoilla.&lt;br /&gt;
&lt;br /&gt;
===Debdiff===&lt;br /&gt;
Debdiff on [[diff]]in kaltainen ohjelma, joka vertailee kahta deb-pakettia. Sitä käytetään mm. silloin, kun lähetetään itse tehty korjaus ohjelman alkuperäiselle paketoijalle tai vianseurantajärjestelmään. Yleensä näin toimitaan silloin, kun muutoksen tekijällä ei ole oikeutta lähettää korjauksiaan suoraan virallisiin pakettivarastoihin.&lt;br /&gt;
&lt;br /&gt;
Debdiffille annetaan kahden lähdekoodipaketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedostot:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc&lt;br /&gt;
Jolloin ohjelma tulostaa erot ruudulle. Yleensä erot kannattaa [[Komentorivin perusteet#putkitus|putkittaa]] tiedostoon:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc &amp;gt; erot.debdiff&lt;br /&gt;
&lt;br /&gt;
== Pakettini on valmis, miten saan sen jakeluni pakettilähteisiin ==&lt;br /&gt;
Paketin saaminen jakelun virallisiin pakettilähteisiin on jakelun käytännöistä riippuen enemmän tai vähemmän työläs prosessi, johtuen muun muassa laadunvarmistuksesta. Teknisellä tasolla paketit viedään jakeluihin [[dput]]- tai [[dupload]]-työkaluilla. Katso lisää näiden työkalujen käytöstä näiden omilta sivuilta.&lt;br /&gt;
&lt;br /&gt;
Debianilla on käytössä [http://mentors.debian.net mentors.debian.net]-palvelu, jonne kaikki voivat lähettää omia pakettejaan tarjolle lähdekoodimuodossa. Tämän jälkeen paketille hankitaan/pyydetään halukas &amp;quot;sponsori&amp;quot;, joka on kokenut Debian-kehittäjä jolla on oikeudet lisätä paketteja virallisiin pakettilähteisiin. Sponsoreita haetaan yleensä lähettämällä viesti &amp;lt;tt&amp;gt;debian-mentors&amp;lt;/tt&amp;gt;-sähköpostilistalle sivustolta löytyvien ohjeiden mukaan. Tämän jälkeen joku paketista kiinnostunut kehittäjä tarkistaa sen ja antaa yleensä korjausehdotuksia. Kun paketti on hänen mielestään riittävän laadukas, hän lisää sen pakettilähteisiin. Prosessi voi paketin laadusta ja sponsoroijasta riippuen kestää pitkäänkin, ja vapaaehtoisuuteen perustamalla saattaa vaatia omaa aktiivisuutta ja kohteliasta ajoittaista tiediustelua.&lt;br /&gt;
&lt;br /&gt;
Virallisten pakettilähteiden lisäksi voit myös ylläpitää omaa. Paketteja voi myös jakaa helposti esimerkiksi [[Launchpad | Launchpadin]] tarjoaman [[PPA]]-ominaisuuden avulla. PPA automatisoi paketin kääntämistä ja julkaisua. Halutessasi voit myös vain yksinkertaisesti jakaa tekemääsi deb-tiedostoa millä tahansa tiedostonjakotekniikalla.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[CDBS]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://www.debian.org/doc/maint-guide/index.en.html#contents Debian New Maintainers&#039; Guide]&lt;br /&gt;
*[http://www.debian.org/doc/debian-policy/ Debian policy] - Debianin käytäntöjä ja sääntöjä&lt;br /&gt;
*Ubuntun [https://wiki.ubuntu.com/PackagingGuide PackagingGuide]-opas&lt;br /&gt;
*[http://wiki.ubuntu.com/PackagingGuide Packaging guide - Ubuntu Wiki]&lt;br /&gt;
*[http://www.debian-administration.org/articles/286 Setting up your own APT reposity]&lt;br /&gt;
*Vincent Bernat: [https://vincent.bernat.im/en/blog/2016-pragmatic-debian-packaging.html Pragmatic Debian packaging]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Paketinhallinta]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=47377</id>
		<title>Deb-paketin tekeminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=47377"/>
		<updated>2016-12-26T11:17:53Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: /* Valmistelut */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Debian]]issa ja siihen pohjautuvissa jakeluissa (esim. [[Ubuntu]]ssa ja [[Linux Mint]]issä) käytetään [[Dpkg]]-paketinhallintajärjestelmää. Dpkg:ssa paketit ovat &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-tiedostoja, jotka sisältävät itse ohjelman lisäksi mm. tiedot paketin riippuvuuksista ja siitä, mihin ohjelma asennetaan. Deb-pakettien tekeminen ei ole mitenkään ylivoimainen tehtävä, kunhan perusasiat ja mm. [[komentorivi|komentorivin käyttö]] ovat hallussa.&lt;br /&gt;
&lt;br /&gt;
Tässä oppaassa luodaan aluksi malliksi yksinkertainen paketti [http://www.gnu.org/software/hello/ GNU Hello] -ohjelmasta, joka on [[GNU]]-projektin esimerkkiohjelma. Ohjelman lähdekoodipaketin voi ladata [http://ftp.gnu.org/gnu/hello/ GNU:n palvelimelta]. Paketin luomisessa käytetään tässä apuna Debhelper-apuohjelmaa (&amp;lt;tt&amp;gt;dh&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Debianin eri versiosta löytyvän paketin voi kääntää käytetylle versiolle sopivaksi tai pakettiin tehdä pieniä muutoksia huomattavasti helpommin kuin tätä ohjetta seuraamalla, komennoilla &amp;lt;tt&amp;gt;apt-get build-dep paketti&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;apt-get source paketti&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;dpkg-deb -build pakettihakemisto&amp;lt;/tt&amp;gt;, jolloin muutokset tehdään viimeksi mainittujen välissä (varsinainen muutos + uusi kohta tiedostoon &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;). Jos paketti tehdään valmiista Debianin lähdekoodipaketista, kääntämisen binääripaketiksi voi hoitaa paketin hakemisen yhteydessä komennolla &amp;lt;tt&amp;gt;apt-get --compile source paketti&amp;lt;/tt&amp;gt;. Lisätietoja näistä komennoista löytyy artikkeleista [[apt-get]] ja [[dpkg]].&lt;br /&gt;
&lt;br /&gt;
== Valmistelut ==&lt;br /&gt;
Aluksi on hyvä asentaa muutamia perustyökaluja, jotka sisältävät paketointityössä tarvittavia tai valinnaisia apuohjelmia. Asenna siis seuraavat paketit (&amp;lt;tt&amp;gt;[[APT#apt|apt]] install &amp;lt;i&amp;gt;paketit&amp;lt;/i&amp;gt;&amp;lt;/tt&amp;gt;):&lt;br /&gt;
 dpkg-dev autoconf dh-make devscripts [[fakeroot]] [[Gpg|gnupg]] build-essential lintian libtool automake pbuilder&lt;br /&gt;
&lt;br /&gt;
Kun paketit on asennettu, lataa Hello-ohjelman lähdekoodi ja [[tar|pura]] se työhakemistoosi (&amp;lt;code&amp;gt;tar xzvf &#039;&#039;tiedosto&#039;&#039;&amp;lt;/code&amp;gt;). Nyt sinulla pitäisi olla työhakemistossasi tiedosto &amp;lt;tt&amp;gt;hello-2.10.tar.gz&amp;lt;/tt&amp;gt; ja hakemisto &amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Paketoinnin aloitus ==&lt;br /&gt;
Aluksi kannattaa kokeilla, että saat ohjelman [[Kääntäminen|käännettyä]] ja ajettua. Sinun pitäisi jo osata tehdä tämä, jos luet tätä opasta, mutta lyhykäisyydessään voit asentaa Hellon hakemistoon &amp;lt;tt&amp;gt;~/hello&amp;lt;/tt&amp;gt; seuraavasti:&lt;br /&gt;
 ./configure --prefix=/home/käyttäjä/hello&lt;br /&gt;
 [[make]]&lt;br /&gt;
 make install&lt;br /&gt;
Nyt hakemistosta ~/hello pitäisi löytyä alihakemistot bin ja share, joissa Hellon tiedostot ovat.&lt;br /&gt;
&lt;br /&gt;
Putsaa nyt hakemisto, jossa käänsit Hellon komennolla&lt;br /&gt;
 make distclean&lt;br /&gt;
Nyt jos ohjelma kääntyi oikein, voimme aloittaa itse paketin tekemisen.&lt;br /&gt;
&lt;br /&gt;
=== Pohja ===&lt;br /&gt;
Siirry ohjelman hakemistoon (hello-2.10) ja aja komento&lt;br /&gt;
 dh_make -e sinun@sähköpostiosoitteesi -f ../hello-2.10.tar.gz&lt;br /&gt;
Toinen parametri on siis paketin tekijän sähköpostiosoite ja neljäs alkuperäinen lähdekooditiedosto. Ohjelma kysyy aluksi, minkätyyppistä pakettia olemme luomassa:&lt;br /&gt;
 Type of package: (single, indep, library, python)&lt;br /&gt;
 [s/i/l/p]?&lt;br /&gt;
Vastaa tähän s (&#039;&#039;single binary&#039;&#039;), sillä olemme luomassa yksinkertaista yhden ohjelman käsittävää pakettia. Tämän jälkeen vahvista tiedot enterillä, jonka jälkeen dh_make luo hakemistoon &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-alihakemiston, joka sisältää tiedostot, joiden perusteella varsinainen paketti luodaan. Se myös luo ylähakemistoon tiedoston &amp;lt;tt&amp;gt;paketti_versio.orig.tar.gz&amp;lt;/tt&amp;gt;, tässä tapauksessa siis &amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt;, joka sisältää alkuperäisen lähdekoodipaketin.&lt;br /&gt;
&lt;br /&gt;
Huomaa, että &amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; kuuluu ajaa vain kerran! Tulevien muutosten pohjalla käytetään paketin olemassa olevaa &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-kansiota, eikä dh_makea siis tarvitse ajaa uudelleen.&lt;br /&gt;
&lt;br /&gt;
== Asennushakemisto ==&lt;br /&gt;
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon &amp;lt;tt&amp;gt;debian/hello/usr/bin/hello&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Muiden muassa [[Autoconf]]ia, [[CMake]]a ja [[QMake]]a käyttävien pakettien kanssa paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin &amp;lt;tt&amp;gt;--prefix=/hakemisto/jonne/ohjelma/asennetaan&amp;lt;/tt&amp;gt;. Paketointiapuohjelma antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.&lt;br /&gt;
&lt;br /&gt;
Joskus, kun ohjelman kääntäminen ei suju Debhelperiltä automaattisesti, asennushakemistosta on huolehdittava itse. Tämä tulee eteen kun myöhemmin muokkaamme tiedostoa &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Asetustiedostot ==&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; loi &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemiston, joka sisältää monia tiedostoja, joiden perusteella itse paketti luodaan. Tässä vaiheessa on käytävä ne läpi ja muokattava sopiviksi.&lt;br /&gt;
&lt;br /&gt;
=== control ===&lt;br /&gt;
Tiedostossa &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt; kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: &amp;lt;insert the upstream URL, if relevant&amp;gt;&lt;br /&gt;
Vcs-Git: git://anonscm.debian.org/collab-maint/hello.git&lt;br /&gt;
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: &amp;lt;insert up to 60 chars description&amp;gt;&lt;br /&gt;
 &amp;lt;insert long description, indented with spaces&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Riveillä 1–9 on &#039;&#039;lähdekoodipaketin&#039;&#039; (engl. &#039;&#039;source&#039;&#039;) perustiedot:&lt;br /&gt;
* Rivillä 1 on lähdekoodipaketin nimi&lt;br /&gt;
* Rivillä 2 kerrotaan, mihin osioon paketti kuuluu. Debianissa paketit osioihin, joita ovat mm. &#039;&#039;main&#039;&#039; (vapaat ohjelmat), &#039;&#039;non-free&#039;&#039; (ohjelmat, jotka eivät ole vapaita) ja &#039;&#039;contrib&#039;&#039; (ohjelmat, jotka riippuvat vapaista ohjelmista). Nämä ohjelmat on yhä jaettu pienempiin osioihin, kuten &#039;&#039;devel&#039;&#039; (kehitystyökalut) ja &#039;&#039;mail&#039;&#039; (sähköpostiohjelmat). Hellolle sopiva osio voisi olla &#039;&#039;text&#039;&#039;. Osiot on listattu [http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections Debian policyssä].&lt;br /&gt;
* Kolmannella rivillä kerrotaan, kuinka tärkeää käyttäjälle on asentaa tämä paketti. Vaikka &amp;quot;Terve maailma!&amp;quot; -viestin tulostava ohjelma voi tuntua tärkeältä, ehkäpä se ei kuitenkaan ole yhtä tärkeä kuin vaikka ydin, joten asetetaan sen tärkeysasteeksi &#039;&#039;optional&#039;&#039;, jota käytetään useimmille paketeille.&lt;br /&gt;
* Neljännellä rivillä on paketin tekijän nimi ja sähköpostiosoite&lt;br /&gt;
* Rivillä 5 listataan pilkulla erotettuna paketit, jotka tarvitaan tämän paketin kääntämiseen. Jos ohjelmasta on oltava tietty versio, haluttu versio voidaan ilmoittaa sulkeissa (esimerkissä tarvitaan &#039;&#039;debhelper&#039;&#039;-paketin versio 9 tai uudempi). Käytännössä aina tarvittavia paketteja (esim. gcc ja make) ei tarvitse luetella, sillä ne otetaan mukaan automaattisesti. Kuitenkin kaikki muut kääntämisessä tarvittavat vähänkin harvinaisemmat paketit on lueteltava. Tässä vaiheessa voitaisiin myös samalla tavalla luetella paketit, jotka estävät kääntämisen (&#039;&#039;Build-Conflicts: paketti1, paketti2&#039;&#039;). Hello on sen verran helppo kääntää, ettei meidän tarvitse nyt lisätä tähän mitään ylimääräisiä paketteja.&lt;br /&gt;
* Rivillä 6 kerrotaan, minkä &#039;&#039;Debian Policy&#039;&#039; -standardin version mukainen paketti on. Tähän ei tarvitse koskea.&lt;br /&gt;
* Riville 7 kirjoitetaan ohjelman kotisivu.&lt;br /&gt;
* Riveillä 8 ja 9 voidaan kertoa, missä [[versionhallintajärjestelmä]]ssä debian-pakettia ylläpidetään. Me voimme poistaa nämä rivit, koska emme tässä käytä versionhallintaa.&lt;br /&gt;
&lt;br /&gt;
Riveillä 11–15 on &#039;&#039;binääripaketin&#039;&#039; tiedot:&lt;br /&gt;
* Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi.&lt;br /&gt;
* Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon &amp;quot;any&amp;quot;, jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. jos se on ohjepaketti tai [[Perl]]- tai [[Python]]-skripti), arkkitehtuuriksi laitetaan &amp;quot;all&amp;quot;.&lt;br /&gt;
* Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. &amp;quot;&#039;&#039;${shlibs:Depends}&#039;&#039;&amp;quot; aiheuttaa sen, että pakettia luotaessa pyritään riippuvuuksiksi lisäämään automaattisesti ne paketit, joiden tiedostoja vasten tämän paketin konekieliset tiedostot on linkitetty.&lt;br /&gt;
* Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedosto voisi näyttää tältä:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: text&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: https://www.gnu.org/software/hello/&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: Hello world -ohjelma&lt;br /&gt;
 Klassinen Hello world -ohjelma, jonka avulla opettelemme &lt;br /&gt;
 deb-pakettien tekemistä.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin ====&lt;br /&gt;
Riippuvuuksien lisäksi paketti voi myös suositella jonkin toisen paketin asentamista, tai se voi myös kieltäytyä asentumasta samaan järjestelmään jonkin toisen paketin kanssa (ristiriita toisen paketin kanssa, engl. &#039;&#039;conflict&#039;&#039;). Tällaiset paketit esitellään &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedostossa samaan tapaan kuin riippuvuudet. &lt;br /&gt;
&lt;br /&gt;
Riippuvuuksien lisäksi apt tukee seuraavia suhteita pakettien välillä:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Recommends&amp;lt;/tt&amp;gt;: Suositeltavat paketit. Yleensä paketteja, joita käytetään käytännössä aina tämän paketin kanssa. Esim. [[aptitude]] asentaa nämä automaattisesti, apt vain suosittelee.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Suggests&amp;lt;/tt&amp;gt;: Muita tämän paketin kanssa hyviä paketteja. Monet apt:n edustaohjelmat (kuten aptitude) näyttävät tämän listan, apt ei.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Pre-Depends&amp;lt;/tt&amp;gt;: Vahvempi kuin Depends. Vaatii, että paketit on asennettu ja otettu käyttöön ennen kuin suostuu asentamaan tämän paketin. Käytetään erittäin harvoin.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Conflicts&amp;lt;/tt&amp;gt;: Paketit, joiden kanssa samaan järjestelmään tätä pakettia ei voida asentaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Provides&amp;lt;/tt&amp;gt;: Mitkä virtuaaliset paketit tämä paketti toteuttaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Replaces&amp;lt;/tt&amp;gt;: Paketit, jotka tämä paketti korvaa.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi pakettimme nyt vaatisi paketin &#039;&#039;foo&#039;&#039; version 2.3 tai uudemman, paketti &#039;&#039;bar&#039;&#039; olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä &#039;&#039;libfoo&#039;&#039;:n kanssa, voisimme lisätä seuraavat rivit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}, foo (&amp;gt;= 2.3)&lt;br /&gt;
Recommends: bar&lt;br /&gt;
Conflicts: libfoo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vastaavasti on mahdollista asettaa myös lähdekoodipaketille &#039;&#039;Build-Conflicts&#039;&#039; ja muut vastaavat suhteet.&lt;br /&gt;
&lt;br /&gt;
=== copyright ===&lt;br /&gt;
Paketin tekijänoikeuksista kerrotaan tiedostossa &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;. Tämän tiedoston muoto on periaatteessa vapaa, mutta kannattaa seurata [https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Machine-readable debian/copyright file] -standardia. Hyvän tiedoston saa muokkaamalla dh_maken luomaa. Tässä tiedostosta tulee käydä ilmi paketin luoja, alkuperäinen tekijä ja ohjelman tekijänoikeustiedot (esim. [[GPL]]-lisenssin version 3 tai myöhemmän alainen).&lt;br /&gt;
&lt;br /&gt;
=== changelog ===&lt;br /&gt;
dh_make luo seuraavanlaisen pohjan &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostolle: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 hello (2.10-1) unstable; urgency=medium&lt;br /&gt;
2&lt;br /&gt;
3   * Initial release (Closes: #nnnn)  &amp;lt;nnnn is the bug number of your ITP&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
4  -- Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;  Fri, 29 Jul 2016 11:42:23 +0300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rivillä 1 on aluksi lähdekoodipaketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (&#039;&#039;urgency&#039;&#039;), yleensä &amp;quot;medium&amp;quot; on sille oikea arvo.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen seuraavilla riveillä on itse muutosloki (engl. &#039;&#039;changelog&#039;&#039;). Rivin alussa on kaksi välilyöntiä ja tähti (*). Viimeisenä (rivillä 4) on tieto paketin tekijästä ja tekoajankohdasta (esimerkin mukaisessa muodossa). Tämän rivin alussa on yksi välilyönti.&lt;br /&gt;
&lt;br /&gt;
Yleensä paketteihin tehdyt muutokset korjaavat joitain vianhallintajärjestelmään ilmoitettuja vikoja (bugeja). Jos paketti korjaa jonkin ilmoitetun vian, se ilmoitetaan muutoslokissa. Jos paketti esimerkiksi korjaa Debianin vianseurantajärjestelmän bugin numero 123456, tulee muutoslokissa esiintyä merkkijono &amp;lt;tt&amp;gt;Closes: #123456&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Muutoslokia pystyy muokkaamaan joko muokkaamalla tekstitiedostoa suoraan tai käyttämällä [[dch]]-komentoa (tai sen pidempää muotoa, komentoa &amp;lt;tt&amp;gt;debchange&amp;lt;/tt&amp;gt;). Sopivan pohjan uudelle muutokselle saa luotua komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Tämä avaa muutoslokin &amp;lt;tt&amp;gt;EDITOR&amp;lt;/tt&amp;gt;-[[ympäristömuuttuja]]ssa asetettuun tekstieditoriin. Muutoksen tekijän nimi haetaan ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBFULLNAME&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;NAME&amp;lt;/tt&amp;gt; ja sähköpostiosoite ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBEMAIL&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;EMAIL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== rules ===&lt;br /&gt;
Tiedosto &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt; on [[Makefile]]n tapainen tiedosto, jonka perusteella varsinainen paketti luodaan. Tämän tiedoston perusteella ohjelma käännetään ja asennetaan hakemistoon &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, tässä tapauksessa &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;. Tähän hakemistoon asentuvien tiedostojen perusteella luodaan varsinainen paketti.&lt;br /&gt;
&lt;br /&gt;
Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/make -f&lt;br /&gt;
# See debhelper(7) (uncomment to enable)&lt;br /&gt;
# output every command that modifies files on the build system.&lt;br /&gt;
#export DH_VERBOSE = 1&lt;br /&gt;
&lt;br /&gt;
# see FEATURE AREAS in dpkg-buildflags(1)&lt;br /&gt;
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all&lt;br /&gt;
&lt;br /&gt;
# see ENVIRONMENT in dpkg-buildflags(1)&lt;br /&gt;
# package maintainers to append CFLAGS&lt;br /&gt;
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic&lt;br /&gt;
# package maintainers to append LDFLAGS&lt;br /&gt;
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed&lt;br /&gt;
&lt;br /&gt;
%:&lt;br /&gt;
	dh $@ --with autotools_dev&lt;br /&gt;
&lt;br /&gt;
# dh_make generated override targets&lt;br /&gt;
# This is example for Cmake (See https://bugs.debian.org/641051 )&lt;br /&gt;
#override_dh_auto_configure:&lt;br /&gt;
#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos tiedoston syntaksi on epäselvä, katso artikkeli [[Makefile]]. Suurin osa tiedoston sisällöstä on #-merkillä alkavia kommentteja, poikkeuksena kuitenkin ensimmäinen rivi, joka on erityinen [[wikipedia:en:Shebang (Unix)|#!-rivi]].&lt;br /&gt;
&lt;br /&gt;
Rivien 6–7 &amp;quot;hardening&amp;quot; viittaa [https://wiki.debian.org/Hardening#Environment_variables Debianin käyttöön ottamiin GCC-valitsimiin], joiden avulla voitaisiin estää mm. tietyntyyppisiä tietomurtoja.&lt;br /&gt;
&lt;br /&gt;
Riveillä 9–13 asetetaan käännösoptiot, jos niitä tarvitsee erikseen määritellä. Esimerkiksi [[gcc|C-kääntäjän]] käännösparametrit laitetaan muuttujaan DEB_CFLAGS_MAINT_APPEND, C++-kääntäjän muuttujaan DEB_CXXFLAGS_MAINT_APPEND ja linkittäjän ([[ld]]) muuttujaan DEB_LDFLAGS_MAINT_APPEND.&lt;br /&gt;
&lt;br /&gt;
Rivillä 15 oleva Makefilen jokerimerkki (engl. &#039;&#039;wildcard&#039;&#039;) &#039;&#039;&#039;%&#039;&#039;&#039; tarkoittaa, että kun kutsutaan &amp;lt;tt&amp;gt;debian/rules &#039;&#039;build&#039;&#039;&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;debian/rules &#039;&#039;binary&#039;&#039;&amp;lt;/tt&amp;gt;, make suorittaa rivin 16 mukaan komennon &amp;lt;tt&amp;gt;dh &#039;&#039;build&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;dh &#039;&#039;binary&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt;. Komento &amp;lt;tt&amp;gt;dh build&amp;lt;/tt&amp;gt; taas puolestaan suorittaa pitkän listan erilaisia dh-alkuisia ohjelmia, jotka ovat debhelperin funktiokutsuja, jotka tekevät erilaisia pieniä operaatioita rakentaen pakettia. Mm. seuraavia funktioita on tarjolla:&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Komento&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Kuvaus&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testdir&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että ollaan oikeassa hakemistossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testroot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että meillä on pääkäyttäjän oikeudet kun niitä tarvitaan&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_configure&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa ./configure:n tai vastaavan vaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_build&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Kääntää paketin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa make installin tai vastaavan asentamisvaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_strip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Ajaa [[strip]]-komennon suoritettaville tiedostoille, jolloin niiden koko pienenee&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_compress&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Pakkaa [[gzip]]illä [[man]]-sivut ja ohjetiedostot, joiden koko ylittää 4kt&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_gencontrol&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Luo binääripaketille &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston ja kopioi sen hakemistoon &amp;lt;tt&amp;gt;debian/hello/DEBIAN&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_md5sums&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Laskee [[md5sum|MD5]]-tarkistussummat paketin tiedostoille&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Jos ohjelma ei asenna kaikkia tarpeellisia tiedostoja oikeisiin hakemistoihin autoconfin avulla (esim. komennolla &amp;lt;tt&amp;gt;make install&amp;lt;/tt&amp;gt;), voi käyttää tätä apufunktiota, jolle kerrotaan asennettavat tiedostot ja hakemistot &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;.install&amp;lt;/tt&amp;gt;-tiedostossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installchangelog&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa muutoslokin polkuun &amp;lt;tt&amp;gt;/usr/share/doc/package/changelog&amp;lt;/tt&amp;gt;. Jos komennolle annetaan parametrina paketin mukana tulevan muutoslokin tiedostonimi, asennetaan myös se.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_shlibdeps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Määrittää paketin riippuvuuksia binääritiedostoihin linkitettyjen kirjastotiedostojen perusteella&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installdocs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa &amp;lt;tt&amp;gt;debian/docs&amp;lt;/tt&amp;gt;-tiedostossa listatut tiedostot ja mm. &amp;lt;tt&amp;gt;debian/README.debian&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;-tiedostot polkuun &amp;lt;tt&amp;gt;/usr/share/doc/paketti&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Taulukossa on vain osa dh-funktioista, loput ovat man-sivulla debhelper(7). Rules-tiedostossamme viimeisenä on esimerkki &#039;&#039;override targetista&#039;&#039;, jollainen ajetaan vastaavan dh-ohjelman sijasta.&lt;br /&gt;
&lt;br /&gt;
Jos paketti ei jotain yleisistä käännösjärjestelmistä (kuten Ant, GNU Autotools, CMake, QMake tai tavallinen Makefile), on &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt; muokattava sellaiseksi, että ohjelma kääntyy ja asentuu polkuun &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;&amp;lt;/tt&amp;gt;. Se, miten kääntäminen tapahtuu, riippuu ohjelmasta. Funktion &amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt; avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binääripaketissa.&lt;br /&gt;
&lt;br /&gt;
=== compat ===&lt;br /&gt;
Tässä tiedostossa ilmoitamme, mitä versiota debhelperistä paketista käytetään. Kirjoitushetkellä viimeisin vakaa versio on 9.&lt;br /&gt;
&lt;br /&gt;
=== source/format ===&lt;br /&gt;
Tätä tiedostoa ei tarvitse muuttaa. Sen sisältö on:&lt;br /&gt;
 3.0 (quilt)&lt;br /&gt;
Quilt viittaa [[#Patchit|patchien hallintaan]] käyttämäämme ohjelmaan. 3.0:n merkityksestä voi lukea tarkemmin Debian Wikin artikkelista [https://wiki.debian.org/Projects/DebSrc3.0 DebSrc3.0].&lt;br /&gt;
&lt;br /&gt;
=== .ex-päätteiset tiedostot ===&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; luo &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistoon monia .ex-päätteisiä tiedostoja. Näitä tiedostoja muokkaamalla on mahdollista esimerkiksi saada paketti lisäämään tehtäviä [[cron]]ille ja kuvakkeen työpöytäympäristön valikkoon.&lt;br /&gt;
&lt;br /&gt;
Oletuksena .ex-päätteisiä tiedostoja ei huomioida. Jos haluat käyttää niitä, muokkaa tiedosto ensin sopivaksi ja poista tiedostonimestä tämän jälkeen .ex-pääte. Lisäksi tarkista, että sopivaa funktiota kutsutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa.&lt;br /&gt;
&lt;br /&gt;
Poista ne .ex-tiedostot, joita et tarvitse. Hellon tapauksessa emme tarvitse näitä. Seuraavassa esitellään kuitenkin muutamia yleisimmin käytettyjä tiedostoja joita luultavasti tulet joskus tarvitsemaan:&lt;br /&gt;
&lt;br /&gt;
==== cron.d ====&lt;br /&gt;
Tiedostoon &amp;lt;tt&amp;gt;cron.d&amp;lt;/tt&amp;gt; kirjoitetaan rivit, jotka halutaan lisätä &amp;lt;tt&amp;gt;cron&amp;lt;/tt&amp;gt;-järjestelmään. Rivit kirjoitetaan samassa muodossa kuin missä cronille annetaan suoritettavia tehtäviä. Katso lisätietoja artikkelista [[cron]].&lt;br /&gt;
&lt;br /&gt;
==== init.d ====&lt;br /&gt;
[[init]]-skripti, joka asennetaan polkuun &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedoston komennolla &amp;lt;tt&amp;gt;dh_installinit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== manpage.1 ====&lt;br /&gt;
Ohjelman [[man]]-sivu. Pisteen jälkeen oleva numero kertoo, mihin kategoriaan man-sivu asennetaan (kategoriat on listattu artikkelissa [[man]]). Man-sivu asennetaan paikoilleen &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa olevalla komennolla &amp;lt;tt&amp;gt;dh_installman debian/mansivu.1&amp;lt;/tt&amp;gt;. Tiedoston nimi on yleensä muotoa &amp;lt;tt&amp;gt;paketinnimi.numero&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== watch ====&lt;br /&gt;
Kertoo &amp;lt;tt&amp;gt;uscan&amp;lt;/tt&amp;gt;-ohjelmalle, miten paketin uudet versiot voi ladata internetistä. Lisätietoja tiedostomuodosta: &amp;lt;code&amp;gt;man 1 uscan&amp;lt;/code&amp;gt; ja [https://wiki.debian.org/debian/watch Debian Wiki]. Watch-tiedosto mahdollistaa lähdekoodipaketin helpon päivittämisen aina uusimpaan versioon.&lt;br /&gt;
&lt;br /&gt;
[[GNU]]:n projekteille, jollainen Hellokin on, toimii seuraavanlainen watch-tiedosto:&lt;br /&gt;
 version=4&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://ftp.gnu.org/gnu/@PACKAGE@/&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
    @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate&lt;br /&gt;
&lt;br /&gt;
== Tehdään paketti! ==&lt;br /&gt;
Nyt kun tarvittavat tiedostot on lopulta muokattu sopiviksi, on aika luoda varsinainen paketti. Siirry ohjelman päähakemistoon (&amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;) ja aja komento&lt;br /&gt;
 debuild&lt;br /&gt;
joka tekee seuraavat asiat:&lt;br /&gt;
*Siistii paketin (ajaa [[make]]lla komennon &amp;lt;tt&amp;gt;debian/rules clean&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Kääntää ohjelman (&amp;lt;tt&amp;gt;debian/rules build&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Luo binääripaketin (&amp;lt;tt&amp;gt;debian/rules binary&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Allekirjoittaa .dsc-tiedoston [[gpg|gnupgllä]]&lt;br /&gt;
*Luo ja allekirjoittaa .changes-tiedoston&lt;br /&gt;
*Käyttää [[fakeroot]]ia, jolloin pääkäyttäjän oikeuksia ei tarvita&lt;br /&gt;
Allekirjoitus vaatii, että olet luonut [[gpg]]:llä itsellesi avaimen. Tällöin sinulta kysytään avaimesi salasanaa.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen, jos kaikki sujui ilman virheitä, ylähakemistosta pitäisi löytyä seuraavat tiedostot:&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.build&amp;lt;/tt&amp;gt; – kääntämisloki (&#039;&#039;build log&#039;&#039;)&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.changes&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu tiedosto, joka sisältää paketin muutoslokin (&amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;) ja pakettiin liittyvien tiedostojen [[SHA]]1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.deb&amp;lt;/tt&amp;gt; – lopullinen deb-paketti!&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.debian.tar.xz&amp;lt;/tt&amp;gt; – &amp;lt;tt&amp;gt;debian-hakemiston&amp;lt;/tt&amp;gt; sisältö [[xz]]-pakattuna tar-arkistona&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.dsc&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston kaltainen tiedosto, jossa on listattu lähdekooditiedoston ja diff-tiedoston SHA1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt; – alkuperäinen lähdekoodi&lt;br /&gt;
&lt;br /&gt;
Nyt lopullinen paketti voidaan asentaa [[dpkg]]:llä:&lt;br /&gt;
 dpkg -i hello_2.10-1_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Kun myöhemmin teet muutoksia pakettiin, voit luoda uuden paketin nopeasti komennolla&lt;br /&gt;
 fakeroot debian/rules binary&lt;br /&gt;
joka ei kuitenkaan käännä ohjelmaa alusta lähtien (tärkeää huomata, jos muutat lähdekoodia).&lt;br /&gt;
&lt;br /&gt;
=== Lähdekoodipaketti ===&lt;br /&gt;
Edellä teimme tavallisen ns. &#039;&#039;binääripaketin&#039;&#039;, joka sisältää valmiiksi käännetyn ohjelman. Monesti on tarpeen tehdä myös lähdekoodipaketti, joka sisältää pakettiin ja sen kääntämiseen ja asentamiseen liittyvät tiedot (&amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto) ja ohjelman lähdekoodin. Tällöin paketti on mahdollista kääntää ja asentaa jokaiselle sopivalle alustalle kun taas käännetty &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-paketti toimii vain yhdellä alustalla (esim. amd64, i386 tai armhf).&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketteja käytetään etenkin kun paketti julkaistaan esimerkiksi lisäämällä se jonkin jakelun virallisiin pakettilähteisiin. Tällöin kehittäjä yleensä vain lähettää palvelimelle lähdekoodipaketin, jonka palvelin sitten kääntää useille eri arkkitehtuureille.&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketti luodaan ajamalla paketin päähakemistossa komento&lt;br /&gt;
 debuild -S -sa&lt;br /&gt;
Missä valitsin &amp;lt;tt&amp;gt;-S&amp;lt;/tt&amp;gt; tarkoittaa, että luodaan lähdekoodipaketti ja &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt; sisällyttää pakettiin mukaan alkuperäisen lähdekooditiedoston (&amp;lt;tt&amp;gt;.orig.tar.gz&amp;lt;/tt&amp;gt;). Tällöin ylähakemistoon pitäisi ilmestyä samanlaisten tiedostojen kuin luotaessa binääripakettia, paitsi että varsinaista &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-pakettia ei ilmesty. &lt;br /&gt;
&lt;br /&gt;
Nyt lähdekoodipaketti koostuu näistä tiedostoista (&amp;lt;tt&amp;gt;paketti.dsc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;paketti.orig.tar.gz&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;paketti.debian.tar.xz&amp;lt;/tt&amp;gt;), ja sitä voidaan hallita esimerkiksi &amp;lt;tt&amp;gt;dpkg-source&amp;lt;/tt&amp;gt;-ohjelmalla. Jos esimerkiksi olet saanut jostain lähdekoodipaketin, voit purkaa ja kääntää seuraavasti&lt;br /&gt;
 dpkg-source -x paketti.dsc&lt;br /&gt;
 cd paketti&lt;br /&gt;
 debuild&lt;br /&gt;
&lt;br /&gt;
Ilman &amp;lt;tt&amp;gt;debuildin&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt;-valitsinta voi luoda paketin, joka ei sisällä alkuperäistä lähdekoodia. Tälle on käyttöä silloin, kun paketteja pidetään ulkopuolisessa pakettivarastossa ja uusi versio voidaan julkaista vain lähettämällä palvelimelle uusi lähdekoodipaketti ilman alkuperäistä lähdekoodia. Tällainen tilanne tulee eteen, kun paketista tehdään uusi versio joka ei muuta itse ohjelman lähdekoodia tai muuttaa sitä erillisellä &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedostolla (eli ohjelman tekijä ei ole julkaissut uutta versiota, mutta paketin tekijä tekee muutoksia joko itse ohjelmaan tai paketointiin).&lt;br /&gt;
&lt;br /&gt;
== Lintian: onnistuiko paketti? ==&lt;br /&gt;
Lintian on ohjelma, joka tarkistaa tekemäsi paketin laadun. Sille annetaan parametrina pakettia luotaessa syntynyt &amp;lt;tt&amp;gt;.changes&amp;lt;/tt&amp;gt;-päätteinen tiedosto. Yleensä kannattaa antaa myös valitsimet -E, -v, -i ja -I (iso &#039;&#039;i&#039;&#039;), jolloin lintian kertoo tarkemmin, mikä paketissa on vialla:&lt;br /&gt;
 lintian -EviI hello_2.10-1_amd64.changes&lt;br /&gt;
Tulosteessa E:-alkavat rivit tarkoittavat virhettä, W:-alkavat varoituksia ja N:-alkavat huomautuksia.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi et poistanut &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistosta &amp;lt;tt&amp;gt;.ex&amp;lt;/tt&amp;gt;-päätteisiä tiedostoja, lintian varoittaa niistä. Yleensä paketin tulisi olla sellainen, ettei lintian löydä siitä mitään valitettavaa.&lt;br /&gt;
&lt;br /&gt;
== Patchit ==&lt;br /&gt;
Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä.&lt;br /&gt;
&lt;br /&gt;
== Muut pakettityypit ==&lt;br /&gt;
===Multi-binary: Monta pakettia yhdestä lähdekoodipaketista ===&lt;br /&gt;
Joskus tulee eteen tilanne, jossa yksi ohjelma on jaettava useampaan eri pakettiin. Tällainen tilanne tulee eteen mm. silloin, kun paketoidaan suurta peliä: yleensä peleissä itse käännetty ohjelma vie murto-osan siitä tilasta, jonka pelin datatiedostot vievät. Jos koko ohjelma laitettaisiin yhteen pakettiin, käytettäisiin turhaan palvelimen levytilaa ja resursseja, kun samat alustariippumattomat datatiedostot kopioitaisiin jokaiselle arkkitehtuurille tehtyyn pakettiin. &lt;br /&gt;
&lt;br /&gt;
Toinen esimerkki tilanteesta, jossa ohjelman jakaminen moneen pakettiin on järkevää on ohjelma, jonka mukana tulee paljon (esimerkiksi jopa kymmeniä megatavuja) dokumentaatiota ja ohjeita.&lt;br /&gt;
&lt;br /&gt;
Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt;-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: extra&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Recommends: hello-doc&lt;br /&gt;
Description: Hello-ohjelma&lt;br /&gt;
 Klassinen hello-ohjelma, joka tulostaa tekstin&lt;br /&gt;
 hello world.&lt;br /&gt;
&lt;br /&gt;
Package: hello-doc&lt;br /&gt;
Architecture: all&lt;br /&gt;
Depends: hello&lt;br /&gt;
Description: Hellon ohjeet&lt;br /&gt;
 Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen muutetaan paketin asentamista (&amp;lt;tt&amp;gt;debian/install&amp;lt;/tt&amp;gt;) siten, että esimerkiksi pakettiin &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt; kuuluvat tiedostot asennettaisiin hakemistoon &amp;lt;tt&amp;gt;debian/hello/&amp;lt;/tt&amp;gt; ja paketin &amp;lt;tt&amp;gt;hello-doc&amp;lt;/tt&amp;gt;-tiedostot hakemistoon &amp;lt;tt&amp;gt;debian/hello-doc&amp;lt;/tt&amp;gt;. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun &amp;lt;tt&amp;gt;debian/hello/usr/bin/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos jokin Debhelperin komento (muotoa &amp;lt;tt&amp;gt;dh_jotain&amp;lt;/tt&amp;gt;) halutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa ajaa vain tietylle paketille, voidaan käyttää valitsinta &amp;lt;tt&amp;gt;--package&amp;lt;/tt&amp;gt; eli lyhyemmin &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt;, esimerkiksi komennolla&lt;br /&gt;
&amp;lt;source lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
override_dh_installinfo:&lt;br /&gt;
	dh_installinfo -phello&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
asennettaisiin [[info]]-tiedostot vain &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt;-pakettia luotaessa.&lt;br /&gt;
&lt;br /&gt;
== Pbuilder ==&lt;br /&gt;
Pbuilder on järjestelmä, joka kääntää ja rakentaa paketit omassa pienessä [[chroot]]-järjestelmässä. Pbuilderia käytettäessä saavutetaan mm. seuraavat edut:&lt;br /&gt;
#Käännösaikaiset riippuvuudet (&#039;&#039;build-depends&#039;&#039;) asennetaan automaattisesti&lt;br /&gt;
#Paketti käännetään puhtaassa ja mahdollisimman yksinkertaisessa ympäristössä, johon ei ole asennettu mitään ylimääräistä. Näin varmistetaan, että paketin kääntäminen onnistuu kaikissa järjestelmissä ja että käännösaikaiset riippuvuudet ovat riittävät.&lt;br /&gt;
#Paketin voi kääntää eri jakeluille ja jopa eri arkkitehtuurille&lt;br /&gt;
&lt;br /&gt;
Lisätietoja Pbuilderin käytöstä löytyy artikkelista [[Pbuilder]].&lt;br /&gt;
&lt;br /&gt;
== Paketin päivittäminen ja muokkaaminen ==&lt;br /&gt;
Edellä käsiteltiin uuden paketin tekemistä. Monesti eteen tulee kuitenkin myös tilanteita, joissa jo olemassa olevaa pakettia tulee muuttaa tai päivittää. Päivittämiselle tulee tarve kun paketoidusta ohjelmasta julkaistaan uusi versio tai vaikkapa silloin, kun ohjelmassa oleva ohjelmavirhe (bugi) korjataan &#039;&#039;patch&#039;&#039;-tiedostolla.&lt;br /&gt;
&lt;br /&gt;
Muokkauksen tekeminen alkaa hakemalla lähdekoodipaketti. Tämä onnistuu kätevästi komennolla &amp;lt;tt&amp;gt;[[apt-get]] source paketti&amp;lt;/tt&amp;gt;. Tällöin &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; hakee nykyiseen hakemistoon paketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedoston, muutokset sisältävän &amp;lt;tt&amp;gt;.diff.gz&amp;lt;/tt&amp;gt;-tiedoston ja alkuperäisen ohjelman sisältävän &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt;-paketin. Lisäksi hakemistoon syntyy &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt;-hakemisto, jonka sisältä löytyy sekä itse ohjelma että siihen tehdyt muutokset (mm. &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;)-hakemisto.&lt;br /&gt;
&lt;br /&gt;
Jos nyt halutaan esimerkiksi korjata ohjelmassa oleva bugi, voidaan edellä neuvotulla tavalla lisätä pakettiin uusi &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedosto. Tämän lisäksi on aina muistettava kirjata tiedot muutoksesta &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostoon. Tämä onnistuu helpoiten komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Muutoslokin on tarkoitus tarkkaan kertoa, mitä muutoksia on tehty. Yleensä muutos korjaa jonkun vianhallintajärjestelmässä olevan ilmoitetun bugin, jolloin muutoslokissa mainitaan tämän bugin numero (Debianin vianseurantajärjestelmän kanssa käytetään syntaksia &amp;lt;tt&amp;gt;Closes: #numero&amp;lt;/tt&amp;gt; ja Ubuntun Launchpad-järjestelmässä ilmoitettujen bugien kanssa syntaksia LP: #numero).&lt;br /&gt;
&lt;br /&gt;
Jos paketoidusta ohjelmasta on ilmestynyt uusi versio, täytyy toimia hieman eri tavalla. Ensimmäinen tehtävä on ladata uuden ohjelman lähdekoodipaketti ja tutustua uuden version mukana tuomiin muutoksiin (&amp;lt;tt&amp;gt;NEWS&amp;lt;/tt&amp;gt;- tai &amp;lt;tt&amp;gt;CHANGELOG&amp;lt;/tt&amp;gt;-tiedosto). Tämän jälkeen puretaan paketti tiedostoon &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt; ja uudelleennimetään lähdekoodipakettitiedosto nimelle &amp;lt;tt&amp;gt;ohjelman_versio.orig.tar.gz&amp;lt;/tt&amp;gt;. Eli aivan kuin olisimme paketoimassa uutta ohjelmaa. &lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen voidaan kopioida vanha &#039;&#039;debianisointi&#039;&#039; eli &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto vanhasta paketista uuteen pakettiin. Helpoimmissa tapauksissa tämä riittää, mutta etenkin käytettävien patchien toimiminen ja tarpeellisuus uuden version kanssa on todella tärkeä selvittää. Lisäksi ohjelman kääntäminen ja asentaminen saattaa uuden version kanssa tapahtua eri tavalla. Tällaisessa tapauksessa muutoslokiin kirjataan maininta uudesta versiosta (&amp;quot;New upstream release&amp;quot;) ja kerrotaan myös, mitä muita muutoksia pakettiin tehtiin (esimerkiksi jätettiin pois tarpeettomaksi käynyt patchi.&lt;br /&gt;
&lt;br /&gt;
Uuden version numero riippuu siitä, paketoitiinko uusi versio vai korjattiinko vain vanhassa versiossa oleva ongelma. Jos itse ohjelman versio ei muuttunut, kasvatetaan paketin &amp;quot;revision&amp;quot;-numeroa yhdellä, esimerkiksi versio &amp;quot;0.4.1-2&amp;quot; muuttuisi versioksi &amp;quot;0.4.1-3&amp;quot;. Jos taas ohjelman versio muuttui, asetetaan paketin versioksi uuden version numero ja &amp;quot;revisioniksi&amp;quot; asetetaan 1: &amp;quot;0.4.1-2&amp;quot; -&amp;gt; &amp;quot;0.4.2-1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Näiden toimenpiteiden jälkeen voidaan paketti luoda kuten normaalistikin &amp;lt;tt&amp;gt;debuild&amp;lt;/tt&amp;gt;- ja &amp;lt;tt&amp;gt;pdebuild&amp;lt;/tt&amp;gt;-komennoilla.&lt;br /&gt;
&lt;br /&gt;
===Debdiff===&lt;br /&gt;
Debdiff on [[diff]]in kaltainen ohjelma, joka vertailee kahta deb-pakettia. Sitä käytetään mm. silloin, kun lähetetään itse tehty korjaus ohjelman alkuperäiselle paketoijalle tai vianseurantajärjestelmään. Yleensä näin toimitaan silloin, kun muutoksen tekijällä ei ole oikeutta lähettää korjauksiaan suoraan virallisiin pakettivarastoihin.&lt;br /&gt;
&lt;br /&gt;
Debdiffille annetaan kahden lähdekoodipaketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedostot:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc&lt;br /&gt;
Jolloin ohjelma tulostaa erot ruudulle. Yleensä erot kannattaa [[Komentorivin perusteet#putkitus|putkittaa]] tiedostoon:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc &amp;gt; erot.debdiff&lt;br /&gt;
&lt;br /&gt;
== Pakettini on valmis, miten saan sen jakeluni pakettilähteisiin ==&lt;br /&gt;
Paketin saaminen jakelun virallisiin pakettilähteisiin on jakelun käytännöistä riippuen enemmän tai vähemmän työläs prosessi, johtuen muun muassa laadunvarmistuksesta. Teknisellä tasolla paketit viedään jakeluihin [[dput]]- tai [[dupload]]-työkaluilla. Katso lisää näiden työkalujen käytöstä näiden omilta sivuilta.&lt;br /&gt;
&lt;br /&gt;
Debianilla on käytössä [http://mentors.debian.net mentors.debian.net]-palvelu, jonne kaikki voivat lähettää omia pakettejaan tarjolle lähdekoodimuodossa. Tämän jälkeen paketille hankitaan/pyydetään halukas &amp;quot;sponsori&amp;quot;, joka on kokenut Debian-kehittäjä jolla on oikeudet lisätä paketteja virallisiin pakettilähteisiin. Sponsoreita haetaan yleensä lähettämällä viesti &amp;lt;tt&amp;gt;debian-mentors&amp;lt;/tt&amp;gt;-sähköpostilistalle sivustolta löytyvien ohjeiden mukaan. Tämän jälkeen joku paketista kiinnostunut kehittäjä tarkistaa sen ja antaa yleensä korjausehdotuksia. Kun paketti on hänen mielestään riittävän laadukas, hän lisää sen pakettilähteisiin. Prosessi voi paketin laadusta ja sponsoroijasta riippuen kestää pitkäänkin, ja vapaaehtoisuuteen perustamalla saattaa vaatia omaa aktiivisuutta ja kohteliasta ajoittaista tiediustelua.&lt;br /&gt;
&lt;br /&gt;
Virallisten pakettilähteiden lisäksi voit myös ylläpitää omaa. Paketteja voi myös jakaa helposti esimerkiksi [[Launchpad | Launchpadin]] tarjoaman [[PPA]]-ominaisuuden avulla. PPA automatisoi paketin kääntämistä ja julkaisua. Halutessasi voit myös vain yksinkertaisesti jakaa tekemääsi deb-tiedostoa millä tahansa tiedostonjakotekniikalla.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[CDBS]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://www.debian.org/doc/maint-guide/index.en.html#contents Debian New Maintainers&#039; Guide]&lt;br /&gt;
*[http://www.debian.org/doc/debian-policy/ Debian policy] - Debianin käytäntöjä ja sääntöjä&lt;br /&gt;
*Ubuntun [https://wiki.ubuntu.com/PackagingGuide PackagingGuide]-opas&lt;br /&gt;
*[http://wiki.ubuntu.com/PackagingGuide Packaging guide - Ubuntu Wiki]&lt;br /&gt;
*[http://www.debian-administration.org/articles/286 Setting up your own APT reposity]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Paketinhallinta]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Resolv.conf&amp;diff=47095</id>
		<title>Resolv.conf</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Resolv.conf&amp;diff=47095"/>
		<updated>2016-08-30T10:46:08Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: displaytitle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:resolv.conf}}&lt;br /&gt;
&amp;lt;tt&amp;gt;/etc/resolv.conf&amp;lt;/tt&amp;gt; on Linux-järjestelmän &amp;quot;resolverin&amp;quot; [[asetustiedosto]]. Käytännössä se sisältää mm. järjestelmän käyttämien [[DNS|nimipalvelinten]] asetukset. Nameserver-alkuiset rivit sisältävät nimipalvelimien osoitteita (korkeintaan kolme).&lt;br /&gt;
&lt;br /&gt;
Näiden lisäksi tiedostossa voi olla&lt;br /&gt;
* domain-rivi: tätä verkkotunnusta käytetään annettaessa koneennimiä ilman verkkotunnusta; oletuksena on koneen oma domain&lt;br /&gt;
* search-rivi: useampi verkkotunnus, joiden alaisuudesta koneen nimeä on etsittävä&lt;br /&gt;
* sortlist: nimipalvelulta saadut ip-osoitteet järjestetään tämän mukaiseen järjestykseen&lt;br /&gt;
* options: eri resolv-kirjaston valitsimia&lt;br /&gt;
&lt;br /&gt;
Tiedostoa muokataan usein automaattisesti esimerkiksi [[DHCP]]-kyselyn tai [[PPP]]-yhteyden muodostamisen yhteydessä. Jos esimerkiksi ADSL-modeemi korvaa palveluntarjoajan nimipalvelimet omalla huonosti toimivalla, tätä käyttäytymistä saattaa joutua säätämään DHCP-asiakkaan asetuksista.&lt;br /&gt;
&lt;br /&gt;
==Esimerkki==&lt;br /&gt;
 nameserver 192.168.23.2&lt;br /&gt;
 nameserver 192.168.22.3&lt;br /&gt;
 search mundomain.example.com localnet&lt;br /&gt;
 options debug timeout:5 inet6&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* Tiedosto /etc/[[hosts-tiedosto|hosts]], jossa joidenkin koneitten nimet ja ip-osoitteet&lt;br /&gt;
* Tiedosto /etc/[[nsswitch.conf]], jossa määritellään mm. missä järjestyksessä eri tietolähteitä käytetään&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Asetustiedostot]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debianin_asentaminen_USB-muistilta&amp;diff=47094</id>
		<title>Debianin asentaminen USB-muistilta</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debianin_asentaminen_USB-muistilta&amp;diff=47094"/>
		<updated>2016-08-30T10:37:54Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Näiden ohjeiden avulla onnistuu [[Debian GNU/Linux]]in asentaminen USB-muistitikulta. Asennusta varten tarvitset Linux-koneen, jolla tehdä asiaan soveltuva muistitikku. Toimintaohjeet-osia on artikkelissa kaksi riippuen siitä, mitä Debianin versiota asennat. Ensimmäiset ohjeet ovat todennäköisemmin ne, joita kaipaat.&lt;br /&gt;
&lt;br /&gt;
==Valmistelu==&lt;br /&gt;
1. Laita soveltuva [[muistitikku]] (vähintään 256 megatavua) kiinni koneeseen ja varmista ettei sillä ole mitään tarpeellista, sillä se tyhjenee näiden ohjeiden seurauksena.&lt;br /&gt;
&lt;br /&gt;
2. Selvitä muistitikun saama [[laitetiedosto|laitenimi]] ja [[umount|irroita]] muistitikku järjestelmästä, jos se on automaattisesti [[mount|liitetty.]] Laitenimi selviää [[komentorivi]]llä komentamalla &amp;lt;tt&amp;gt;[[dmesg]]|[[tail]]&amp;lt;/tt&amp;gt; ja etsimällä laitenimi tulosteesta. Esimerkki:&lt;br /&gt;
 [328806.500166] sd 11:0:0:0: [sdb] Write Protect is off&lt;br /&gt;
 [328806.500170] sd 11:0:0:0: [sdb] Mode Sense: 23 00 00 00&lt;br /&gt;
 [328806.500173] sd 11:0:0:0: [sdb] Assuming drive cache: write through&lt;br /&gt;
 [328806.515056] sd 11:0:0:0: [sdb] 7856128 512-byte hardware sectors: (4.02 GB/3.74 GiB)&lt;br /&gt;
 [328806.518051] sd 11:0:0:0: [sdb] Write Protect is off&lt;br /&gt;
 [328806.518057] sd 11:0:0:0: [sdb] Mode Sense: 23 00 00 00&lt;br /&gt;
 [328806.518061] sd 11:0:0:0: [sdb] Assuming drive cache: write through&lt;br /&gt;
 [328806.518069]  sdb:&lt;br /&gt;
 [328806.661336] sd 11:0:0:0: [sdb] Attached SCSI removable disk&lt;br /&gt;
 [328806.661465] sd 11:0:0:0: Attached scsi generic sg2 type 0&lt;br /&gt;
Tässä tapauksessa tikku sai laitenimekseen &amp;lt;tt&amp;gt;sdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Toimintaohjeet Squeezesta (6.0) alkaen==&lt;br /&gt;
3. Nouda sopiva verkkoasennukseen sopiva levykuva [http://www.debian.org/CD/netinst/ täältä]. i386 toimii kaikilla PC:illä, amd64 useimmilla nykyisillä.&lt;br /&gt;
&lt;br /&gt;
4. Usb-tikun valmistelu onnistuu todella helposti kirjoittamalla levykuva suoraan muistitikulle (korvaa sdb edellisessä kohdassa selvittämälläsi laitenimellä):&lt;br /&gt;
 dd if=debian-netinst.iso of=/dev/sdb&lt;br /&gt;
&lt;br /&gt;
==Toimintaohjeet Lennyyn (5.0) asti==&lt;br /&gt;
{{Historiallinen}}&lt;br /&gt;
&lt;br /&gt;
3. Nouda soveltuva käynnistys[[levykuva]] lähimmältä Debian-peilipalvelimelta (Suomessa esim. ftp.fi.debian.org), esimerkkiosoitteena http://ftp.fi.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz&lt;br /&gt;
&lt;br /&gt;
4. Kopioi levykuva muistitikulle. Korvaa komennossa sdb kohdassa 2 selvittämälläsi laitenimellä. Esimerkiksi näin:&lt;br /&gt;
 [[zcat]] boot.img.gz &amp;gt; /dev/sdb&lt;br /&gt;
&lt;br /&gt;
5. Nouda netinst- tai businesscard-asennuslevykuva Debian-peililtä. Levykuvat löytyvät [http://www.debian.org/CD/netinst/#netinst-stable täältä].&lt;br /&gt;
&lt;br /&gt;
6. Kopioi levykuva muistitikulle:&lt;br /&gt;
 [[mount]] /dev/sdb /mnt&lt;br /&gt;
 [[cp]] levykuva.iso /mnt&lt;br /&gt;
 [[umount]] /dev/sdb&lt;br /&gt;
&lt;br /&gt;
7. Laita muistitikku koneeseen johon haluat asennuksen tehdä, ja käynnistä kone uudelleen. Etsi BIOSista asetus USB-muistilta käynnistämistä varten.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://blogs.koolwal.net/2009/02/25/installing-linux-on-usb-part-7-install-debian-linux-from-usb-drive/  Installing Linux on USB – Part 7: Install Debian Linux from USB drives]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=47093</id>
		<title>Deb-paketin tekeminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=47093"/>
		<updated>2016-08-30T10:33:42Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: /* Katso myös */ cdbs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Debian]]issa ja siihen pohjautuvissa jakeluissa (esim. [[Ubuntu]]ssa ja [[Linux Mint]]issä) käytetään [[Dpkg]]-paketinhallintajärjestelmää. Dpkg:ssa paketit ovat &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-tiedostoja, jotka sisältävät itse ohjelman lisäksi mm. tiedot paketin riippuvuuksista ja siitä, mihin ohjelma asennetaan. Deb-pakettien tekeminen ei ole mitenkään ylivoimainen tehtävä, kunhan perusasiat ja mm. [[komentorivi|komentorivin käyttö]] ovat hallussa.&lt;br /&gt;
&lt;br /&gt;
Tässä oppaassa luodaan aluksi malliksi yksinkertainen paketti [http://www.gnu.org/software/hello/ GNU Hello] -ohjelmasta, joka on [[GNU]]-projektin esimerkkiohjelma. Ohjelman lähdekoodipaketin voi ladata [http://ftp.gnu.org/gnu/hello/ GNU:n palvelimelta]. Paketin luomisessa käytetään tässä apuna Debhelper-apuohjelmaa (&amp;lt;tt&amp;gt;dh&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Debianin eri versiosta löytyvän paketin voi kääntää käytetylle versiolle sopivaksi tai pakettiin tehdä pieniä muutoksia huomattavasti helpommin kuin tätä ohjetta seuraamalla, komennoilla &amp;lt;tt&amp;gt;apt-get build-dep paketti&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;apt-get source paketti&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;dpkg-deb -build pakettihakemisto&amp;lt;/tt&amp;gt;, jolloin muutokset tehdään viimeksi mainittujen välissä (varsinainen muutos + uusi kohta tiedostoon &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;). Jos paketti tehdään valmiista Debianin lähdekoodipaketista, kääntämisen binääripaketiksi voi hoitaa paketin hakemisen yhteydessä komennolla &amp;lt;tt&amp;gt;apt-get --compile source paketti&amp;lt;/tt&amp;gt;. Lisätietoja näistä komennoista löytyy artikkeleista [[apt-get]] ja [[dpkg]].&lt;br /&gt;
&lt;br /&gt;
== Valmistelut ==&lt;br /&gt;
Aluksi on hyvä asentaa muutamia perustyökaluja, jotka sisältävät paketointityössä tarvittavia tai valinnaisia apuohjelmia. Asenna siis seuraavat paketit:&lt;br /&gt;
 dpkg-dev autoconf dh-make devscripts [[fakeroot]] [[Gpg|gnupg]] build-essential lintian libtool automake pbuilder&lt;br /&gt;
&lt;br /&gt;
Kun paketit on asennettu, lataa Hello-ohjelman lähdekoodi ja [[tar|pura]] se työhakemistoosi (&amp;lt;code&amp;gt;tar xzvf &#039;&#039;tiedosto&#039;&#039;&amp;lt;/code&amp;gt;). Nyt sinulla pitäisi olla työhakemistossasi tiedosto &amp;lt;tt&amp;gt;hello-2.10.tar.gz&amp;lt;/tt&amp;gt; ja hakemisto &amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Paketoinnin aloitus ==&lt;br /&gt;
Aluksi kannattaa kokeilla, että saat ohjelman [[Kääntäminen|käännettyä]] ja ajettua. Sinun pitäisi jo osata tehdä tämä, jos luet tätä opasta, mutta lyhykäisyydessään voit asentaa Hellon hakemistoon &amp;lt;tt&amp;gt;~/hello&amp;lt;/tt&amp;gt; seuraavasti:&lt;br /&gt;
 ./configure --prefix=/home/käyttäjä/hello&lt;br /&gt;
 [[make]]&lt;br /&gt;
 make install&lt;br /&gt;
Nyt hakemistosta ~/hello pitäisi löytyä alihakemistot bin ja share, joissa Hellon tiedostot ovat.&lt;br /&gt;
&lt;br /&gt;
Putsaa nyt hakemisto, jossa käänsit Hellon komennolla&lt;br /&gt;
 make distclean&lt;br /&gt;
Nyt jos ohjelma kääntyi oikein, voimme aloittaa itse paketin tekemisen.&lt;br /&gt;
&lt;br /&gt;
=== Pohja ===&lt;br /&gt;
Siirry ohjelman hakemistoon (hello-2.10) ja aja komento&lt;br /&gt;
 dh_make -e sinun@sähköpostiosoitteesi -f ../hello-2.10.tar.gz&lt;br /&gt;
Toinen parametri on siis paketin tekijän sähköpostiosoite ja neljäs alkuperäinen lähdekooditiedosto. Ohjelma kysyy aluksi, minkätyyppistä pakettia olemme luomassa:&lt;br /&gt;
 Type of package: (single, indep, library, python)&lt;br /&gt;
 [s/i/l/p]?&lt;br /&gt;
Vastaa tähän s (&#039;&#039;single binary&#039;&#039;), sillä olemme luomassa yksinkertaista yhden ohjelman käsittävää pakettia. Tämän jälkeen vahvista tiedot enterillä, jonka jälkeen dh_make luo hakemistoon &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-alihakemiston, joka sisältää tiedostot, joiden perusteella varsinainen paketti luodaan. Se myös luo ylähakemistoon tiedoston &amp;lt;tt&amp;gt;paketti_versio.orig.tar.gz&amp;lt;/tt&amp;gt;, tässä tapauksessa siis &amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt;, joka sisältää alkuperäisen lähdekoodipaketin.&lt;br /&gt;
&lt;br /&gt;
Huomaa, että &amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; kuuluu ajaa vain kerran! Tulevien muutosten pohjalla käytetään paketin olemassa olevaa &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-kansiota, eikä dh_makea siis tarvitse ajaa uudelleen.&lt;br /&gt;
&lt;br /&gt;
== Asennushakemisto ==&lt;br /&gt;
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon &amp;lt;tt&amp;gt;debian/hello/usr/bin/hello&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Muiden muassa [[Autoconf]]ia, [[CMake]]a ja [[QMake]]a käyttävien pakettien kanssa paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin &amp;lt;tt&amp;gt;--prefix=/hakemisto/jonne/ohjelma/asennetaan&amp;lt;/tt&amp;gt;. Paketointiapuohjelma antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.&lt;br /&gt;
&lt;br /&gt;
Joskus, kun ohjelman kääntäminen ei suju Debhelperiltä automaattisesti, asennushakemistosta on huolehdittava itse. Tämä tulee eteen kun myöhemmin muokkaamme tiedostoa &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Asetustiedostot ==&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; loi &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemiston, joka sisältää monia tiedostoja, joiden perusteella itse paketti luodaan. Tässä vaiheessa on käytävä ne läpi ja muokattava sopiviksi.&lt;br /&gt;
&lt;br /&gt;
=== control ===&lt;br /&gt;
Tiedostossa &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt; kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: &amp;lt;insert the upstream URL, if relevant&amp;gt;&lt;br /&gt;
Vcs-Git: git://anonscm.debian.org/collab-maint/hello.git&lt;br /&gt;
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: &amp;lt;insert up to 60 chars description&amp;gt;&lt;br /&gt;
 &amp;lt;insert long description, indented with spaces&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Riveillä 1–9 on &#039;&#039;lähdekoodipaketin&#039;&#039; (engl. &#039;&#039;source&#039;&#039;) perustiedot:&lt;br /&gt;
* Rivillä 1 on lähdekoodipaketin nimi&lt;br /&gt;
* Rivillä 2 kerrotaan, mihin osioon paketti kuuluu. Debianissa paketit osioihin, joita ovat mm. &#039;&#039;main&#039;&#039; (vapaat ohjelmat), &#039;&#039;non-free&#039;&#039; (ohjelmat, jotka eivät ole vapaita) ja &#039;&#039;contrib&#039;&#039; (ohjelmat, jotka riippuvat vapaista ohjelmista). Nämä ohjelmat on yhä jaettu pienempiin osioihin, kuten &#039;&#039;devel&#039;&#039; (kehitystyökalut) ja &#039;&#039;mail&#039;&#039; (sähköpostiohjelmat). Hellolle sopiva osio voisi olla &#039;&#039;text&#039;&#039;. Osiot on listattu [http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections Debian policyssä].&lt;br /&gt;
* Kolmannella rivillä kerrotaan, kuinka tärkeää käyttäjälle on asentaa tämä paketti. Vaikka &amp;quot;Terve maailma!&amp;quot; -viestin tulostava ohjelma voi tuntua tärkeältä, ehkäpä se ei kuitenkaan ole yhtä tärkeä kuin vaikka ydin, joten asetetaan sen tärkeysasteeksi &#039;&#039;optional&#039;&#039;, jota käytetään useimmille paketeille.&lt;br /&gt;
* Neljännellä rivillä on paketin tekijän nimi ja sähköpostiosoite&lt;br /&gt;
* Rivillä 5 listataan pilkulla erotettuna paketit, jotka tarvitaan tämän paketin kääntämiseen. Jos ohjelmasta on oltava tietty versio, haluttu versio voidaan ilmoittaa sulkeissa (esimerkissä tarvitaan &#039;&#039;debhelper&#039;&#039;-paketin versio 9 tai uudempi). Käytännössä aina tarvittavia paketteja (esim. gcc ja make) ei tarvitse luetella, sillä ne otetaan mukaan automaattisesti. Kuitenkin kaikki muut kääntämisessä tarvittavat vähänkin harvinaisemmat paketit on lueteltava. Tässä vaiheessa voitaisiin myös samalla tavalla luetella paketit, jotka estävät kääntämisen (&#039;&#039;Build-Conflicts: paketti1, paketti2&#039;&#039;). Hello on sen verran helppo kääntää, ettei meidän tarvitse nyt lisätä tähän mitään ylimääräisiä paketteja.&lt;br /&gt;
* Rivillä 6 kerrotaan, minkä &#039;&#039;Debian Policy&#039;&#039; -standardin version mukainen paketti on. Tähän ei tarvitse koskea.&lt;br /&gt;
* Riville 7 kirjoitetaan ohjelman kotisivu.&lt;br /&gt;
* Riveillä 8 ja 9 voidaan kertoa, missä [[versionhallintajärjestelmä]]ssä debian-pakettia ylläpidetään. Me voimme poistaa nämä rivit, koska emme tässä käytä versionhallintaa.&lt;br /&gt;
&lt;br /&gt;
Riveillä 11–15 on &#039;&#039;binääripaketin&#039;&#039; tiedot:&lt;br /&gt;
* Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi.&lt;br /&gt;
* Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon &amp;quot;any&amp;quot;, jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. jos se on ohjepaketti tai [[Perl]]- tai [[Python]]-skripti), arkkitehtuuriksi laitetaan &amp;quot;all&amp;quot;.&lt;br /&gt;
* Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. &amp;quot;&#039;&#039;${shlibs:Depends}&#039;&#039;&amp;quot; aiheuttaa sen, että pakettia luotaessa pyritään riippuvuuksiksi lisäämään automaattisesti ne paketit, joiden tiedostoja vasten tämän paketin konekieliset tiedostot on linkitetty.&lt;br /&gt;
* Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedosto voisi näyttää tältä:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: text&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: https://www.gnu.org/software/hello/&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: Hello world -ohjelma&lt;br /&gt;
 Klassinen Hello world -ohjelma, jonka avulla opettelemme &lt;br /&gt;
 deb-pakettien tekemistä.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin ====&lt;br /&gt;
Riippuvuuksien lisäksi paketti voi myös suositella jonkin toisen paketin asentamista, tai se voi myös kieltäytyä asentumasta samaan järjestelmään jonkin toisen paketin kanssa (ristiriita toisen paketin kanssa, engl. &#039;&#039;conflict&#039;&#039;). Tällaiset paketit esitellään &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedostossa samaan tapaan kuin riippuvuudet. &lt;br /&gt;
&lt;br /&gt;
Riippuvuuksien lisäksi apt tukee seuraavia suhteita pakettien välillä:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Recommends&amp;lt;/tt&amp;gt;: Suositeltavat paketit. Yleensä paketteja, joita käytetään käytännössä aina tämän paketin kanssa. Esim. [[aptitude]] asentaa nämä automaattisesti, apt vain suosittelee.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Suggests&amp;lt;/tt&amp;gt;: Muita tämän paketin kanssa hyviä paketteja. Monet apt:n edustaohjelmat (kuten aptitude) näyttävät tämän listan, apt ei.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Pre-Depends&amp;lt;/tt&amp;gt;: Vahvempi kuin Depends. Vaatii, että paketit on asennettu ja otettu käyttöön ennen kuin suostuu asentamaan tämän paketin. Käytetään erittäin harvoin.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Conflicts&amp;lt;/tt&amp;gt;: Paketit, joiden kanssa samaan järjestelmään tätä pakettia ei voida asentaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Provides&amp;lt;/tt&amp;gt;: Mitkä virtuaaliset paketit tämä paketti toteuttaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Replaces&amp;lt;/tt&amp;gt;: Paketit, jotka tämä paketti korvaa.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi pakettimme nyt vaatisi paketin &#039;&#039;foo&#039;&#039; version 2.3 tai uudemman, paketti &#039;&#039;bar&#039;&#039; olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä &#039;&#039;libfoo&#039;&#039;:n kanssa, voisimme lisätä seuraavat rivit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}, foo (&amp;gt;= 2.3)&lt;br /&gt;
Recommends: bar&lt;br /&gt;
Conflicts: libfoo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vastaavasti on mahdollista asettaa myös lähdekoodipaketille &#039;&#039;Build-Conflicts&#039;&#039; ja muut vastaavat suhteet.&lt;br /&gt;
&lt;br /&gt;
=== copyright ===&lt;br /&gt;
Paketin tekijänoikeuksista kerrotaan tiedostossa &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;. Tämän tiedoston muoto on periaatteessa vapaa, mutta kannattaa seurata [https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Machine-readable debian/copyright file] -standardia. Hyvän tiedoston saa muokkaamalla dh_maken luomaa. Tässä tiedostosta tulee käydä ilmi paketin luoja, alkuperäinen tekijä ja ohjelman tekijänoikeustiedot (esim. [[GPL]]-lisenssin version 3 tai myöhemmän alainen).&lt;br /&gt;
&lt;br /&gt;
=== changelog ===&lt;br /&gt;
dh_make luo seuraavanlaisen pohjan &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostolle: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 hello (2.10-1) unstable; urgency=medium&lt;br /&gt;
2&lt;br /&gt;
3   * Initial release (Closes: #nnnn)  &amp;lt;nnnn is the bug number of your ITP&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
4  -- Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;  Fri, 29 Jul 2016 11:42:23 +0300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rivillä 1 on aluksi lähdekoodipaketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (&#039;&#039;urgency&#039;&#039;), yleensä &amp;quot;medium&amp;quot; on sille oikea arvo.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen seuraavilla riveillä on itse muutosloki (engl. &#039;&#039;changelog&#039;&#039;). Rivin alussa on kaksi välilyöntiä ja tähti (*). Viimeisenä (rivillä 4) on tieto paketin tekijästä ja tekoajankohdasta (esimerkin mukaisessa muodossa). Tämän rivin alussa on yksi välilyönti.&lt;br /&gt;
&lt;br /&gt;
Yleensä paketteihin tehdyt muutokset korjaavat joitain vianhallintajärjestelmään ilmoitettuja vikoja (bugeja). Jos paketti korjaa jonkin ilmoitetun vian, se ilmoitetaan muutoslokissa. Jos paketti esimerkiksi korjaa Debianin vianseurantajärjestelmän bugin numero 123456, tulee muutoslokissa esiintyä merkkijono &amp;lt;tt&amp;gt;Closes: #123456&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Muutoslokia pystyy muokkaamaan joko muokkaamalla tekstitiedostoa suoraan tai käyttämällä [[dch]]-komentoa (tai sen pidempää muotoa, komentoa &amp;lt;tt&amp;gt;debchange&amp;lt;/tt&amp;gt;). Sopivan pohjan uudelle muutokselle saa luotua komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Tämä avaa muutoslokin &amp;lt;tt&amp;gt;EDITOR&amp;lt;/tt&amp;gt;-[[ympäristömuuttuja]]ssa asetettuun tekstieditoriin. Muutoksen tekijän nimi haetaan ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBFULLNAME&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;NAME&amp;lt;/tt&amp;gt; ja sähköpostiosoite ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBEMAIL&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;EMAIL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== rules ===&lt;br /&gt;
Tiedosto &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt; on [[Makefile]]n tapainen tiedosto, jonka perusteella varsinainen paketti luodaan. Tämän tiedoston perusteella ohjelma käännetään ja asennetaan hakemistoon &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, tässä tapauksessa &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;. Tähän hakemistoon asentuvien tiedostojen perusteella luodaan varsinainen paketti.&lt;br /&gt;
&lt;br /&gt;
Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/make -f&lt;br /&gt;
# See debhelper(7) (uncomment to enable)&lt;br /&gt;
# output every command that modifies files on the build system.&lt;br /&gt;
#export DH_VERBOSE = 1&lt;br /&gt;
&lt;br /&gt;
# see FEATURE AREAS in dpkg-buildflags(1)&lt;br /&gt;
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all&lt;br /&gt;
&lt;br /&gt;
# see ENVIRONMENT in dpkg-buildflags(1)&lt;br /&gt;
# package maintainers to append CFLAGS&lt;br /&gt;
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic&lt;br /&gt;
# package maintainers to append LDFLAGS&lt;br /&gt;
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed&lt;br /&gt;
&lt;br /&gt;
%:&lt;br /&gt;
	dh $@ --with autotools_dev&lt;br /&gt;
&lt;br /&gt;
# dh_make generated override targets&lt;br /&gt;
# This is example for Cmake (See https://bugs.debian.org/641051 )&lt;br /&gt;
#override_dh_auto_configure:&lt;br /&gt;
#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos tiedoston syntaksi on epäselvä, katso artikkeli [[Makefile]]. Suurin osa tiedoston sisällöstä on #-merkillä alkavia kommentteja, poikkeuksena kuitenkin ensimmäinen rivi, joka on erityinen [[wikipedia:en:Shebang (Unix)|#!-rivi]].&lt;br /&gt;
&lt;br /&gt;
Rivien 6–7 &amp;quot;hardening&amp;quot; viittaa [https://wiki.debian.org/Hardening#Environment_variables Debianin käyttöön ottamiin GCC-valitsimiin], joiden avulla voitaisiin estää mm. tietyntyyppisiä tietomurtoja.&lt;br /&gt;
&lt;br /&gt;
Riveillä 9–13 asetetaan käännösoptiot, jos niitä tarvitsee erikseen määritellä. Esimerkiksi [[gcc|C-kääntäjän]] käännösparametrit laitetaan muuttujaan DEB_CFLAGS_MAINT_APPEND, C++-kääntäjän muuttujaan DEB_CXXFLAGS_MAINT_APPEND ja linkittäjän ([[ld]]) muuttujaan DEB_LDFLAGS_MAINT_APPEND.&lt;br /&gt;
&lt;br /&gt;
Rivillä 15 oleva Makefilen jokerimerkki (engl. &#039;&#039;wildcard&#039;&#039;) &#039;&#039;&#039;%&#039;&#039;&#039; tarkoittaa, että kun kutsutaan &amp;lt;tt&amp;gt;debian/rules &#039;&#039;build&#039;&#039;&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;debian/rules &#039;&#039;binary&#039;&#039;&amp;lt;/tt&amp;gt;, make suorittaa rivin 16 mukaan komennon &amp;lt;tt&amp;gt;dh &#039;&#039;build&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;dh &#039;&#039;binary&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt;. Komento &amp;lt;tt&amp;gt;dh build&amp;lt;/tt&amp;gt; taas puolestaan suorittaa pitkän listan erilaisia dh-alkuisia ohjelmia, jotka ovat debhelperin funktiokutsuja, jotka tekevät erilaisia pieniä operaatioita rakentaen pakettia. Mm. seuraavia funktioita on tarjolla:&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Komento&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Kuvaus&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testdir&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että ollaan oikeassa hakemistossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testroot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että meillä on pääkäyttäjän oikeudet kun niitä tarvitaan&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_configure&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa ./configure:n tai vastaavan vaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_build&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Kääntää paketin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa make installin tai vastaavan asentamisvaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_strip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Ajaa [[strip]]-komennon suoritettaville tiedostoille, jolloin niiden koko pienenee&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_compress&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Pakkaa [[gzip]]illä [[man]]-sivut ja ohjetiedostot, joiden koko ylittää 4kt&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_gencontrol&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Luo binääripaketille &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston ja kopioi sen hakemistoon &amp;lt;tt&amp;gt;debian/hello/DEBIAN&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_md5sums&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Laskee [[md5sum|MD5]]-tarkistussummat paketin tiedostoille&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Jos ohjelma ei asenna kaikkia tarpeellisia tiedostoja oikeisiin hakemistoihin autoconfin avulla (esim. komennolla &amp;lt;tt&amp;gt;make install&amp;lt;/tt&amp;gt;), voi käyttää tätä apufunktiota, jolle kerrotaan asennettavat tiedostot ja hakemistot &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;.install&amp;lt;/tt&amp;gt;-tiedostossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installchangelog&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa muutoslokin polkuun &amp;lt;tt&amp;gt;/usr/share/doc/package/changelog&amp;lt;/tt&amp;gt;. Jos komennolle annetaan parametrina paketin mukana tulevan muutoslokin tiedostonimi, asennetaan myös se.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_shlibdeps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Määrittää paketin riippuvuuksia binääritiedostoihin linkitettyjen kirjastotiedostojen perusteella&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installdocs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa &amp;lt;tt&amp;gt;debian/docs&amp;lt;/tt&amp;gt;-tiedostossa listatut tiedostot ja mm. &amp;lt;tt&amp;gt;debian/README.debian&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;-tiedostot polkuun &amp;lt;tt&amp;gt;/usr/share/doc/paketti&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Taulukossa on vain osa dh-funktioista, loput ovat man-sivulla debhelper(7). Rules-tiedostossamme viimeisenä on esimerkki &#039;&#039;override targetista&#039;&#039;, jollainen ajetaan vastaavan dh-ohjelman sijasta.&lt;br /&gt;
&lt;br /&gt;
Jos paketti ei jotain yleisistä käännösjärjestelmistä (kuten Ant, GNU Autotools, CMake, QMake tai tavallinen Makefile), on &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt; muokattava sellaiseksi, että ohjelma kääntyy ja asentuu polkuun &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;&amp;lt;/tt&amp;gt;. Se, miten kääntäminen tapahtuu, riippuu ohjelmasta. Funktion &amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt; avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binääripaketissa.&lt;br /&gt;
&lt;br /&gt;
=== compat ===&lt;br /&gt;
Tässä tiedostossa ilmoitamme, mitä versiota debhelperistä paketista käytetään. Kirjoitushetkellä viimeisin vakaa versio on 9.&lt;br /&gt;
&lt;br /&gt;
=== source/format ===&lt;br /&gt;
Tätä tiedostoa ei tarvitse muuttaa. Sen sisältö on:&lt;br /&gt;
 3.0 (quilt)&lt;br /&gt;
Quilt viittaa [[#Patchit|patchien hallintaan]] käyttämäämme ohjelmaan. 3.0:n merkityksestä voi lukea tarkemmin Debian Wikin artikkelista [https://wiki.debian.org/Projects/DebSrc3.0 DebSrc3.0].&lt;br /&gt;
&lt;br /&gt;
=== .ex-päätteiset tiedostot ===&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; luo &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistoon monia .ex-päätteisiä tiedostoja. Näitä tiedostoja muokkaamalla on mahdollista esimerkiksi saada paketti lisäämään tehtäviä [[cron]]ille ja kuvakkeen työpöytäympäristön valikkoon.&lt;br /&gt;
&lt;br /&gt;
Oletuksena .ex-päätteisiä tiedostoja ei huomioida. Jos haluat käyttää niitä, muokkaa tiedosto ensin sopivaksi ja poista tiedostonimestä tämän jälkeen .ex-pääte. Lisäksi tarkista, että sopivaa funktiota kutsutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa.&lt;br /&gt;
&lt;br /&gt;
Poista ne .ex-tiedostot, joita et tarvitse. Hellon tapauksessa emme tarvitse näitä. Seuraavassa esitellään kuitenkin muutamia yleisimmin käytettyjä tiedostoja joita luultavasti tulet joskus tarvitsemaan:&lt;br /&gt;
&lt;br /&gt;
==== cron.d ====&lt;br /&gt;
Tiedostoon &amp;lt;tt&amp;gt;cron.d&amp;lt;/tt&amp;gt; kirjoitetaan rivit, jotka halutaan lisätä &amp;lt;tt&amp;gt;cron&amp;lt;/tt&amp;gt;-järjestelmään. Rivit kirjoitetaan samassa muodossa kuin missä cronille annetaan suoritettavia tehtäviä. Katso lisätietoja artikkelista [[cron]].&lt;br /&gt;
&lt;br /&gt;
==== init.d ====&lt;br /&gt;
[[init]]-skripti, joka asennetaan polkuun &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedoston komennolla &amp;lt;tt&amp;gt;dh_installinit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== manpage.1 ====&lt;br /&gt;
Ohjelman [[man]]-sivu. Pisteen jälkeen oleva numero kertoo, mihin kategoriaan man-sivu asennetaan (kategoriat on listattu artikkelissa [[man]]). Man-sivu asennetaan paikoilleen &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa olevalla komennolla &amp;lt;tt&amp;gt;dh_installman debian/mansivu.1&amp;lt;/tt&amp;gt;. Tiedoston nimi on yleensä muotoa &amp;lt;tt&amp;gt;paketinnimi.numero&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== watch ====&lt;br /&gt;
Kertoo &amp;lt;tt&amp;gt;uscan&amp;lt;/tt&amp;gt;-ohjelmalle, miten paketin uudet versiot voi ladata internetistä. Lisätietoja tiedostomuodosta: &amp;lt;code&amp;gt;man 1 uscan&amp;lt;/code&amp;gt; ja [https://wiki.debian.org/debian/watch Debian Wiki]. Watch-tiedosto mahdollistaa lähdekoodipaketin helpon päivittämisen aina uusimpaan versioon.&lt;br /&gt;
&lt;br /&gt;
[[GNU]]:n projekteille, jollainen Hellokin on, toimii seuraavanlainen watch-tiedosto:&lt;br /&gt;
 version=4&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://ftp.gnu.org/gnu/@PACKAGE@/&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
    @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate&lt;br /&gt;
&lt;br /&gt;
== Tehdään paketti! ==&lt;br /&gt;
Nyt kun tarvittavat tiedostot on lopulta muokattu sopiviksi, on aika luoda varsinainen paketti. Siirry ohjelman päähakemistoon (&amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;) ja aja komento&lt;br /&gt;
 debuild&lt;br /&gt;
joka tekee seuraavat asiat:&lt;br /&gt;
*Siistii paketin (ajaa [[make]]lla komennon &amp;lt;tt&amp;gt;debian/rules clean&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Kääntää ohjelman (&amp;lt;tt&amp;gt;debian/rules build&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Luo binääripaketin (&amp;lt;tt&amp;gt;debian/rules binary&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Allekirjoittaa .dsc-tiedoston [[gpg|gnupgllä]]&lt;br /&gt;
*Luo ja allekirjoittaa .changes-tiedoston&lt;br /&gt;
*Käyttää [[fakeroot]]ia, jolloin pääkäyttäjän oikeuksia ei tarvita&lt;br /&gt;
Allekirjoitus vaatii, että olet luonut [[gpg]]:llä itsellesi avaimen. Tällöin sinulta kysytään avaimesi salasanaa.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen, jos kaikki sujui ilman virheitä, ylähakemistosta pitäisi löytyä seuraavat tiedostot:&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.build&amp;lt;/tt&amp;gt; – kääntämisloki (&#039;&#039;build log&#039;&#039;)&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.changes&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu tiedosto, joka sisältää paketin muutoslokin (&amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;) ja pakettiin liittyvien tiedostojen [[SHA]]1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.deb&amp;lt;/tt&amp;gt; – lopullinen deb-paketti!&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.debian.tar.xz&amp;lt;/tt&amp;gt; – &amp;lt;tt&amp;gt;debian-hakemiston&amp;lt;/tt&amp;gt; sisältö [[xz]]-pakattuna tar-arkistona&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.dsc&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston kaltainen tiedosto, jossa on listattu lähdekooditiedoston ja diff-tiedoston SHA1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt; – alkuperäinen lähdekoodi&lt;br /&gt;
&lt;br /&gt;
Nyt lopullinen paketti voidaan asentaa [[dpkg]]:llä:&lt;br /&gt;
 dpkg -i hello_2.10-1_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Kun myöhemmin teet muutoksia pakettiin, voit luoda uuden paketin nopeasti komennolla&lt;br /&gt;
 fakeroot debian/rules binary&lt;br /&gt;
joka ei kuitenkaan käännä ohjelmaa alusta lähtien (tärkeää huomata, jos muutat lähdekoodia).&lt;br /&gt;
&lt;br /&gt;
=== Lähdekoodipaketti ===&lt;br /&gt;
Edellä teimme tavallisen ns. &#039;&#039;binääripaketin&#039;&#039;, joka sisältää valmiiksi käännetyn ohjelman. Monesti on tarpeen tehdä myös lähdekoodipaketti, joka sisältää pakettiin ja sen kääntämiseen ja asentamiseen liittyvät tiedot (&amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto) ja ohjelman lähdekoodin. Tällöin paketti on mahdollista kääntää ja asentaa jokaiselle sopivalle alustalle kun taas käännetty &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-paketti toimii vain yhdellä alustalla (esim. amd64, i386 tai armhf).&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketteja käytetään etenkin kun paketti julkaistaan esimerkiksi lisäämällä se jonkin jakelun virallisiin pakettilähteisiin. Tällöin kehittäjä yleensä vain lähettää palvelimelle lähdekoodipaketin, jonka palvelin sitten kääntää useille eri arkkitehtuureille.&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketti luodaan ajamalla paketin päähakemistossa komento&lt;br /&gt;
 debuild -S -sa&lt;br /&gt;
Missä valitsin &amp;lt;tt&amp;gt;-S&amp;lt;/tt&amp;gt; tarkoittaa, että luodaan lähdekoodipaketti ja &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt; sisällyttää pakettiin mukaan alkuperäisen lähdekooditiedoston (&amp;lt;tt&amp;gt;.orig.tar.gz&amp;lt;/tt&amp;gt;). Tällöin ylähakemistoon pitäisi ilmestyä samanlaisten tiedostojen kuin luotaessa binääripakettia, paitsi että varsinaista &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-pakettia ei ilmesty. &lt;br /&gt;
&lt;br /&gt;
Nyt lähdekoodipaketti koostuu näistä tiedostoista (&amp;lt;tt&amp;gt;paketti.dsc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;paketti.orig.tar.gz&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;paketti.debian.tar.xz&amp;lt;/tt&amp;gt;), ja sitä voidaan hallita esimerkiksi &amp;lt;tt&amp;gt;dpkg-source&amp;lt;/tt&amp;gt;-ohjelmalla. Jos esimerkiksi olet saanut jostain lähdekoodipaketin, voit purkaa ja kääntää seuraavasti&lt;br /&gt;
 dpkg-source -x paketti.dsc&lt;br /&gt;
 cd paketti&lt;br /&gt;
 debuild&lt;br /&gt;
&lt;br /&gt;
Ilman &amp;lt;tt&amp;gt;debuildin&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt;-valitsinta voi luoda paketin, joka ei sisällä alkuperäistä lähdekoodia. Tälle on käyttöä silloin, kun paketteja pidetään ulkopuolisessa pakettivarastossa ja uusi versio voidaan julkaista vain lähettämällä palvelimelle uusi lähdekoodipaketti ilman alkuperäistä lähdekoodia. Tällainen tilanne tulee eteen, kun paketista tehdään uusi versio joka ei muuta itse ohjelman lähdekoodia tai muuttaa sitä erillisellä &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedostolla (eli ohjelman tekijä ei ole julkaissut uutta versiota, mutta paketin tekijä tekee muutoksia joko itse ohjelmaan tai paketointiin).&lt;br /&gt;
&lt;br /&gt;
== Lintian: onnistuiko paketti? ==&lt;br /&gt;
Lintian on ohjelma, joka tarkistaa tekemäsi paketin laadun. Sille annetaan parametrina pakettia luotaessa syntynyt &amp;lt;tt&amp;gt;.changes&amp;lt;/tt&amp;gt;-päätteinen tiedosto. Yleensä kannattaa antaa myös valitsimet -E, -v, -i ja -I (iso &#039;&#039;i&#039;&#039;), jolloin lintian kertoo tarkemmin, mikä paketissa on vialla:&lt;br /&gt;
 lintian -EviI hello_2.10-1_amd64.changes&lt;br /&gt;
Tulosteessa E:-alkavat rivit tarkoittavat virhettä, W:-alkavat varoituksia ja N:-alkavat huomautuksia.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi et poistanut &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistosta &amp;lt;tt&amp;gt;.ex&amp;lt;/tt&amp;gt;-päätteisiä tiedostoja, lintian varoittaa niistä. Yleensä paketin tulisi olla sellainen, ettei lintian löydä siitä mitään valitettavaa.&lt;br /&gt;
&lt;br /&gt;
== Patchit ==&lt;br /&gt;
Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä.&lt;br /&gt;
&lt;br /&gt;
== Muut pakettityypit ==&lt;br /&gt;
===Multi-binary: Monta pakettia yhdestä lähdekoodipaketista ===&lt;br /&gt;
Joskus tulee eteen tilanne, jossa yksi ohjelma on jaettava useampaan eri pakettiin. Tällainen tilanne tulee eteen mm. silloin, kun paketoidaan suurta peliä: yleensä peleissä itse käännetty ohjelma vie murto-osan siitä tilasta, jonka pelin datatiedostot vievät. Jos koko ohjelma laitettaisiin yhteen pakettiin, käytettäisiin turhaan palvelimen levytilaa ja resursseja, kun samat alustariippumattomat datatiedostot kopioitaisiin jokaiselle arkkitehtuurille tehtyyn pakettiin. &lt;br /&gt;
&lt;br /&gt;
Toinen esimerkki tilanteesta, jossa ohjelman jakaminen moneen pakettiin on järkevää on ohjelma, jonka mukana tulee paljon (esimerkiksi jopa kymmeniä megatavuja) dokumentaatiota ja ohjeita.&lt;br /&gt;
&lt;br /&gt;
Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt;-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: extra&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Recommends: hello-doc&lt;br /&gt;
Description: Hello-ohjelma&lt;br /&gt;
 Klassinen hello-ohjelma, joka tulostaa tekstin&lt;br /&gt;
 hello world.&lt;br /&gt;
&lt;br /&gt;
Package: hello-doc&lt;br /&gt;
Architecture: all&lt;br /&gt;
Depends: hello&lt;br /&gt;
Description: Hellon ohjeet&lt;br /&gt;
 Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen muutetaan paketin asentamista (&amp;lt;tt&amp;gt;debian/install&amp;lt;/tt&amp;gt;) siten, että esimerkiksi pakettiin &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt; kuuluvat tiedostot asennettaisiin hakemistoon &amp;lt;tt&amp;gt;debian/hello/&amp;lt;/tt&amp;gt; ja paketin &amp;lt;tt&amp;gt;hello-doc&amp;lt;/tt&amp;gt;-tiedostot hakemistoon &amp;lt;tt&amp;gt;debian/hello-doc&amp;lt;/tt&amp;gt;. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun &amp;lt;tt&amp;gt;debian/hello/usr/bin/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos jokin Debhelperin komento (muotoa &amp;lt;tt&amp;gt;dh_jotain&amp;lt;/tt&amp;gt;) halutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa ajaa vain tietylle paketille, voidaan käyttää valitsinta &amp;lt;tt&amp;gt;--package&amp;lt;/tt&amp;gt; eli lyhyemmin &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt;, esimerkiksi komennolla&lt;br /&gt;
&amp;lt;source lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
override_dh_installinfo:&lt;br /&gt;
	dh_installinfo -phello&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
asennettaisiin [[info]]-tiedostot vain &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt;-pakettia luotaessa.&lt;br /&gt;
&lt;br /&gt;
== Pbuilder ==&lt;br /&gt;
Pbuilder on järjestelmä, joka kääntää ja rakentaa paketit omassa pienessä [[chroot]]-järjestelmässä. Pbuilderia käytettäessä saavutetaan mm. seuraavat edut:&lt;br /&gt;
#Käännösaikaiset riippuvuudet (&#039;&#039;build-depends&#039;&#039;) asennetaan automaattisesti&lt;br /&gt;
#Paketti käännetään puhtaassa ja mahdollisimman yksinkertaisessa ympäristössä, johon ei ole asennettu mitään ylimääräistä. Näin varmistetaan, että paketin kääntäminen onnistuu kaikissa järjestelmissä ja että käännösaikaiset riippuvuudet ovat riittävät.&lt;br /&gt;
#Paketin voi kääntää eri jakeluille ja jopa eri arkkitehtuurille&lt;br /&gt;
&lt;br /&gt;
Lisätietoja Pbuilderin käytöstä löytyy artikkelista [[Pbuilder]].&lt;br /&gt;
&lt;br /&gt;
== Paketin päivittäminen ja muokkaaminen ==&lt;br /&gt;
Edellä käsiteltiin uuden paketin tekemistä. Monesti eteen tulee kuitenkin myös tilanteita, joissa jo olemassa olevaa pakettia tulee muuttaa tai päivittää. Päivittämiselle tulee tarve kun paketoidusta ohjelmasta julkaistaan uusi versio tai vaikkapa silloin, kun ohjelmassa oleva ohjelmavirhe (bugi) korjataan &#039;&#039;patch&#039;&#039;-tiedostolla.&lt;br /&gt;
&lt;br /&gt;
Muokkauksen tekeminen alkaa hakemalla lähdekoodipaketti. Tämä onnistuu kätevästi komennolla &amp;lt;tt&amp;gt;[[apt-get]] source paketti&amp;lt;/tt&amp;gt;. Tällöin &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; hakee nykyiseen hakemistoon paketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedoston, muutokset sisältävän &amp;lt;tt&amp;gt;.diff.gz&amp;lt;/tt&amp;gt;-tiedoston ja alkuperäisen ohjelman sisältävän &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt;-paketin. Lisäksi hakemistoon syntyy &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt;-hakemisto, jonka sisältä löytyy sekä itse ohjelma että siihen tehdyt muutokset (mm. &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;)-hakemisto.&lt;br /&gt;
&lt;br /&gt;
Jos nyt halutaan esimerkiksi korjata ohjelmassa oleva bugi, voidaan edellä neuvotulla tavalla lisätä pakettiin uusi &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedosto. Tämän lisäksi on aina muistettava kirjata tiedot muutoksesta &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostoon. Tämä onnistuu helpoiten komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Muutoslokin on tarkoitus tarkkaan kertoa, mitä muutoksia on tehty. Yleensä muutos korjaa jonkun vianhallintajärjestelmässä olevan ilmoitetun bugin, jolloin muutoslokissa mainitaan tämän bugin numero (Debianin vianseurantajärjestelmän kanssa käytetään syntaksia &amp;lt;tt&amp;gt;Closes: #numero&amp;lt;/tt&amp;gt; ja Ubuntun Launchpad-järjestelmässä ilmoitettujen bugien kanssa syntaksia LP: #numero).&lt;br /&gt;
&lt;br /&gt;
Jos paketoidusta ohjelmasta on ilmestynyt uusi versio, täytyy toimia hieman eri tavalla. Ensimmäinen tehtävä on ladata uuden ohjelman lähdekoodipaketti ja tutustua uuden version mukana tuomiin muutoksiin (&amp;lt;tt&amp;gt;NEWS&amp;lt;/tt&amp;gt;- tai &amp;lt;tt&amp;gt;CHANGELOG&amp;lt;/tt&amp;gt;-tiedosto). Tämän jälkeen puretaan paketti tiedostoon &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt; ja uudelleennimetään lähdekoodipakettitiedosto nimelle &amp;lt;tt&amp;gt;ohjelman_versio.orig.tar.gz&amp;lt;/tt&amp;gt;. Eli aivan kuin olisimme paketoimassa uutta ohjelmaa. &lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen voidaan kopioida vanha &#039;&#039;debianisointi&#039;&#039; eli &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto vanhasta paketista uuteen pakettiin. Helpoimmissa tapauksissa tämä riittää, mutta etenkin käytettävien patchien toimiminen ja tarpeellisuus uuden version kanssa on todella tärkeä selvittää. Lisäksi ohjelman kääntäminen ja asentaminen saattaa uuden version kanssa tapahtua eri tavalla. Tällaisessa tapauksessa muutoslokiin kirjataan maininta uudesta versiosta (&amp;quot;New upstream release&amp;quot;) ja kerrotaan myös, mitä muita muutoksia pakettiin tehtiin (esimerkiksi jätettiin pois tarpeettomaksi käynyt patchi.&lt;br /&gt;
&lt;br /&gt;
Uuden version numero riippuu siitä, paketoitiinko uusi versio vai korjattiinko vain vanhassa versiossa oleva ongelma. Jos itse ohjelman versio ei muuttunut, kasvatetaan paketin &amp;quot;revision&amp;quot;-numeroa yhdellä, esimerkiksi versio &amp;quot;0.4.1-2&amp;quot; muuttuisi versioksi &amp;quot;0.4.1-3&amp;quot;. Jos taas ohjelman versio muuttui, asetetaan paketin versioksi uuden version numero ja &amp;quot;revisioniksi&amp;quot; asetetaan 1: &amp;quot;0.4.1-2&amp;quot; -&amp;gt; &amp;quot;0.4.2-1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Näiden toimenpiteiden jälkeen voidaan paketti luoda kuten normaalistikin &amp;lt;tt&amp;gt;debuild&amp;lt;/tt&amp;gt;- ja &amp;lt;tt&amp;gt;pdebuild&amp;lt;/tt&amp;gt;-komennoilla.&lt;br /&gt;
&lt;br /&gt;
===Debdiff===&lt;br /&gt;
Debdiff on [[diff]]in kaltainen ohjelma, joka vertailee kahta deb-pakettia. Sitä käytetään mm. silloin, kun lähetetään itse tehty korjaus ohjelman alkuperäiselle paketoijalle tai vianseurantajärjestelmään. Yleensä näin toimitaan silloin, kun muutoksen tekijällä ei ole oikeutta lähettää korjauksiaan suoraan virallisiin pakettivarastoihin.&lt;br /&gt;
&lt;br /&gt;
Debdiffille annetaan kahden lähdekoodipaketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedostot:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc&lt;br /&gt;
Jolloin ohjelma tulostaa erot ruudulle. Yleensä erot kannattaa [[Komentorivin perusteet#putkitus|putkittaa]] tiedostoon:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc &amp;gt; erot.debdiff&lt;br /&gt;
&lt;br /&gt;
== Pakettini on valmis, miten saan sen jakeluni pakettilähteisiin ==&lt;br /&gt;
Paketin saaminen jakelun virallisiin pakettilähteisiin on jakelun käytännöistä riippuen enemmän tai vähemmän työläs prosessi, johtuen muun muassa laadunvarmistuksesta. Teknisellä tasolla paketit viedään jakeluihin [[dput]]- tai [[dupload]]-työkaluilla. Katso lisää näiden työkalujen käytöstä näiden omilta sivuilta.&lt;br /&gt;
&lt;br /&gt;
Debianilla on käytössä [http://mentors.debian.net mentors.debian.net]-palvelu, jonne kaikki voivat lähettää omia pakettejaan tarjolle lähdekoodimuodossa. Tämän jälkeen paketille hankitaan/pyydetään halukas &amp;quot;sponsori&amp;quot;, joka on kokenut Debian-kehittäjä jolla on oikeudet lisätä paketteja virallisiin pakettilähteisiin. Sponsoreita haetaan yleensä lähettämällä viesti &amp;lt;tt&amp;gt;debian-mentors&amp;lt;/tt&amp;gt;-sähköpostilistalle sivustolta löytyvien ohjeiden mukaan. Tämän jälkeen joku paketista kiinnostunut kehittäjä tarkistaa sen ja antaa yleensä korjausehdotuksia. Kun paketti on hänen mielestään riittävän laadukas, hän lisää sen pakettilähteisiin. Prosessi voi paketin laadusta ja sponsoroijasta riippuen kestää pitkäänkin, ja vapaaehtoisuuteen perustamalla saattaa vaatia omaa aktiivisuutta ja kohteliasta ajoittaista tiediustelua.&lt;br /&gt;
&lt;br /&gt;
Virallisten pakettilähteiden lisäksi voit myös ylläpitää omaa. Paketteja voi myös jakaa helposti esimerkiksi [[Launchpad | Launchpadin]] tarjoaman [[PPA]]-ominaisuuden avulla. PPA automatisoi paketin kääntämistä ja julkaisua. Halutessasi voit myös vain yksinkertaisesti jakaa tekemääsi deb-tiedostoa millä tahansa tiedostonjakotekniikalla.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[CDBS]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://www.debian.org/doc/maint-guide/index.en.html#contents Debian New Maintainers&#039; Guide]&lt;br /&gt;
*[http://www.debian.org/doc/debian-policy/ Debian policy] - Debianin käytäntöjä ja sääntöjä&lt;br /&gt;
*Ubuntun [https://wiki.ubuntu.com/PackagingGuide PackagingGuide]-opas&lt;br /&gt;
*[http://wiki.ubuntu.com/PackagingGuide Packaging guide - Ubuntu Wiki]&lt;br /&gt;
*[http://www.debian-administration.org/articles/286 Setting up your own APT reposity]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Paketinhallinta]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Digabi&amp;diff=46989</id>
		<title>Digabi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Digabi&amp;diff=46989"/>
		<updated>2016-08-23T20:40:16Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Luokka:Suomi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jakelu&lt;br /&gt;
| nimi=Digabi&lt;br /&gt;
| logo=&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| julkaisija=Ylioppilastutkintolautakunta&lt;br /&gt;
| viimeisin versio=ABITTI15123 (opiskelijan tikku)&lt;br /&gt;
| päivämäärä=17.3.2015&lt;br /&gt;
| julkaisusykli=&lt;br /&gt;
| elinkaari=&lt;br /&gt;
| pakettienhallinta=[[dpkg]], [[APT]]&lt;br /&gt;
| tila=toiminnassa&lt;br /&gt;
| arkkitehtuurit=amd64, i386&lt;br /&gt;
| äitijakelu=[[Debian]]&lt;br /&gt;
| sukulaisjakelut=&lt;br /&gt;
| kotisivu=[https://digabi.fi/ digabi.fi]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digabi&#039;&#039;&#039; on Ylioppilastutkintolautakunnan kehittämä Debianin epävakaaseen &#039;&#039;Jessie&#039;&#039;-versioon perustuva [[live-cd|live]]-jakelu sähköisiä ylioppilaskirjoituksia varten. Koulujen käyttöön Digabista on julkaistu kehitteillä oleva Abitti-koejärjestelmä.&lt;br /&gt;
&lt;br /&gt;
Ennen kokeen alkamista opiskelijat käynnistävät oman tai koulunsa tarjoaman tietokoneen Digabin sisältävältä USB-muistilta tai optiselta levyltä. Kokeen aikana Digabin pitäisi estää pääsy mm. kiintolevyjen sisältöön sekä internetiin.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [https://sourceforge.net/projects/digabi/ sourceforge.net/projects/digabi]&lt;br /&gt;
* [https://github.com/digabi github.com/digabi]&lt;br /&gt;
* [http://www.abitti.fi/ abitti.fi]&lt;br /&gt;
* [http://fi.digabi-tweaks.wikia.com/wiki/Digabi_Tweaks_Wikia fi.digabi-tweaks.wikia.com]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Jakelut]]&lt;br /&gt;
[[Luokka:Linux kouluissa]]&lt;br /&gt;
[[Luokka:Suomi]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Mari0&amp;diff=46977</id>
		<title>Mari0</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Mari0&amp;diff=46977"/>
		<updated>2016-08-22T05:32:22Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ Ohjelma &lt;br /&gt;
| nimi=Mari0&lt;br /&gt;
| kuva=[[Kuva:Mari0portal.png|250px]]&lt;br /&gt;
| kuvateksti=Mario portal&lt;br /&gt;
| lisenssi=[[BY-NC-SA 3.0]]&lt;br /&gt;
| käyttöliittymä=[[Löve]]&lt;br /&gt;
| kotisivu=[http://stabyourself.net/mari0/ http://stabyourself.net/mari0/]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mari0&#039;&#039;&#039;-pelissä yhdistyy kaksi eri genren peliä täysin eri aikakausilta: Nintendon Super Mario Bros ja [[Valve]]n Portal. Nämä kaksi peliä on yhdistetty toimivaksi 2D-tasohyppely-pulmapeliksi. Pelimoottorina käytetään [[Löve]]ä ja skriptikielenä [[Lua]]-kieltä. Peli on saatavana Windowsille, Mac OS X:lle ja Linuxille.&lt;br /&gt;
&lt;br /&gt;
==Asennus==&lt;br /&gt;
Hae pelin kotisivulta pelipaketti. Asenna [[Löve]]-pelimoottori ja pura pelipaketti, ja klikkaa peliä. &lt;br /&gt;
&lt;br /&gt;
==Katso myös== &lt;br /&gt;
* [[Löve]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka: 2D-tasohyppely]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Fedora_Linux/Paketinhallinta&amp;diff=46968</id>
		<title>Fedora Linux/Paketinhallinta</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Fedora_Linux/Paketinhallinta&amp;diff=46968"/>
		<updated>2016-08-21T19:46:15Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Fedoran [[paketinhallinta]] käyttää [[RPM]]-paketteja&#039;&#039;&#039; jotka sisältävät asennettavat tiedostot, metatiedot, huolehtivat niiden [[riippuvuus|riippuvuuksista]] jotta asennus olisi mahdollisimman helppoa ja ajavat taustalla ohjelmia niiden asennuksen, päivityksen ja poiston yhteydessä.&lt;br /&gt;
&lt;br /&gt;
RPM-paketteja voidaan asentaa joko automatisoidusti [[pakettivarasto]]ja hyödyntäen tai käsin paketti kerrallaan. Jos paketteja asentaa käsin, täytyy ne myös hakea käsin esimerkiksi Internetistä tai cd-levyiltä sekä varmistaa, että niiden vaatimat riippuvuudet on tyydytetty.&lt;br /&gt;
&lt;br /&gt;
Pakettivarastoja käytetään [[DNF]]-nimisellä ohjelmalla, jolla voidaan asentaa, päivittää ja poistaa paketteja sekä tutkia niiden tietoja pakettivarastoista.&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Paketinhallinta|DNF}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ohjelmien asennus ja poisto ==&lt;br /&gt;
DNF-paketinhallintatyökalua voidaan käyttää joko [[komentorivi]]ltä &amp;lt;tt&amp;gt;dnf&amp;lt;/tt&amp;gt;-ohjelmalla tai jollain sen lukuisista graafisista edustaohjelmista.&lt;br /&gt;
&lt;br /&gt;
=== Komentorivityökalut ===&lt;br /&gt;
Esimerkki ohjelman asennuksesta komentoriviltä:&lt;br /&gt;
&lt;br /&gt;
 # dnf install firefox&lt;br /&gt;
&lt;br /&gt;
=== Graafiset työkalut ===&lt;br /&gt;
Nykyisissä jakeluissa on [[PackageKit]]-niminen DNF:n edustaohjelma, jonka avulla paketteja voidaan hallita graafisesti. Päivitysten asentaminen onnistuu työpöytäympäristön paneelissa olevasta kuvakkeesta, joka myös ilmoittaa saapuneista päivityksistä. &lt;br /&gt;
&lt;br /&gt;
Uusien pakettien asentaminen, vanhojen poistaminen ja pakettien tietojen tarkastelu onnistuu Gnome-työpöytäympäristössä kuvakkeesta &#039;&#039;Ohjelmat&#039;&#039; --&amp;gt; &#039;&#039;Lisää tai poista ohjelmia&#039;&#039; ([[Gnome-packagekit]]). KDE:ssä tämä onnistuu kuvakkeesta &#039;&#039;K-valikko&#039;&#039; --&amp;gt; &#039;&#039;Ylläpito&#039;&#039; --&amp;gt; &#039;&#039;Lisää tai poista ohjelmia&#039;&#039; tai asetuskeskuksesta (Järjestelmän asetukset) kohdasta &#039;&#039;Add or Remove Software&#039;&#039; ([[Apper]]). &lt;br /&gt;
&lt;br /&gt;
Paketteja voidaan hakea joko hakusanalla tai käyttötarkoituksen perusteella (esimerkiksi &amp;quot;[[pelit]]&amp;quot; tai &amp;quot;[[Portaali:Kuvankäsittely|grafiikka]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Vaihtoehtoiset käyttöliittymät===&lt;br /&gt;
[[Debian]]-pohjaisissa jakeluissa käytettävä [[APT]]-järjestelmä voidaan myös asentaa Fedoraan. Fedoraan saatavilla oleva APT-versio ([http://apt-rpm.org/ APT-RPM]) on sovitettu käyttämään RPM-paketteja sekä -pakettivarastoja. APT sekä sen suosituin graafinen käyttöliittymä [[Synaptic]] löytyvät paketeista &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;synaptic&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Yksittäiset paketit==&lt;br /&gt;
Yksittäisten RPM-pakettien asennus voi olla tarpeen, mikäli pakettia ei löydy mistään sopivasta pakettivarastosta tai jos pakettivarastoihin ei esimerkiksi verkkoyhteyden puutteen takia ole pääsyä. Yksittäisten pakettien etsimiseen on olemassa useita palveluita kuten [http://rpm.pbone.net/ rpm.pbone.net] sekä [[Rpmfind]].&lt;br /&gt;
&lt;br /&gt;
Yksittäisiä paketteja voidaan asentaa [[rpm]]-[[komentorivi]]työkalulla, mutta suositeltavampi tapa on käyttää DNF-työkalua. Koska rpm-työkalu ei tue pakettivarastoja, ei se myöskään osaa tyydyttää pakettien riippuvuuksia, vaan näyttää pelkän virheilmoituksen puuttuvista riippuvuuksista.&lt;br /&gt;
&lt;br /&gt;
Paketteja voi myös asentaa graafisesti klikkaamalla niiden kuvaketta tiedostonhallintaohjelmassa tai niihin osoittavaa linkkiä [[www-selain|www-selaimessa]]. Asennus onnistuu myös [[DNF]]:n kautta [[valitsin|valitsimella]] &amp;lt;tt&amp;gt;install&amp;lt;/tt&amp;gt;, jolloin DNF yrittää tyydyttää paketin riippuvuudet.&lt;br /&gt;
&lt;br /&gt;
Asennettujen yksittäisten RPM-pakettien poistamiseen, päivittämiseen ja tietojen tarkasteluun voidaan käyttää samoja graafisia ohjelmia kuin muidenkin pakettien kanssa.&lt;br /&gt;
&lt;br /&gt;
==Historiaa==&lt;br /&gt;
Alun perin Fedoran RPM-edustaohjelma oli [[Yum]] (Yellowdog Updater, Modified).&lt;br /&gt;
&lt;br /&gt;
Fedoran kehittäjät päättivät luoda Yumin pohjalta uuden [[DNF]]-pakettienhallintaohjelman, joka tuli saataville Fedoraan versiosta 18 lähtien. Lopullisesti DNF korvasi Yumin Fedoran versiossa 22. Yum kärsi lukuisista ongelmista, joista suurimmat olivat:&lt;br /&gt;
* Huonosti ja osittain täysin dokumentoimaton API, joka toi lisää työtä kehittäjille, kun Yumin toimintaa ymmärtääkseen täytyi lukea sen lähdekoodia.&lt;br /&gt;
* Fedoran kehittäjät halusivat vaihtaa [[Python]]in versioon 3, mutta Yum toimi ainoastaan Pythonin versiolla 2. DNF toimii kummallakin.&lt;br /&gt;
* Yumin riippuvuuksien ratkaisija oli rikkinäinen eikä osannut kunnolla ratkaista kaikkia riippuvuuksia etenkin kolmannen osapuolen pakettivarastojen kanssa, mikä johti pahimmassa tapauksessa [[riippuvuushelvetti]]in. DNF käyttää [[openSUSE]]sta tuttua [[libsolv]]-kirjastoa riippuvuuksien ratkaisuun eikä kärsi tästä ongelmasta.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* [[DNF]]&lt;br /&gt;
* [[Yum]]&lt;br /&gt;
* [[RPM]]&lt;br /&gt;
* [[Fedora/Päivittäminen]]&lt;br /&gt;
* [[Fedora/Pakettivarastot]]&lt;br /&gt;
* [[Fedora/Preupgrade]]&lt;br /&gt;
* [[Fedora/FedUp]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Paketinhallinta]]&lt;br /&gt;
[[Luokka:Fedora]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Fork()&amp;diff=46965</id>
		<title>Fork()</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Fork()&amp;diff=46965"/>
		<updated>2016-08-18T19:47:51Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: toiseenkin esimerkkiin source-tagit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Fork()&#039;&#039;&#039; on SVr4, 4.3BSD ja POSIX.1-2001 -standardien mukainen funktio [[C]]-kielessä. Sillä luodaan ohjelmalle kutsun suorituskohtaan lapsiprosessi vastaavassa tilassa. Funktion esittely löytyy &amp;lt;tt&amp;gt;unistd.h&amp;lt;/tt&amp;gt;-otsikkotiedostosta. &lt;br /&gt;
&lt;br /&gt;
==Prototyyppi==&lt;br /&gt;
 pid_t fork()&lt;br /&gt;
&lt;br /&gt;
===Paluuarvo===&lt;br /&gt;
Palautusarvo (tyyppiä &amp;lt;tt&amp;gt;pid_t&amp;lt;/tt&amp;gt;) on -1 virheen tapahtuessa, muuten se vastaa lapsiprosessin [[pid|prosessitunnusta]]. Lapsiprosessille palautusarvo näkyy nollana (0x0).&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Fork on se tapa, jolla uusia prosesseja luodaan [[unix]]eissa. Jos lapsiprosessin pitää suorittaa toista ohjelmaa, se käyttää [[exec]]-kutsua forkin ja mahdollisten siivoustoimien jälkeen. Vaikka prosessin kopioiminen ennen kopion korvaamista toisella saattaa tuntua resurssien haaskaukselta, se ei sitä ole: lapsiprosessin muistiavaruus osoittaa samaa fyysistä muistia, kunnes lapsiprosessi kirjoittaa siihen, eikä käyttämätöntä muistia siis tarvitse kopioida (&amp;quot;Copy-on-Write&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Fork-kutsun lisäksi on olemassa [[clone]]-kutsu, jolla voi tarkemmin määritellä mitkä resurssit jäävät prosessien yhteisiksi. Tällä kutsulla luodaan [[säie|säikeet]].&lt;br /&gt;
&lt;br /&gt;
=== Esimerkki ===&lt;br /&gt;
Luodaan seuraavanlainen C-ohjelma:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
        printf(&amp;quot;Luodaan taustaprosessi\n&amp;quot;);&lt;br /&gt;
        pid_t pid = fork();&lt;br /&gt;
        if (pid==0)     /* Lapsiprosessille pid näkyy nollana */&lt;br /&gt;
                printf(&amp;quot;Olen lapsiprosessi\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        else if (pid&amp;gt;0)    /* Forkkaus onnistui, tämä on isäntä */&lt;br /&gt;
                printf(&amp;quot;Olen isäntäprosessi\n&amp;quot;);&lt;br /&gt;
        printf(&amp;quot;Terve Linux.fi\n&amp;quot;);&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tallennetaan koodi tiedostoon &amp;lt;tt&amp;gt;fork.c&amp;lt;/tt&amp;gt; ja käännetään se komennolla &amp;lt;tt&amp;gt;[[gcc]] fork.c -o fork&amp;lt;/tt&amp;gt;. Nyt ohjelman tuloste olisi seuraavanlainen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Luodaan taustaprosessi&lt;br /&gt;
Olen lapsiprosessi&lt;br /&gt;
Terve Linux.fi&lt;br /&gt;
Olen isäntäprosessi&lt;br /&gt;
Terve Linux.fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Lisäämällä ehtolauseisiin yhden tulostusrivin sijaan vaikkapa silmukassa ajettavaa koodia (esim. &amp;lt;tt&amp;gt;while(1) printf(&amp;quot;Lapsiprosessi&amp;quot;);&amp;lt;/tt&amp;gt;) huomataan, että prosesseja ajetaan vuorotellen.&lt;br /&gt;
&lt;br /&gt;
===[[demoni|Taustaprosessin]] luominen===&lt;br /&gt;
fork-funktion ajavan ohjelman toinen osa jää taustalle ja alkuperäinen ohjelma voidaan sammuttaa. Esimerkkikoodi:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
        printf(&amp;quot;Luodaan taustaprosessi\n&amp;quot;);&lt;br /&gt;
        pid_t pid = fork();&lt;br /&gt;
&lt;br /&gt;
        if (pid &amp;gt; 0) return 0;      /* Isäntäprosessi loppuu */&lt;br /&gt;
        if (pid &amp;lt; 0) return -1;     /* Forkkaus ei onnistunut 0_o */&lt;br /&gt;
&lt;br /&gt;
        while(1) { }   /* Ikuinen silmukka */&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tallennetaan koodi tiedostoon &amp;lt;tt&amp;gt;taustaprosessi.c&amp;lt;/tt&amp;gt;, käännetään se komennolla &amp;lt;tt&amp;gt;gcc taustaprosessi.c -o taustaprosessi&amp;lt;/tt&amp;gt; ja ajetaan se (&amp;lt;tt&amp;gt;./taustaprosessi&amp;lt;/tt&amp;gt;). Tuloste on seuraavanlainen:&lt;br /&gt;
 $ ./taustaprosessi&lt;br /&gt;
 Luodaan taustaprosessi&lt;br /&gt;
 $&lt;br /&gt;
Ohjelma siis näyttää sammuvan heti tulostettuaan tekstirivin. Tutkitaanpa asiaa hieman tarkemmin. Aja komento&lt;br /&gt;
 [[ps]] aux | [[grep]] taustaprosessi&lt;br /&gt;
Jolloin huomaat, että taustaprosessi-niminen ohjelma on yhä ajossa. Myös [[top]]:in prosessilistauksessa sen pitäisi näkyä yläpäässä kuluttamassa paljon prosessoritehoa. Voit tappaa sen komennolla &amp;lt;tt&amp;gt;[[killall]] taustaprosessi&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Järjestelmä]]&lt;br /&gt;
[[Luokka:Prosessienhallinta]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=GNOME&amp;diff=46945</id>
		<title>GNOME</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=GNOME&amp;diff=46945"/>
		<updated>2016-08-16T15:36:36Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: /* GNOME 3 */ linkki haaraan, viiva&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ohjelma&lt;br /&gt;
| nimi=GNOME&lt;br /&gt;
| kuva=[[Tiedosto:Gnome_logo.png]]&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=[[GPL]], [[LGPL]]&lt;br /&gt;
| käyttöliittymä=[[GTK]]&lt;br /&gt;
| kotisivu=[https://www.gnome.org/ www.gnome.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GNOME&#039;&#039;&#039; (&#039;&#039;GNU Network Object Model Environment&#039;&#039;) on graafinen [[työpöytäympäristö]], jota käytetään Unixin kaltaisissa käyttöjärjestelmissä kuten Linuxissa. GNOME on [[GNU]]-projektin virallinen osa. GNOME tulee mukana useimmissa Linux-käyttöjärjestelmissä ja BSD:ssä. Kaupallisista Unix-valmistajista [[Sun Microsystems]] on ottanut sen [[Solaris|Solariksen]] oletustyöpöydäksi vanhemman [[Common Desktop Environment]]in tilalle.&lt;br /&gt;
&lt;br /&gt;
==Historia==&lt;br /&gt;
===GNOME 1===&lt;br /&gt;
GNOME-projektin käynnistivät elokuussa 1997 Miguel de Icaza ja Federico Mena. Ensimmäinen GNOMEn versio julkaistiin maaliskuussa 1999 ja se perustui [[GTK+]]:n 1-versioon.&lt;br /&gt;
&lt;br /&gt;
GNOMEn aloittamisen suoranainen syy oli [[KDE]]-ympäristön lisenssiepäselvyys sen perustuessa norjalaisen Trolltechin [[Qt]]-käyttöliittymäkirjastoon. Qt-kirjastoa ei saanut linkata ilman lupaa [[GPL]]-lisensoituun ohjelmaan. Tämä ei ollut ongelma KDE-projektissa kirjoitetuille ohjelmille, mutta esti vanhojen olemassaolevien GPL-lisenssiä käyttävien ohjelmien hyödyntämisen ilman kaikkien tekijöiden lupaa. Osa tekijöistä ei ollut edes valmis myöntämään lupaa epävapaan Qt:n käytön yhteydessä.  KDE:n lisenssiepäselvyys ratkaistiin myöhemmin [[Trolltech]]in julkaistua Qt:n kaksoislisenssoinnilla, jossa sitä sai levittää myös GPL-lisenssillä. GNOME on kirjoitettu pääasiassa C:llä, hyödyntäen [[GTK]]+-käyttöliittymäkirjastoa. GTK+:ta oli jo käytetty GIMP-kuvankäsittelyohjelmassa.&lt;br /&gt;
&lt;br /&gt;
===GNOME 2===&lt;br /&gt;
Kesäkuussa 2002 julkaistu versio 2.0 teki ympäristöön suuria muutoksia. GNOME 2 perustui GTK+:n 2-versioon.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Kuva:Gnome-2.24.png|GNOME 2.24.Tiedostonhallintaohjelma [[Nautilus]] näyttämässä [[juurihakemisto]]a.&lt;br /&gt;
Kuva:Fedora-desktop.jpeg|GNOME 2 oletustilassaan [[Fedora]]ssa.&lt;br /&gt;
Kuva:GNOME_tyopoyta.png|GNOME 2 työpöytä [[Ubuntu]]ssa.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GNOME 3===&lt;br /&gt;
Huhtikuussa 2011 julkaistiin versio 3.0, joka perustui GTK+:n versioon 3. GNOME 3 muokkasi ulkoasua suuresti tehden GNOMEn sopivammaksi pieninäyttöisiin laitteisiin, kuten esimerkiksi minikannettaviin. GNOME 3 sai osakseen paljon kritiikkiä, jonka seurauksena GNOMEsta tehtiin useita [[haara]]utumia. [[MATE]] jatkoi siitä mihin GNOME 2 jäi ja [[Cinnamon]]in tarkoitus oli kehittää enemmän GNOME 2:en näköinen versio GNOME 3:sta.&lt;br /&gt;
* [https://www.gnome.org/gnome-3/ www.gnome.org/gnome-3]&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Kuva:Gnome 3.png|GNOME 3&lt;br /&gt;
Kuva:GNOME3_tyopöytä.png|GNOME 3 -työpöytä [[Ubuntu]]ssa.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GNOME-ohjelmia==&lt;br /&gt;
*[[Alacarte]] - GNOMEn päävalikon muokkaus&lt;br /&gt;
*[[Baobab]] - levytilan käytön analysointi&lt;br /&gt;
*[[Brasero]] - [[levyn polttaminen|poltto-ohjelma]]&lt;br /&gt;
*[[Cheese]] - [[web-kamera]]ohjelma&lt;br /&gt;
*[[Ekiga]] - videokeskusteluohjelma&lt;br /&gt;
*[[Empathy]] - [[:Luokka:Pikaviestimet|pikaviestinohjelma]]&lt;br /&gt;
*[[Epiphany]] - [[www-selain]]&lt;br /&gt;
*[[Evince]] - asiakirjakatselin&lt;br /&gt;
*[[Evolution]] - [[sähköposti]]- ja työryhmäohjelmisto&lt;br /&gt;
*[[Eye of GNOME]] (Gnomen silmä) - [[Portaali:Kuvankäsittely|kuvankatseluohjelma]]&lt;br /&gt;
*[[File Roller]] (Tiedostokäärin) - pakattujen tiedostojen käsittely&lt;br /&gt;
*[[F-Spot]] - digikuvakokoelman hallinta&lt;br /&gt;
*[[Gedit]] - [[tekstieditori]]&lt;br /&gt;
*[[GDM]] - [[graafinen kirjautumisohjelma]]&lt;br /&gt;
*[[Gnome-terminal]] - [[terminaaliemulaattori]]&lt;br /&gt;
*[[Metacity]] - [[ikkunointiohjelma]]&lt;br /&gt;
*[[Nautilus]] - [[:Luokka:Tiedostonhallinta|tiedostonhallintaohjelma]]&lt;br /&gt;
*[[Rhythmbox]] - [[Musiikin toisto|musiikin kuuntelu]] ja musiikkikokoelmien hallinta&lt;br /&gt;
*[[Sound Juicer]] (Musiikkimaija) - [[CD:n rippaus|cd-levyjen rippaus]]&lt;br /&gt;
*[[Tomboy]] - muistilaput&lt;br /&gt;
*[[Totem]] - mediasoitin&lt;br /&gt;
&lt;br /&gt;
==Katso myös== &lt;br /&gt;
* [[:Luokka:GNOME-ohjelmat|GNOME-ohjelmat]]-luokka&lt;br /&gt;
* [[GNOME-games|Gnomen-pelit]]&lt;br /&gt;
* [[GDK]] - GTK:n käyttämä grafiikkarenderöintikirjasto&lt;br /&gt;
* [[GLib]] - yleinen ohjelmointitietorakennekirjasto, kehitys aloitettu GTK-projektin puitteissa&lt;br /&gt;
* [[Gconf]] - GNOMEn asetustietokanta&lt;br /&gt;
* [[Gnomen näppäinoikotiet]]&lt;br /&gt;
* [[GNOME tutuksi]] - aloittelijan opas GNOME 2 -versiolle&lt;br /&gt;
&lt;br /&gt;
{{Malline:Työpöytäympäristöt}}&lt;br /&gt;
[[Luokka:GNOME-ohjelmat]]&lt;br /&gt;
[[Luokka:Työpöytäympäristöt]]&lt;br /&gt;
&lt;br /&gt;
[[pl:GNOME]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=46944</id>
		<title>Deb-paketin tekeminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=46944"/>
		<updated>2016-08-16T15:30:23Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: rules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Debian]]issa ja siihen pohjautuvissa jakeluissa (esim. [[Ubuntu]]ssa ja [[Linux Mint]]issä) käytetään [[Dpkg]]-paketinhallintajärjestelmää. Dpkg:ssa paketit ovat &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-tiedostoja, jotka sisältävät itse ohjelman lisäksi mm. tiedot paketin riippuvuuksista ja siitä, mihin ohjelma asennetaan. Deb-pakettien tekeminen ei ole mitenkään ylivoimainen tehtävä, kunhan perusasiat ja mm. [[komentorivi|komentorivin käyttö]] ovat hallussa.&lt;br /&gt;
&lt;br /&gt;
Tässä oppaassa luodaan aluksi malliksi yksinkertainen paketti [http://www.gnu.org/software/hello/ GNU Hello] -ohjelmasta, joka on [[GNU]]-projektin esimerkkiohjelma. Ohjelman lähdekoodipaketin voi ladata [http://ftp.gnu.org/gnu/hello/ GNU:n palvelimelta]. Paketin luomisessa käytetään tässä apuna Debhelper-apuohjelmaa (&amp;lt;tt&amp;gt;dh&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Debianin eri versiosta löytyvän paketin voi kääntää käytetylle versiolle sopivaksi tai pakettiin tehdä pieniä muutoksia huomattavasti helpommin kuin tätä ohjetta seuraamalla, komennoilla &amp;lt;tt&amp;gt;apt-get build-dep paketti&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;apt-get source paketti&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;dpkg-deb -build pakettihakemisto&amp;lt;/tt&amp;gt;, jolloin muutokset tehdään viimeksi mainittujen välissä (varsinainen muutos + uusi kohta tiedostoon &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;). Jos paketti tehdään valmiista Debianin lähdekoodipaketista, kääntämisen binääripaketiksi voi hoitaa paketin hakemisen yhteydessä komennolla &amp;lt;tt&amp;gt;apt-get --compile source paketti&amp;lt;/tt&amp;gt;. Lisätietoja näistä komennoista löytyy artikkeleista [[apt-get]] ja [[dpkg]].&lt;br /&gt;
&lt;br /&gt;
== Valmistelut ==&lt;br /&gt;
Aluksi on hyvä asentaa muutamia perustyökaluja, jotka sisältävät paketointityössä tarvittavia tai valinnaisia apuohjelmia. Asenna siis seuraavat paketit:&lt;br /&gt;
 dpkg-dev autoconf dh-make devscripts [[fakeroot]] [[Gpg|gnupg]] build-essential lintian libtool automake pbuilder&lt;br /&gt;
&lt;br /&gt;
Kun paketit on asennettu, lataa Hello-ohjelman lähdekoodi ja [[tar|pura]] se työhakemistoosi (&amp;lt;code&amp;gt;tar xzvf &#039;&#039;tiedosto&#039;&#039;&amp;lt;/code&amp;gt;). Nyt sinulla pitäisi olla työhakemistossasi tiedosto &amp;lt;tt&amp;gt;hello-2.10.tar.gz&amp;lt;/tt&amp;gt; ja hakemisto &amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Paketoinnin aloitus ==&lt;br /&gt;
Aluksi kannattaa kokeilla, että saat ohjelman [[Kääntäminen|käännettyä]] ja ajettua. Sinun pitäisi jo osata tehdä tämä, jos luet tätä opasta, mutta lyhykäisyydessään voit asentaa Hellon hakemistoon &amp;lt;tt&amp;gt;~/hello&amp;lt;/tt&amp;gt; seuraavasti:&lt;br /&gt;
 ./configure --prefix=/home/käyttäjä/hello&lt;br /&gt;
 [[make]]&lt;br /&gt;
 make install&lt;br /&gt;
Nyt hakemistosta ~/hello pitäisi löytyä alihakemistot bin ja share, joissa Hellon tiedostot ovat.&lt;br /&gt;
&lt;br /&gt;
Putsaa nyt hakemisto, jossa käänsit Hellon komennolla&lt;br /&gt;
 make distclean&lt;br /&gt;
Nyt jos ohjelma kääntyi oikein, voimme aloittaa itse paketin tekemisen.&lt;br /&gt;
&lt;br /&gt;
=== Pohja ===&lt;br /&gt;
Siirry ohjelman hakemistoon (hello-2.10) ja aja komento&lt;br /&gt;
 dh_make -e sinun@sähköpostiosoitteesi -f ../hello-2.10.tar.gz&lt;br /&gt;
Toinen parametri on siis paketin tekijän sähköpostiosoite ja neljäs alkuperäinen lähdekooditiedosto. Ohjelma kysyy aluksi, minkätyyppistä pakettia olemme luomassa:&lt;br /&gt;
 Type of package: (single, indep, library, python)&lt;br /&gt;
 [s/i/l/p]?&lt;br /&gt;
Vastaa tähän s (&#039;&#039;single binary&#039;&#039;), sillä olemme luomassa yksinkertaista yhden ohjelman käsittävää pakettia. Tämän jälkeen vahvista tiedot enterillä, jonka jälkeen dh_make luo hakemistoon &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-alihakemiston, joka sisältää tiedostot, joiden perusteella varsinainen paketti luodaan. Se myös luo ylähakemistoon tiedoston &amp;lt;tt&amp;gt;paketti_versio.orig.tar.gz&amp;lt;/tt&amp;gt;, tässä tapauksessa siis &amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt;, joka sisältää alkuperäisen lähdekoodipaketin.&lt;br /&gt;
&lt;br /&gt;
Huomaa, että &amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; kuuluu ajaa vain kerran! Tulevien muutosten pohjalla käytetään paketin olemassa olevaa &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-kansiota, eikä dh_makea siis tarvitse ajaa uudelleen.&lt;br /&gt;
&lt;br /&gt;
== Asennushakemisto ==&lt;br /&gt;
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon &amp;lt;tt&amp;gt;debian/hello/usr/bin/hello&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Muiden muassa [[Autoconf]]ia, [[CMake]]a ja [[QMake]]a käyttävien pakettien kanssa paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin &amp;lt;tt&amp;gt;--prefix=/hakemisto/jonne/ohjelma/asennetaan&amp;lt;/tt&amp;gt;. Paketointiapuohjelma antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.&lt;br /&gt;
&lt;br /&gt;
Joskus, kun ohjelman kääntäminen ei suju Debhelperiltä automaattisesti, asennushakemistosta on huolehdittava itse. Tämä tulee eteen kun myöhemmin muokkaamme tiedostoa &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Asetustiedostot ==&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; loi &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemiston, joka sisältää monia tiedostoja, joiden perusteella itse paketti luodaan. Tässä vaiheessa on käytävä ne läpi ja muokattava sopiviksi.&lt;br /&gt;
&lt;br /&gt;
=== control ===&lt;br /&gt;
Tiedostossa &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt; kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: &amp;lt;insert the upstream URL, if relevant&amp;gt;&lt;br /&gt;
Vcs-Git: git://anonscm.debian.org/collab-maint/hello.git&lt;br /&gt;
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: &amp;lt;insert up to 60 chars description&amp;gt;&lt;br /&gt;
 &amp;lt;insert long description, indented with spaces&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Riveillä 1–9 on &#039;&#039;lähdekoodipaketin&#039;&#039; (engl. &#039;&#039;source&#039;&#039;) perustiedot:&lt;br /&gt;
* Rivillä 1 on lähdekoodipaketin nimi&lt;br /&gt;
* Rivillä 2 kerrotaan, mihin osioon paketti kuuluu. Debianissa paketit osioihin, joita ovat mm. &#039;&#039;main&#039;&#039; (vapaat ohjelmat), &#039;&#039;non-free&#039;&#039; (ohjelmat, jotka eivät ole vapaita) ja &#039;&#039;contrib&#039;&#039; (ohjelmat, jotka riippuvat vapaista ohjelmista). Nämä ohjelmat on yhä jaettu pienempiin osioihin, kuten &#039;&#039;devel&#039;&#039; (kehitystyökalut) ja &#039;&#039;mail&#039;&#039; (sähköpostiohjelmat). Hellolle sopiva osio voisi olla &#039;&#039;text&#039;&#039;. Osiot on listattu [http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections Debian policyssä].&lt;br /&gt;
* Kolmannella rivillä kerrotaan, kuinka tärkeää käyttäjälle on asentaa tämä paketti. Vaikka &amp;quot;Terve maailma!&amp;quot; -viestin tulostava ohjelma voi tuntua tärkeältä, ehkäpä se ei kuitenkaan ole yhtä tärkeä kuin vaikka ydin, joten asetetaan sen tärkeysasteeksi &#039;&#039;optional&#039;&#039;, jota käytetään useimmille paketeille.&lt;br /&gt;
* Neljännellä rivillä on paketin tekijän nimi ja sähköpostiosoite&lt;br /&gt;
* Rivillä 5 listataan pilkulla erotettuna paketit, jotka tarvitaan tämän paketin kääntämiseen. Jos ohjelmasta on oltava tietty versio, haluttu versio voidaan ilmoittaa sulkeissa (esimerkissä tarvitaan &#039;&#039;debhelper&#039;&#039;-paketin versio 9 tai uudempi). Käytännössä aina tarvittavia paketteja (esim. gcc ja make) ei tarvitse luetella, sillä ne otetaan mukaan automaattisesti. Kuitenkin kaikki muut kääntämisessä tarvittavat vähänkin harvinaisemmat paketit on lueteltava. Tässä vaiheessa voitaisiin myös samalla tavalla luetella paketit, jotka estävät kääntämisen (&#039;&#039;Build-Conflicts: paketti1, paketti2&#039;&#039;). Hello on sen verran helppo kääntää, ettei meidän tarvitse nyt lisätä tähän mitään ylimääräisiä paketteja.&lt;br /&gt;
* Rivillä 6 kerrotaan, minkä &#039;&#039;Debian Policy&#039;&#039; -standardin version mukainen paketti on. Tähän ei tarvitse koskea.&lt;br /&gt;
* Riville 7 kirjoitetaan ohjelman kotisivu.&lt;br /&gt;
* Riveillä 8 ja 9 voidaan kertoa, missä [[versionhallintajärjestelmä]]ssä debian-pakettia ylläpidetään. Me voimme poistaa nämä rivit, koska emme tässä käytä versionhallintaa.&lt;br /&gt;
&lt;br /&gt;
Riveillä 11–15 on &#039;&#039;binääripaketin&#039;&#039; tiedot:&lt;br /&gt;
* Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi.&lt;br /&gt;
* Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon &amp;quot;any&amp;quot;, jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. jos se on ohjepaketti tai [[Perl]]- tai [[Python]]-skripti), arkkitehtuuriksi laitetaan &amp;quot;all&amp;quot;.&lt;br /&gt;
* Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. &amp;quot;&#039;&#039;${shlibs:Depends}&#039;&#039;&amp;quot; aiheuttaa sen, että pakettia luotaessa pyritään riippuvuuksiksi lisäämään automaattisesti ne paketit, joiden tiedostoja vasten tämän paketin konekieliset tiedostot on linkitetty.&lt;br /&gt;
* Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedosto voisi näyttää tältä:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: text&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: https://www.gnu.org/software/hello/&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: Hello world -ohjelma&lt;br /&gt;
 Klassinen Hello world -ohjelma, jonka avulla opettelemme &lt;br /&gt;
 deb-pakettien tekemistä.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin ====&lt;br /&gt;
Riippuvuuksien lisäksi paketti voi myös suositella jonkin toisen paketin asentamista, tai se voi myös kieltäytyä asentumasta samaan järjestelmään jonkin toisen paketin kanssa (ristiriita toisen paketin kanssa, engl. &#039;&#039;conflict&#039;&#039;). Tällaiset paketit esitellään &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedostossa samaan tapaan kuin riippuvuudet. &lt;br /&gt;
&lt;br /&gt;
Riippuvuuksien lisäksi apt tukee seuraavia suhteita pakettien välillä:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Recommends&amp;lt;/tt&amp;gt;: Suositeltavat paketit. Yleensä paketteja, joita käytetään käytännössä aina tämän paketin kanssa. Esim. [[aptitude]] asentaa nämä automaattisesti, apt vain suosittelee.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Suggests&amp;lt;/tt&amp;gt;: Muita tämän paketin kanssa hyviä paketteja. Monet apt:n edustaohjelmat (kuten aptitude) näyttävät tämän listan, apt ei.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Pre-Depends&amp;lt;/tt&amp;gt;: Vahvempi kuin Depends. Vaatii, että paketit on asennettu ja otettu käyttöön ennen kuin suostuu asentamaan tämän paketin. Käytetään erittäin harvoin.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Conflicts&amp;lt;/tt&amp;gt;: Paketit, joiden kanssa samaan järjestelmään tätä pakettia ei voida asentaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Provides&amp;lt;/tt&amp;gt;: Mitkä virtuaaliset paketit tämä paketti toteuttaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Replaces&amp;lt;/tt&amp;gt;: Paketit, jotka tämä paketti korvaa.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi pakettimme nyt vaatisi paketin &#039;&#039;foo&#039;&#039; version 2.3 tai uudemman, paketti &#039;&#039;bar&#039;&#039; olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä &#039;&#039;libfoo&#039;&#039;:n kanssa, voisimme lisätä seuraavat rivit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}, foo (&amp;gt;= 2.3)&lt;br /&gt;
Recommends: bar&lt;br /&gt;
Conflicts: libfoo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vastaavasti on mahdollista asettaa myös lähdekoodipaketille &#039;&#039;Build-Conflicts&#039;&#039; ja muut vastaavat suhteet.&lt;br /&gt;
&lt;br /&gt;
=== copyright ===&lt;br /&gt;
Paketin tekijänoikeuksista kerrotaan tiedostossa &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;. Tämän tiedoston muoto on periaatteessa vapaa, mutta kannattaa seurata [https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Machine-readable debian/copyright file] -standardia. Hyvän tiedoston saa muokkaamalla dh_maken luomaa. Tässä tiedostosta tulee käydä ilmi paketin luoja, alkuperäinen tekijä ja ohjelman tekijänoikeustiedot (esim. [[GPL]]-lisenssin version 3 tai myöhemmän alainen).&lt;br /&gt;
&lt;br /&gt;
=== changelog ===&lt;br /&gt;
dh_make luo seuraavanlaisen pohjan &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostolle: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 hello (2.10-1) unstable; urgency=medium&lt;br /&gt;
2&lt;br /&gt;
3   * Initial release (Closes: #nnnn)  &amp;lt;nnnn is the bug number of your ITP&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
4  -- Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;  Fri, 29 Jul 2016 11:42:23 +0300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rivillä 1 on aluksi lähdekoodipaketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (&#039;&#039;urgency&#039;&#039;), yleensä &amp;quot;medium&amp;quot; on sille oikea arvo.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen seuraavilla riveillä on itse muutosloki (engl. &#039;&#039;changelog&#039;&#039;). Rivin alussa on kaksi välilyöntiä ja tähti (*). Viimeisenä (rivillä 4) on tieto paketin tekijästä ja tekoajankohdasta (esimerkin mukaisessa muodossa). Tämän rivin alussa on yksi välilyönti.&lt;br /&gt;
&lt;br /&gt;
Yleensä paketteihin tehdyt muutokset korjaavat joitain vianhallintajärjestelmään ilmoitettuja vikoja (bugeja). Jos paketti korjaa jonkin ilmoitetun vian, se ilmoitetaan muutoslokissa. Jos paketti esimerkiksi korjaa Debianin vianseurantajärjestelmän bugin numero 123456, tulee muutoslokissa esiintyä merkkijono &amp;lt;tt&amp;gt;Closes: #123456&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Muutoslokia pystyy muokkaamaan joko muokkaamalla tekstitiedostoa suoraan tai käyttämällä [[dch]]-komentoa (tai sen pidempää muotoa, komentoa &amp;lt;tt&amp;gt;debchange&amp;lt;/tt&amp;gt;). Sopivan pohjan uudelle muutokselle saa luotua komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Tämä avaa muutoslokin &amp;lt;tt&amp;gt;EDITOR&amp;lt;/tt&amp;gt;-[[ympäristömuuttuja]]ssa asetettuun tekstieditoriin. Muutoksen tekijän nimi haetaan ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBFULLNAME&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;NAME&amp;lt;/tt&amp;gt; ja sähköpostiosoite ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBEMAIL&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;EMAIL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== rules ===&lt;br /&gt;
Tiedosto &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt; on [[Makefile]]n tapainen tiedosto, jonka perusteella varsinainen paketti luodaan. Tämän tiedoston perusteella ohjelma käännetään ja asennetaan hakemistoon &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, tässä tapauksessa &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;. Tähän hakemistoon asentuvien tiedostojen perusteella luodaan varsinainen paketti.&lt;br /&gt;
&lt;br /&gt;
Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/make -f&lt;br /&gt;
# See debhelper(7) (uncomment to enable)&lt;br /&gt;
# output every command that modifies files on the build system.&lt;br /&gt;
#export DH_VERBOSE = 1&lt;br /&gt;
&lt;br /&gt;
# see FEATURE AREAS in dpkg-buildflags(1)&lt;br /&gt;
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all&lt;br /&gt;
&lt;br /&gt;
# see ENVIRONMENT in dpkg-buildflags(1)&lt;br /&gt;
# package maintainers to append CFLAGS&lt;br /&gt;
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic&lt;br /&gt;
# package maintainers to append LDFLAGS&lt;br /&gt;
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed&lt;br /&gt;
&lt;br /&gt;
%:&lt;br /&gt;
	dh $@ --with autotools_dev&lt;br /&gt;
&lt;br /&gt;
# dh_make generated override targets&lt;br /&gt;
# This is example for Cmake (See https://bugs.debian.org/641051 )&lt;br /&gt;
#override_dh_auto_configure:&lt;br /&gt;
#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos tiedoston syntaksi on epäselvä, katso artikkeli [[Makefile]]. Suurin osa tiedoston sisällöstä on #-merkillä alkavia kommentteja, poikkeuksena kuitenkin ensimmäinen rivi, joka on erityinen [[wikipedia:en:Shebang (Unix)|#!-rivi]].&lt;br /&gt;
&lt;br /&gt;
Rivien 6–7 &amp;quot;hardening&amp;quot; viittaa [https://wiki.debian.org/Hardening#Environment_variables Debianin käyttöön ottamiin GCC-valitsimiin], joiden avulla voitaisiin estää mm. tietyntyyppisiä tietomurtoja.&lt;br /&gt;
&lt;br /&gt;
Riveillä 9–13 asetetaan käännösoptiot, jos niitä tarvitsee erikseen määritellä. Esimerkiksi [[gcc|C-kääntäjän]] käännösparametrit laitetaan muuttujaan DEB_CFLAGS_MAINT_APPEND, C++-kääntäjän muuttujaan DEB_CXXFLAGS_MAINT_APPEND ja linkittäjän ([[ld]]) muuttujaan DEB_LDFLAGS_MAINT_APPEND.&lt;br /&gt;
&lt;br /&gt;
Rivillä 15 oleva Makefilen jokerimerkki (engl. &#039;&#039;wildcard&#039;&#039;) &#039;&#039;&#039;%&#039;&#039;&#039; tarkoittaa, että kun kutsutaan &amp;lt;tt&amp;gt;debian/rules &#039;&#039;build&#039;&#039;&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;debian/rules &#039;&#039;binary&#039;&#039;&amp;lt;/tt&amp;gt;, make suorittaa rivin 16 mukaan komennon &amp;lt;tt&amp;gt;dh &#039;&#039;build&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;dh &#039;&#039;binary&#039;&#039; --with autotools_dev&amp;lt;/tt&amp;gt;. Komento &amp;lt;tt&amp;gt;dh build&amp;lt;/tt&amp;gt; taas puolestaan suorittaa pitkän listan erilaisia dh-alkuisia ohjelmia, jotka ovat debhelperin funktiokutsuja, jotka tekevät erilaisia pieniä operaatioita rakentaen pakettia. Mm. seuraavia funktioita on tarjolla:&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Komento&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Kuvaus&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testdir&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että ollaan oikeassa hakemistossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testroot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että meillä on pääkäyttäjän oikeudet kun niitä tarvitaan&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_configure&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa ./configure:n tai vastaavan vaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_build&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Kääntää paketin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_auto_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Suorittaa make installin tai vastaavan asentamisvaiheen&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_strip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Ajaa [[strip]]-komennon suoritettaville tiedostoille, jolloin niiden koko pienenee&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_compress&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Pakkaa [[gzip]]illä [[man]]-sivut ja ohjetiedostot, joiden koko ylittää 4kt&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_gencontrol&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Luo binääripaketille &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston ja kopioi sen hakemistoon &amp;lt;tt&amp;gt;debian/hello/DEBIAN&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_md5sums&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Laskee [[md5sum|MD5]]-tarkistussummat paketin tiedostoille&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Jos ohjelma ei asenna kaikkia tarpeellisia tiedostoja oikeisiin hakemistoihin autoconfin avulla (esim. komennolla &amp;lt;tt&amp;gt;make install&amp;lt;/tt&amp;gt;), voi käyttää tätä apufunktiota, jolle kerrotaan asennettavat tiedostot ja hakemistot &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;.install&amp;lt;/tt&amp;gt;-tiedostossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installchangelog&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa muutoslokin polkuun &amp;lt;tt&amp;gt;/usr/share/doc/package/changelog&amp;lt;/tt&amp;gt;. Jos komennolle annetaan parametrina paketin mukana tulevan muutoslokin tiedostonimi, asennetaan myös se.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_shlibdeps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Määrittää paketin riippuvuuksia binääritiedostoihin linkitettyjen kirjastotiedostojen perusteella&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installdocs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa &amp;lt;tt&amp;gt;debian/docs&amp;lt;/tt&amp;gt;-tiedostossa listatut tiedostot ja mm. &amp;lt;tt&amp;gt;debian/README.debian&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;-tiedostot polkuun &amp;lt;tt&amp;gt;/usr/share/doc/paketti&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Taulukossa on vain osa dh-funktioista, loput ovat man-sivulla debhelper(7). Rules-tiedostossamme viimeisenä on esimerkki &#039;&#039;override targetista&#039;&#039;, jollainen ajetaan vastaavan dh-ohjelman sijasta.&lt;br /&gt;
&lt;br /&gt;
Jos paketti ei jotain yleisistä käännösjärjestelmistä (kuten Ant, GNU Autotools, CMake, QMake tai tavallinen Makefile), on &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt; muokattava sellaiseksi, että ohjelma kääntyy ja asentuu polkuun &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;&amp;lt;/tt&amp;gt;. Se, miten kääntäminen tapahtuu, riippuu ohjelmasta. Funktion &amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt; avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binääripaketissa.&lt;br /&gt;
&lt;br /&gt;
=== compat ===&lt;br /&gt;
Tässä tiedostossa ilmoitamme, mitä versiota debhelperistä paketista käytetään. Kirjoitushetkellä viimeisin vakaa versio on 9.&lt;br /&gt;
&lt;br /&gt;
=== source/format ===&lt;br /&gt;
Tätä tiedostoa ei tarvitse muuttaa. Sen sisältö on:&lt;br /&gt;
 3.0 (quilt)&lt;br /&gt;
Quilt viittaa [[#Patchit|patchien hallintaan]] käyttämäämme ohjelmaan. 3.0:n merkityksestä voi lukea tarkemmin Debian Wikin artikkelista [https://wiki.debian.org/Projects/DebSrc3.0 DebSrc3.0].&lt;br /&gt;
&lt;br /&gt;
=== .ex-päätteiset tiedostot ===&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; luo &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistoon monia .ex-päätteisiä tiedostoja. Näitä tiedostoja muokkaamalla on mahdollista esimerkiksi saada paketti lisäämään tehtäviä [[cron]]ille ja kuvakkeen työpöytäympäristön valikkoon.&lt;br /&gt;
&lt;br /&gt;
Oletuksena .ex-päätteisiä tiedostoja ei huomioida. Jos haluat käyttää niitä, muokkaa tiedosto ensin sopivaksi ja poista tiedostonimestä tämän jälkeen .ex-pääte. Lisäksi tarkista, että sopivaa funktiota kutsutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa.&lt;br /&gt;
&lt;br /&gt;
Poista ne .ex-tiedostot, joita et tarvitse. Hellon tapauksessa emme tarvitse näitä. Seuraavassa esitellään kuitenkin muutamia yleisimmin käytettyjä tiedostoja joita luultavasti tulet joskus tarvitsemaan:&lt;br /&gt;
&lt;br /&gt;
==== cron.d ====&lt;br /&gt;
Tiedostoon &amp;lt;tt&amp;gt;cron.d&amp;lt;/tt&amp;gt; kirjoitetaan rivit, jotka halutaan lisätä &amp;lt;tt&amp;gt;cron&amp;lt;/tt&amp;gt;-järjestelmään. Rivit kirjoitetaan samassa muodossa kuin missä cronille annetaan suoritettavia tehtäviä. Katso lisätietoja artikkelista [[cron]].&lt;br /&gt;
&lt;br /&gt;
==== init.d ====&lt;br /&gt;
[[init]]-skripti, joka asennetaan polkuun &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedoston komennolla &amp;lt;tt&amp;gt;dh_installinit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== manpage.1 ====&lt;br /&gt;
Ohjelman [[man]]-sivu. Pisteen jälkeen oleva numero kertoo, mihin kategoriaan man-sivu asennetaan (kategoriat on listattu artikkelissa [[man]]). Man-sivu asennetaan paikoilleen &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa olevalla komennolla &amp;lt;tt&amp;gt;dh_installman debian/mansivu.1&amp;lt;/tt&amp;gt;. Tiedoston nimi on yleensä muotoa &amp;lt;tt&amp;gt;paketinnimi.numero&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== watch ====&lt;br /&gt;
Kertoo &amp;lt;tt&amp;gt;uscan&amp;lt;/tt&amp;gt;-ohjelmalle, miten paketin uudet versiot voi ladata internetistä. Lisätietoja tiedostomuodosta: &amp;lt;code&amp;gt;man 1 uscan&amp;lt;/code&amp;gt; ja [https://wiki.debian.org/debian/watch Debian Wiki]. Watch-tiedosto mahdollistaa lähdekoodipaketin helpon päivittämisen aina uusimpaan versioon.&lt;br /&gt;
&lt;br /&gt;
[[GNU]]:n projekteille, jollainen Hellokin on, toimii seuraavanlainen watch-tiedosto:&lt;br /&gt;
 version=4&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://ftp.gnu.org/gnu/@PACKAGE@/&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
    @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate&lt;br /&gt;
&lt;br /&gt;
== Tehdään paketti! ==&lt;br /&gt;
Nyt kun tarvittavat tiedostot on lopulta muokattu sopiviksi, on aika luoda varsinainen paketti. Siirry ohjelman päähakemistoon (&amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;) ja aja komento&lt;br /&gt;
 debuild&lt;br /&gt;
joka tekee seuraavat asiat:&lt;br /&gt;
*Siistii paketin (ajaa [[make]]lla komennon &amp;lt;tt&amp;gt;debian/rules clean&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Kääntää ohjelman (&amp;lt;tt&amp;gt;debian/rules build&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Luo binääripaketin (&amp;lt;tt&amp;gt;debian/rules binary&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Allekirjoittaa .dsc-tiedoston [[gpg|gnupgllä]]&lt;br /&gt;
*Luo ja allekirjoittaa .changes-tiedoston&lt;br /&gt;
*Käyttää [[fakeroot]]ia, jolloin pääkäyttäjän oikeuksia ei tarvita&lt;br /&gt;
Allekirjoitus vaatii, että olet luonut [[gpg]]:llä itsellesi avaimen. Tällöin sinulta kysytään avaimesi salasanaa.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen, jos kaikki sujui ilman virheitä, ylähakemistosta pitäisi löytyä seuraavat tiedostot:&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.build&amp;lt;/tt&amp;gt; – kääntämisloki (&#039;&#039;build log&#039;&#039;)&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.changes&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu tiedosto, joka sisältää paketin muutoslokin (&amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;) ja pakettiin liittyvien tiedostojen [[SHA]]1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.deb&amp;lt;/tt&amp;gt; – lopullinen deb-paketti!&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.debian.tar.xz&amp;lt;/tt&amp;gt; – &amp;lt;tt&amp;gt;debian-hakemiston&amp;lt;/tt&amp;gt; sisältö [[xz]]-pakattuna tar-arkistona&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.dsc&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston kaltainen tiedosto, jossa on listattu lähdekooditiedoston ja diff-tiedoston SHA1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt; – alkuperäinen lähdekoodi&lt;br /&gt;
&lt;br /&gt;
Nyt lopullinen paketti voidaan asentaa [[dpkg]]:llä:&lt;br /&gt;
 dpkg -i hello_2.10-1_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Kun myöhemmin teet muutoksia pakettiin, voit luoda uuden paketin nopeasti komennolla&lt;br /&gt;
 fakeroot debian/rules binary&lt;br /&gt;
joka ei kuitenkaan käännä ohjelmaa alusta lähtien (tärkeää huomata, jos muutat lähdekoodia).&lt;br /&gt;
&lt;br /&gt;
=== Lähdekoodipaketti ===&lt;br /&gt;
Edellä teimme tavallisen ns. &#039;&#039;binääripaketin&#039;&#039;, joka sisältää valmiiksi käännetyn ohjelman. Monesti on tarpeen tehdä myös lähdekoodipaketti, joka sisältää pakettiin ja sen kääntämiseen ja asentamiseen liittyvät tiedot (&amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto) ja ohjelman lähdekoodin. Tällöin paketti on mahdollista kääntää ja asentaa jokaiselle sopivalle alustalle kun taas käännetty &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-paketti toimii vain yhdellä alustalla (esim. amd64, i386 tai armhf).&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketteja käytetään etenkin kun paketti julkaistaan esimerkiksi lisäämällä se jonkin jakelun virallisiin pakettilähteisiin. Tällöin kehittäjä yleensä vain lähettää palvelimelle lähdekoodipaketin, jonka palvelin sitten kääntää useille eri arkkitehtuureille.&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketti luodaan ajamalla paketin päähakemistossa komento&lt;br /&gt;
 debuild -S -sa&lt;br /&gt;
Missä valitsin &amp;lt;tt&amp;gt;-S&amp;lt;/tt&amp;gt; tarkoittaa, että luodaan lähdekoodipaketti ja &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt; sisällyttää pakettiin mukaan alkuperäisen lähdekooditiedoston (&amp;lt;tt&amp;gt;.orig.tar.gz&amp;lt;/tt&amp;gt;). Tällöin ylähakemistoon pitäisi ilmestyä samanlaisten tiedostojen kuin luotaessa binääripakettia, paitsi että varsinaista &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-pakettia ei ilmesty. &lt;br /&gt;
&lt;br /&gt;
Nyt lähdekoodipaketti koostuu näistä tiedostoista (&amp;lt;tt&amp;gt;paketti.dsc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;paketti.orig.tar.gz&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;paketti.debian.tar.xz&amp;lt;/tt&amp;gt;), ja sitä voidaan hallita esimerkiksi &amp;lt;tt&amp;gt;dpkg-source&amp;lt;/tt&amp;gt;-ohjelmalla. Jos esimerkiksi olet saanut jostain lähdekoodipaketin, voit purkaa ja kääntää seuraavasti&lt;br /&gt;
 dpkg-source -x paketti.dsc&lt;br /&gt;
 cd paketti&lt;br /&gt;
 debuild&lt;br /&gt;
&lt;br /&gt;
Ilman &amp;lt;tt&amp;gt;debuildin&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt;-valitsinta voi luoda paketin, joka ei sisällä alkuperäistä lähdekoodia. Tälle on käyttöä silloin, kun paketteja pidetään ulkopuolisessa pakettivarastossa ja uusi versio voidaan julkaista vain lähettämällä palvelimelle uusi lähdekoodipaketti ilman alkuperäistä lähdekoodia. Tällainen tilanne tulee eteen, kun paketista tehdään uusi versio joka ei muuta itse ohjelman lähdekoodia tai muuttaa sitä erillisellä &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedostolla (eli ohjelman tekijä ei ole julkaissut uutta versiota, mutta paketin tekijä tekee muutoksia joko itse ohjelmaan tai paketointiin).&lt;br /&gt;
&lt;br /&gt;
== Lintian: onnistuiko paketti? ==&lt;br /&gt;
Lintian on ohjelma, joka tarkistaa tekemäsi paketin laadun. Sille annetaan parametrina pakettia luotaessa syntynyt &amp;lt;tt&amp;gt;.changes&amp;lt;/tt&amp;gt;-päätteinen tiedosto. Yleensä kannattaa antaa myös valitsimet -E, -v, -i ja -I (iso &#039;&#039;i&#039;&#039;), jolloin lintian kertoo tarkemmin, mikä paketissa on vialla:&lt;br /&gt;
 lintian -EviI hello_2.10-1_amd64.changes&lt;br /&gt;
Tulosteessa E:-alkavat rivit tarkoittavat virhettä, W:-alkavat varoituksia ja N:-alkavat huomautuksia.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi et poistanut &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistosta &amp;lt;tt&amp;gt;.ex&amp;lt;/tt&amp;gt;-päätteisiä tiedostoja, lintian varoittaa niistä. Yleensä paketin tulisi olla sellainen, ettei lintian löydä siitä mitään valitettavaa.&lt;br /&gt;
&lt;br /&gt;
== Patchit ==&lt;br /&gt;
Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä.&lt;br /&gt;
&lt;br /&gt;
== Muut pakettityypit ==&lt;br /&gt;
===Multi-binary: Monta pakettia yhdestä lähdekoodipaketista ===&lt;br /&gt;
Joskus tulee eteen tilanne, jossa yksi ohjelma on jaettava useampaan eri pakettiin. Tällainen tilanne tulee eteen mm. silloin, kun paketoidaan suurta peliä: yleensä peleissä itse käännetty ohjelma vie murto-osan siitä tilasta, jonka pelin datatiedostot vievät. Jos koko ohjelma laitettaisiin yhteen pakettiin, käytettäisiin turhaan palvelimen levytilaa ja resursseja, kun samat alustariippumattomat datatiedostot kopioitaisiin jokaiselle arkkitehtuurille tehtyyn pakettiin. &lt;br /&gt;
&lt;br /&gt;
Toinen esimerkki tilanteesta, jossa ohjelman jakaminen moneen pakettiin on järkevää on ohjelma, jonka mukana tulee paljon (esimerkiksi jopa kymmeniä megatavuja) dokumentaatiota ja ohjeita.&lt;br /&gt;
&lt;br /&gt;
Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt;-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: extra&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Recommends: hello-doc&lt;br /&gt;
Description: Hello-ohjelma&lt;br /&gt;
 Klassinen hello-ohjelma, joka tulostaa tekstin&lt;br /&gt;
 hello world.&lt;br /&gt;
&lt;br /&gt;
Package: hello-doc&lt;br /&gt;
Architecture: all&lt;br /&gt;
Depends: hello&lt;br /&gt;
Description: Hellon ohjeet&lt;br /&gt;
 Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen muutetaan paketin asentamista (&amp;lt;tt&amp;gt;debian/install&amp;lt;/tt&amp;gt;) siten, että esimerkiksi pakettiin &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt; kuuluvat tiedostot asennettaisiin hakemistoon &amp;lt;tt&amp;gt;debian/hello/&amp;lt;/tt&amp;gt; ja paketin &amp;lt;tt&amp;gt;hello-doc&amp;lt;/tt&amp;gt;-tiedostot hakemistoon &amp;lt;tt&amp;gt;debian/hello-doc&amp;lt;/tt&amp;gt;. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun &amp;lt;tt&amp;gt;debian/hello/usr/bin/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos jokin Debhelperin komento (muotoa &amp;lt;tt&amp;gt;dh_jotain&amp;lt;/tt&amp;gt;) halutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa ajaa vain tietylle paketille, voidaan käyttää valitsinta &amp;lt;tt&amp;gt;--package&amp;lt;/tt&amp;gt; eli lyhyemmin &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt;, esimerkiksi komennolla&lt;br /&gt;
&amp;lt;source lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
override_dh_installinfo:&lt;br /&gt;
	dh_installinfo -phello&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
asennettaisiin [[info]]-tiedostot vain &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt;-pakettia luotaessa.&lt;br /&gt;
&lt;br /&gt;
== Pbuilder ==&lt;br /&gt;
Pbuilder on järjestelmä, joka kääntää ja rakentaa paketit omassa pienessä [[chroot]]-järjestelmässä. Pbuilderia käytettäessä saavutetaan mm. seuraavat edut:&lt;br /&gt;
#Käännösaikaiset riippuvuudet (&#039;&#039;build-depends&#039;&#039;) asennetaan automaattisesti&lt;br /&gt;
#Paketti käännetään puhtaassa ja mahdollisimman yksinkertaisessa ympäristössä, johon ei ole asennettu mitään ylimääräistä. Näin varmistetaan, että paketin kääntäminen onnistuu kaikissa järjestelmissä ja että käännösaikaiset riippuvuudet ovat riittävät.&lt;br /&gt;
#Paketin voi kääntää eri jakeluille ja jopa eri arkkitehtuurille&lt;br /&gt;
&lt;br /&gt;
Lisätietoja Pbuilderin käytöstä löytyy artikkelista [[Pbuilder]].&lt;br /&gt;
&lt;br /&gt;
== Paketin päivittäminen ja muokkaaminen ==&lt;br /&gt;
Edellä käsiteltiin uuden paketin tekemistä. Monesti eteen tulee kuitenkin myös tilanteita, joissa jo olemassa olevaa pakettia tulee muuttaa tai päivittää. Päivittämiselle tulee tarve kun paketoidusta ohjelmasta julkaistaan uusi versio tai vaikkapa silloin, kun ohjelmassa oleva ohjelmavirhe (bugi) korjataan &#039;&#039;patch&#039;&#039;-tiedostolla.&lt;br /&gt;
&lt;br /&gt;
Muokkauksen tekeminen alkaa hakemalla lähdekoodipaketti. Tämä onnistuu kätevästi komennolla &amp;lt;tt&amp;gt;[[apt-get]] source paketti&amp;lt;/tt&amp;gt;. Tällöin &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; hakee nykyiseen hakemistoon paketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedoston, muutokset sisältävän &amp;lt;tt&amp;gt;.diff.gz&amp;lt;/tt&amp;gt;-tiedoston ja alkuperäisen ohjelman sisältävän &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt;-paketin. Lisäksi hakemistoon syntyy &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt;-hakemisto, jonka sisältä löytyy sekä itse ohjelma että siihen tehdyt muutokset (mm. &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;)-hakemisto.&lt;br /&gt;
&lt;br /&gt;
Jos nyt halutaan esimerkiksi korjata ohjelmassa oleva bugi, voidaan edellä neuvotulla tavalla lisätä pakettiin uusi &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedosto. Tämän lisäksi on aina muistettava kirjata tiedot muutoksesta &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostoon. Tämä onnistuu helpoiten komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Muutoslokin on tarkoitus tarkkaan kertoa, mitä muutoksia on tehty. Yleensä muutos korjaa jonkun vianhallintajärjestelmässä olevan ilmoitetun bugin, jolloin muutoslokissa mainitaan tämän bugin numero (Debianin vianseurantajärjestelmän kanssa käytetään syntaksia &amp;lt;tt&amp;gt;Closes: #numero&amp;lt;/tt&amp;gt; ja Ubuntun Launchpad-järjestelmässä ilmoitettujen bugien kanssa syntaksia LP: #numero).&lt;br /&gt;
&lt;br /&gt;
Jos paketoidusta ohjelmasta on ilmestynyt uusi versio, täytyy toimia hieman eri tavalla. Ensimmäinen tehtävä on ladata uuden ohjelman lähdekoodipaketti ja tutustua uuden version mukana tuomiin muutoksiin (&amp;lt;tt&amp;gt;NEWS&amp;lt;/tt&amp;gt;- tai &amp;lt;tt&amp;gt;CHANGELOG&amp;lt;/tt&amp;gt;-tiedosto). Tämän jälkeen puretaan paketti tiedostoon &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt; ja uudelleennimetään lähdekoodipakettitiedosto nimelle &amp;lt;tt&amp;gt;ohjelman_versio.orig.tar.gz&amp;lt;/tt&amp;gt;. Eli aivan kuin olisimme paketoimassa uutta ohjelmaa. &lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen voidaan kopioida vanha &#039;&#039;debianisointi&#039;&#039; eli &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto vanhasta paketista uuteen pakettiin. Helpoimmissa tapauksissa tämä riittää, mutta etenkin käytettävien patchien toimiminen ja tarpeellisuus uuden version kanssa on todella tärkeä selvittää. Lisäksi ohjelman kääntäminen ja asentaminen saattaa uuden version kanssa tapahtua eri tavalla. Tällaisessa tapauksessa muutoslokiin kirjataan maininta uudesta versiosta (&amp;quot;New upstream release&amp;quot;) ja kerrotaan myös, mitä muita muutoksia pakettiin tehtiin (esimerkiksi jätettiin pois tarpeettomaksi käynyt patchi.&lt;br /&gt;
&lt;br /&gt;
Uuden version numero riippuu siitä, paketoitiinko uusi versio vai korjattiinko vain vanhassa versiossa oleva ongelma. Jos itse ohjelman versio ei muuttunut, kasvatetaan paketin &amp;quot;revision&amp;quot;-numeroa yhdellä, esimerkiksi versio &amp;quot;0.4.1-2&amp;quot; muuttuisi versioksi &amp;quot;0.4.1-3&amp;quot;. Jos taas ohjelman versio muuttui, asetetaan paketin versioksi uuden version numero ja &amp;quot;revisioniksi&amp;quot; asetetaan 1: &amp;quot;0.4.1-2&amp;quot; -&amp;gt; &amp;quot;0.4.2-1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Näiden toimenpiteiden jälkeen voidaan paketti luoda kuten normaalistikin &amp;lt;tt&amp;gt;debuild&amp;lt;/tt&amp;gt;- ja &amp;lt;tt&amp;gt;pdebuild&amp;lt;/tt&amp;gt;-komennoilla.&lt;br /&gt;
&lt;br /&gt;
===Debdiff===&lt;br /&gt;
Debdiff on [[diff]]in kaltainen ohjelma, joka vertailee kahta deb-pakettia. Sitä käytetään mm. silloin, kun lähetetään itse tehty korjaus ohjelman alkuperäiselle paketoijalle tai vianseurantajärjestelmään. Yleensä näin toimitaan silloin, kun muutoksen tekijällä ei ole oikeutta lähettää korjauksiaan suoraan virallisiin pakettivarastoihin.&lt;br /&gt;
&lt;br /&gt;
Debdiffille annetaan kahden lähdekoodipaketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedostot:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc&lt;br /&gt;
Jolloin ohjelma tulostaa erot ruudulle. Yleensä erot kannattaa [[Komentorivin perusteet#putkitus|putkittaa]] tiedostoon:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc &amp;gt; erot.debdiff&lt;br /&gt;
&lt;br /&gt;
== Pakettini on valmis, miten saan sen jakeluni pakettilähteisiin ==&lt;br /&gt;
Paketin saaminen jakelun virallisiin pakettilähteisiin on jakelun käytännöistä riippuen enemmän tai vähemmän työläs prosessi, johtuen muun muassa laadunvarmistuksesta. Teknisellä tasolla paketit viedään jakeluihin [[dput]]- tai [[dupload]]-työkaluilla. Katso lisää näiden työkalujen käytöstä näiden omilta sivuilta.&lt;br /&gt;
&lt;br /&gt;
Debianilla on käytössä [http://mentors.debian.net mentors.debian.net]-palvelu, jonne kaikki voivat lähettää omia pakettejaan tarjolle lähdekoodimuodossa. Tämän jälkeen paketille hankitaan/pyydetään halukas &amp;quot;sponsori&amp;quot;, joka on kokenut Debian-kehittäjä jolla on oikeudet lisätä paketteja virallisiin pakettilähteisiin. Sponsoreita haetaan yleensä lähettämällä viesti &amp;lt;tt&amp;gt;debian-mentors&amp;lt;/tt&amp;gt;-sähköpostilistalle sivustolta löytyvien ohjeiden mukaan. Tämän jälkeen joku paketista kiinnostunut kehittäjä tarkistaa sen ja antaa yleensä korjausehdotuksia. Kun paketti on hänen mielestään riittävän laadukas, hän lisää sen pakettilähteisiin. Prosessi voi paketin laadusta ja sponsoroijasta riippuen kestää pitkäänkin, ja vapaaehtoisuuteen perustamalla saattaa vaatia omaa aktiivisuutta ja kohteliasta ajoittaista tiediustelua.&lt;br /&gt;
&lt;br /&gt;
Virallisten pakettilähteiden lisäksi voit myös ylläpitää omaa. Paketteja voi myös jakaa helposti esimerkiksi [[Launchpad | Launchpadin]] tarjoaman [[PPA]]-ominaisuuden avulla. PPA automatisoi paketin kääntämistä ja julkaisua. Halutessasi voit myös vain yksinkertaisesti jakaa tekemääsi deb-tiedostoa millä tahansa tiedostonjakotekniikalla.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://www.debian.org/doc/maint-guide/index.en.html#contents Debian New Maintainers&#039; Guide]&lt;br /&gt;
*[http://www.debian.org/doc/debian-policy/ Debian policy] - Debianin käytäntöjä ja sääntöjä&lt;br /&gt;
*Ubuntun [https://wiki.ubuntu.com/PackagingGuide PackagingGuide]-opas&lt;br /&gt;
*[http://wiki.ubuntu.com/PackagingGuide Packaging guide - Ubuntu Wiki]&lt;br /&gt;
*[http://www.debian-administration.org/articles/286 Setting up your own APT reposity]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Paketinhallinta]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=46934</id>
		<title>Deb-paketin tekeminen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Deb-paketin_tekeminen&amp;diff=46934"/>
		<updated>2016-08-15T19:41:10Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: johdanto, rules, jäi keskeneräiseen kuntoon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Vanhentunut}}&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Huomautus&#039;&#039;&#039;: Erityisesti tämän artikkelin kappaleet [[#rules]], [[#Patchit]] ja [[#CDBS]] ovat jo vanhentunutta tietoa. Kannattaa perehtyä [[#Aiheesta muualla]] -linkkeihin, jotka ovat usein päivittyviä oppaita.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Debian]]issa ja siihen pohjautuvissa jakeluissa (esim. [[Ubuntu]]ssa ja [[Linux Mint]]issä) käytetään [[Dpkg]]-paketinhallintajärjestelmää. Dpkg:ssa paketit ovat &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-tiedostoja, jotka sisältävät itse ohjelman lisäksi mm. tiedot paketin riippuvuuksista ja siitä, mihin ohjelma asennetaan. Deb-pakettien tekeminen ei ole mitenkään ylivoimainen tehtävä, kunhan perusasiat ja mm. [[komentorivi|komentorivin käyttö]] ovat hallussa.&lt;br /&gt;
&lt;br /&gt;
Tässä oppaassa luodaan aluksi malliksi yksinkertainen paketti [http://www.gnu.org/software/hello/ GNU Hello] -ohjelmasta, joka on [[GNU]]-projektin esimerkkiohjelma. Ohjelman lähdekoodipaketin voi ladata [http://ftp.gnu.org/gnu/hello/ GNU:n palvelimelta]. Paketin luomisessa käytetään tässä apuna Debhelper-apuohjelmaa.&lt;br /&gt;
&lt;br /&gt;
Debianin eri versiosta löytyvän paketin voi kääntää käytetylle versiolle sopivaksi tai pakettiin tehdä pieniä muutoksia huomattavasti helpommin kuin tätä ohjetta seuraamalla, komennoilla &amp;lt;tt&amp;gt;apt-get build-dep paketti&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;apt-get source paketti&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;dpkg-deb -build pakettihakemisto&amp;lt;/tt&amp;gt;, jolloin muutokset tehdään viimeksi mainittujen välissä (varsinainen muutos + uusi kohta tiedostoon &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;). Jos paketti tehdään valmiista Debianin lähdekoodipaketista, kääntämisen binääripaketiksi voi hoitaa paketin hakemisen yhteydessä komennolla &amp;lt;tt&amp;gt;apt-get --compile source paketti&amp;lt;/tt&amp;gt;. Lisätietoja näistä komennoista löytyy artikkeleista [[apt-get]] ja [[dpkg]].&lt;br /&gt;
&lt;br /&gt;
== Valmistelut ==&lt;br /&gt;
Aluksi on hyvä asentaa muutamia perustyökaluja, jotka sisältävät paketointityössä tarvittavia tai valinnaisia apuohjelmia. Asenna siis seuraavat paketit:&lt;br /&gt;
 dpkg-dev autoconf dh-make devscripts [[fakeroot]] [[Gpg|gnupg]] build-essential lintian libtool automake pbuilder&lt;br /&gt;
&lt;br /&gt;
Kun paketit on asennettu, lataa Hello-ohjelman lähdekoodi ja [[tar|pura]] se työhakemistoosi (&amp;lt;code&amp;gt;tar xzvf &#039;&#039;tiedosto&#039;&#039;&amp;lt;/code&amp;gt;). Nyt sinulla pitäisi olla työhakemistossasi tiedosto &amp;lt;tt&amp;gt;hello-2.10.tar.gz&amp;lt;/tt&amp;gt; ja hakemisto &amp;lt;tt&amp;gt;hello-2.10&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Paketoinnin aloitus ==&lt;br /&gt;
Aluksi kannattaa kokeilla, että saat ohjelman [[Kääntäminen|käännettyä]] ja ajettua. Sinun pitäisi osata tehdä tämä, jos luet tätä opasta, mutta lyhykäisyydessään voit asentaa Hellon hakemistoon ~/hello seuraavasti:&lt;br /&gt;
 ./configure --prefix=/home/käyttäjä/hello&lt;br /&gt;
 [[make]]&lt;br /&gt;
 make install&lt;br /&gt;
Nyt hakemistosta ~/hello pitäisi löytyä alihakemistot bin ja share, joissa Hellon tiedostot ovat.&lt;br /&gt;
&lt;br /&gt;
Putsaa nyt hakemisto, jossa käänsit Hellon komennolla&lt;br /&gt;
 make distclean&lt;br /&gt;
Nyt jos ohjelma kääntyi oikein, voimme aloittaa itse paketin tekemisen.&lt;br /&gt;
&lt;br /&gt;
=== Pohja ===&lt;br /&gt;
Siirry ohjelman hakemistoon (hello-2.10) ja aja komento&lt;br /&gt;
 dh_make -e sinun@sähköpostiosoitteesi -f ../hello-2.10.tar.gz&lt;br /&gt;
Toinen parametri on siis paketin tekijän sähköpostiosoite ja neljäs alkuperäinen lähdekooditiedosto. Ohjelma kysyy aluksi, minkätyyppistä pakettia olemme luomassa:&lt;br /&gt;
 Type of package: (single, indep, library, python)&lt;br /&gt;
 [s/i/l/p]?&lt;br /&gt;
Vastaa tähän s (&#039;&#039;single binary&#039;&#039;), sillä olemme luomassa yksinkertaista yhden ohjelman käsittävää pakettia. Tämän jälkeen vahvista tiedot enterillä, jonka jälkeen dh_make luo hakemistoon &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-alihakemiston, joka sisältää tiedostot, joiden perusteella varsinainen paketti luodaan. Se myös luo ylähakemistoon tiedoston &amp;lt;tt&amp;gt;paketti_versio.orig.tar.gz&amp;lt;/tt&amp;gt;, tässä tapauksessa siis &amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt; joka sisältää alkuperäisen lähdekoodipaketin.&lt;br /&gt;
&lt;br /&gt;
Huomaa, että &amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; kuuluu ajaa vain kerran! Tulevien muutosten jälkeen sitä ei tarvitse (eikä saa) ajaa.&lt;br /&gt;
&lt;br /&gt;
== Asennushakemisto ==&lt;br /&gt;
Paketin luova työkalu päättelee paketin tiedostot siten, että ohjelma asennetaan sen valvonnassa väliaikaiseen alihakemistoon. Yleensä tämä alihakemisto on &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, jonne paketti asennetaan aivan normaalisti: esimerkiksi Hellon binääri menisi hakemistoon &amp;lt;tt&amp;gt;debian/hello/usr/bin/hello&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Autoconf]]ia käyttävien pakettien kanssa (pääasiassa ohjelmat, jotka asennetaan komennolla &amp;lt;tt&amp;gt;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&amp;lt;/tt&amp;gt;) paketin luoma työkalu osaa hoitaa tämän automaattisesti, eikä sinun tarvitse tässä vaiheessa tehdä mitään. Kuten huomasit asentaessamme ohjelmaa oppaan alussa, annoimme configure-skriptille parametrin &amp;lt;tt&amp;gt;--prefix=/hakemisto/jonne/ohjelma/asennetaan&amp;lt;/tt&amp;gt;. Paketoija antaa configurelle samalla tavalla sopivan parametrin, jolloin ohjelma asentuu oikeaan paikkaan.&lt;br /&gt;
&lt;br /&gt;
Jos ohjelma ei käytä autoconfia, on asennushakemistosta huolehdittava itse. Tämä tulee eteen kun myöhemmin muokkaamme tiedostoa &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Asetustiedostot ==&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; loi &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemiston, joka sisältää monia tiedostoja, joiden perusteella itse paketti luodaan. Tässä vaiheessa on käytävä ne läpi ja muokattava sopiviksi.&lt;br /&gt;
&lt;br /&gt;
=== control ===&lt;br /&gt;
Tiedostossa &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt; kerrotaan perustiedot paketista ja sen riippuvuuksista. Meidän tapauksessamme dh_make loi seuraavanlaisen pohjan:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homepage: &amp;lt;insert the upstream URL, if relevant&amp;gt;&lt;br /&gt;
Vcs-Git: git://anonscm.debian.org/collab-maint/hello.git&lt;br /&gt;
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: &amp;lt;insert up to 60 chars description&amp;gt;&lt;br /&gt;
 &amp;lt;insert long description, indented with spaces&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Riveillä 1–9 on &#039;&#039;lähdekoodipaketin&#039;&#039; (engl. &#039;&#039;source&#039;&#039;) perustiedot:&lt;br /&gt;
*Rivillä 1 on lähdekoodipaketin nimi&lt;br /&gt;
*Rivillä 2 kerrotaan, mihin osioon paketti kuuluu. Debianissa paketit osioihin, joita ovat mm. &#039;&#039;main&#039;&#039; (vapaat ohjelmat), &#039;&#039;non-free&#039;&#039; (ohjelmat, jotka eivät ole vapaita) ja &#039;&#039;contrib&#039;&#039; (ohjelmat, jotka riippuvat vapaista ohjelmista). Nämä ohjelmat on yhä jaettu pienempiin osioihin, kuten &#039;&#039;devel&#039;&#039; (kehitystyökalut) ja &#039;&#039;mail&#039;&#039; (sähköpostiohjelmat). Hellolle sopiva osio voisi olla &#039;&#039;text&#039;&#039;. Osiot on listattu [http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections Debian policyssä].&lt;br /&gt;
*Kolmannella rivillä kerrotaan, kuinka tärkeää käyttäjälle on asentaa tämä paketti. Vaikka &amp;quot;Terve maailma!&amp;quot; -viestin tulostava ohjelma voi tuntua tärkeältä, ehkäpä se ei kuitenkaan ole yhtä tärkeä kuin vaikka ydin, joten asetetaan sen tärkeysasteeksi &#039;&#039;optional&#039;&#039;, jota käytetään useimmille paketeille.&lt;br /&gt;
*Neljännellä rivillä on paketin tekijän nimi ja sähköpostiosoite&lt;br /&gt;
*Rivillä 5 listataan pilkulla erotettuna paketit, jotka tarvitaan tämän paketin kääntämiseen. Jos ohjelmasta on oltava tietty versio, haluttu versio voidaan ilmoittaa sulkeissa (esimerkissä tarvitaan &#039;&#039;debhelper&#039;&#039;-paketin versio 9 tai uudempi). Käytännössä aina tarvittavia paketteja (esim. gcc ja make) ei tarvitse luetella, sillä ne otetaan mukaan automaattisesti. Kuitenkin kaikki muut kääntämisessä tarvittavat vähänkin harvinaisemmat paketit on lueteltava. Tässä vaiheessa voitaisiin myös samalla tavalla luetella paketit, jotka estävät kääntämisen (&#039;&#039;Build-Conflicts: paketti1, paketti2&#039;&#039;). Hello on sen verran helppo kääntää, ettei meidän tarvitse nyt lisätä tähän mitään ylimääräisiä paketteja.&lt;br /&gt;
*Rivillä 6 kerrotaan, minkä &#039;&#039;Debian Policy&#039;&#039; -standardin version mukainen paketti on. Tähän ei tarvitse koskea.&lt;br /&gt;
*Riville 7 kirjoitetaan ohjelman kotisivu.&lt;br /&gt;
*Riveillä 8 ja 9 voidaan kertoa, missä [[versionhallintajärjestelmä]]ssä debian-pakettia ylläpidetään. Me voimme poistaa nämä rivit, koska emme tässä käytä versionhallintaa.&lt;br /&gt;
&lt;br /&gt;
Riveillä 11–15 on &#039;&#039;binääripaketin&#039;&#039; tiedot:&lt;br /&gt;
*Rivillä 11 on varsinaisen binääripaketin nimi. Yleensä se on sama kuin lähdekoodipaketin nimi.&lt;br /&gt;
*Rivillä 12 kerrotaan, millä arkkitehtuurilla paketti toimii. Jätetään tämä arvoon &amp;quot;any&amp;quot;, jolloin paketin tekevä työkalu huolehtii arkkitehtuurista. Jos paketti toimii kaikilla arkkitehtuureilla (esim. se on ohjepaketti tai [[Perl]]-skripti), arkkitehtuuriksi laitetaan &amp;quot;all&amp;quot;.&lt;br /&gt;
*Rivillä 13 listataan paketit, jotka ovat binääripaketin riippuvuuksia. Koska Hello ei tarvitse mitään erityisiä paketteja, jätetään tämä tyhjäksi. &amp;quot;&#039;&#039;${shlibs:Depends}&#039;&#039;&amp;quot; aiheuttaa sen, että pakettia luotaessa pyritään riippuvuuksiksi lisäämään automaattisesti ne paketit, joiden tiedostoja vasten tämän paketin konekieliset tiedostot on linkitetty.&lt;br /&gt;
*Lopuksi paketille annetaan vielä lyhyt (suositus noin 60 merkkiä) ja pitkä kuvaus. Pitkä kuvaus kirjoitetaan tiedoston loppuun siten, että jokaisen rivin alussa on välilyönti. Tyhjiä rivejä voidaan tehdä laittamalla riville pelkästään piste. Näin lopullinen &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedosto voisi näyttää tältä:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot; line&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: text&lt;br /&gt;
Priority: optional&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
Homapage: https://www.gnu.org/software/hello/&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Description: Hello world -ohjelma&lt;br /&gt;
 Klassinen Hello world -ohjelma, jonka avulla opettelemme &lt;br /&gt;
 deb-pakettien tekemistä.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Suositeltavat paketit, ristiriidat ja muut suhteet toisiin paketteihin ====&lt;br /&gt;
Riippuvuuksien lisäksi paketti voi myös suositella jonkun toisen paketin asentamista, tai se voi myös kieltäytyä asentumasta samaan järjestelmään jonkin toisen paketin kanssa (ristiriita toisen paketin kanssa, engl. &#039;&#039;conflict&#039;&#039;). Tällaiset paketit esitellään &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedostossa samaan tapaan kuin riippuvuudet. &lt;br /&gt;
&lt;br /&gt;
Riippuvuuksien lisäksi apt tukee seuraavia suhteita pakettien välillä:&lt;br /&gt;
*&amp;lt;tt&amp;gt;Recommends&amp;lt;/tt&amp;gt;: Suositeltavat paketit. Yleensä paketteja, joita käytetään käytännössä aina tämän paketin kanssa. Esim. [[aptitude]] asentaa nämä automaattisesti, apt vain suosittelee.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Suggests&amp;lt;/tt&amp;gt;: Muita tämän paketin kanssa hyviä paketteja. Monet apt:n edustaohjelmat (kuten aptitude) näyttävät tämän listan, apt ei.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Pre-Depends&amp;lt;/tt&amp;gt;: Vahvempi kuin Depends. Vaatii, että paketit on asennettu ja otettu käyttöön ennen kuin suostuu asentamaan tämän paketin. Käytetään erittäin harvoin.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Conflicts&amp;lt;/tt&amp;gt;: Paketit, joiden kanssa samaan järjestelmään tätä pakettia ei voida asentaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Provides&amp;lt;/tt&amp;gt;: Mitkä virtuaaliset paketit tämä paketti toteuttaa.&lt;br /&gt;
*&amp;lt;tt&amp;gt;Replaces&amp;lt;/tt&amp;gt;: Paketit, jotka tämä paketti korvaa.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi pakettimme nyt vaatisi paketin &#039;&#039;foo&#039;&#039; version 2.3 tai uudemman, paketti &#039;&#039;bar&#039;&#039; olisi myös kiva sen kanssa, ja pakettimme ei toimisi yhdessä &#039;&#039;libfoo&#039;&#039;:n kanssa, voisimme lisätä seuraavat rivit:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}, foo (&amp;gt;=2.3)&lt;br /&gt;
Recommends: bar&lt;br /&gt;
Conflicts: libfoo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vastaavasti on mahdollista asettaa myös lähdekoodipaketille &#039;&#039;Build-Conflicts&#039;&#039; ja muut vastaavat suhteet.&lt;br /&gt;
&lt;br /&gt;
=== copyright ===&lt;br /&gt;
Paketin tekijänoikeuksista kerrotaan tiedostossa &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;. Tämän tiedoston muoto on periaatteessa vapaa, mutta kannattaa seurata [https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Machine-readable debian/copyright file] -standardia. Hyvän tiedoston saa muokkaamalla dh_maken luomaa. Tässä tiedostosta tulee käydä ilmi paketin luoja, alkuperäinen tekijä ja ohjelman tekijänoikeustiedot (esim. GPL-lisenssin alainen).&lt;br /&gt;
&lt;br /&gt;
=== changelog ===&lt;br /&gt;
dh_make luo seuraavanlaisen pohjan &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostolle: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 hello (2.10-1) unstable; urgency=medium&lt;br /&gt;
2&lt;br /&gt;
3   * Initial release (Closes: #nnnn)  &amp;lt;nnnn is the bug number of your ITP&amp;gt;&lt;br /&gt;
3&lt;br /&gt;
4  -- Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;  Fri, 29 Jul 2016 11:42:23 +0300&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rivillä 1 on aluksi lähdekoodipaketin nimi (hello) ja versionumero (2.10-1). Seuraavana on jakelun nimi, johon paketti kuuluu (Debianilla on stable, testing ja unstable -jakelut). Yleensä uudet paketit ja päivitykset vanhoihin paketteihin lisätään ensin kehitysversioon, joka Debianilla on unstable. Viimeisenä on tieto paketin kiireellisyydestä (&#039;&#039;urgency&#039;&#039;), yleensä &amp;quot;medium&amp;quot; on sille oikea arvo.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen seuraavilla riveillä on itse muutosloki (engl. &#039;&#039;changelog&#039;&#039;). Rivin alussa on kaksi välilyöntiä ja tähti (*). Viimeisenä (rivillä 4) on tieto paketin tekijästä ja tekoajankohdasta (esimerkin mukaisessa muodossa). Tämän rivin alussa on yksi välilyönti.&lt;br /&gt;
&lt;br /&gt;
Yleensä paketteihin tehdyt muutokset korjaavat joitain vianhallintajärjestelmään ilmoitettuja vikoja (bugeja). Jos paketti korjaa jonkin ilmoitetun vian, se ilmoitetaan muutoslokissa. Jos paketti esimerkiksi korjaa Debianin vianseurantajärjestelmän bugin numero 123456, tulee muutoslokissa esiintyä merkkijono &amp;lt;tt&amp;gt;Closes: #123456&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Muutoslokia pystyy muokkaamaan joko muokkaamalla tekstitiedostoa suoraan tai käyttämällä [[dch]]-komentoa (tai sen pidempää muotoa, komentoa &amp;lt;tt&amp;gt;debchange&amp;lt;/tt&amp;gt;). Sopivan pohjan uudelle muutokselle saa luotua komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Tämä avaa muutoslokin &amp;lt;tt&amp;gt;EDITOR&amp;lt;/tt&amp;gt;-[[ympäristömuuttuja]]ssa asetettuun tekstieditoriin. Muutoksen tekijän nimi haetaan ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBFULLNAME&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;NAME&amp;lt;/tt&amp;gt; ja sähköpostiosoite ympäristömuuttujasta &amp;lt;tt&amp;gt;DEBEMAIL&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;EMAIL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== rules ===&lt;br /&gt;
Tiedosto &amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt; on [[Makefile]]n tapainen tiedosto, jonka perusteella varsinainen paketti luodaan. Tämän tiedoston perusteella ohjelma käännetään ja asennetaan hakemistoon &amp;lt;tt&amp;gt;debian/paketin_nimi&amp;lt;/tt&amp;gt;, tässä tapauksessa &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;. Tähän hakemistoon asentuvien tiedostojen perusteella luodaan varsinainen paketti.&lt;br /&gt;
&lt;br /&gt;
Koska Hello käyttää autoconfia, osaa paketin luova työkalu tehdä tarvittavat asetukset itse, eikä meidän periaatteessa tarvitse edes koskea &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostoon. Katsotaan nyt kuitenkin sitä malliksi, sillä vähänkin monimutkaisempien pakettien kohdalla sitä on muokattava. Dh_maken luoma malli on seuraava: (rivinumerot lisätty)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/make -f&lt;br /&gt;
# See debhelper(7) (uncomment to enable)&lt;br /&gt;
# output every command that modifies files on the build system.&lt;br /&gt;
#export DH_VERBOSE = 1&lt;br /&gt;
&lt;br /&gt;
# see FEATURE AREAS in dpkg-buildflags(1)&lt;br /&gt;
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all&lt;br /&gt;
&lt;br /&gt;
# see ENVIRONMENT in dpkg-buildflags(1)&lt;br /&gt;
# package maintainers to append CFLAGS&lt;br /&gt;
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic&lt;br /&gt;
# package maintainers to append LDFLAGS&lt;br /&gt;
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed&lt;br /&gt;
&lt;br /&gt;
%:&lt;br /&gt;
	dh $@ --with autotools_dev&lt;br /&gt;
&lt;br /&gt;
# dh_make generated override targets&lt;br /&gt;
# This is example for Cmake (See https://bugs.debian.org/641051 )&lt;br /&gt;
#override_dh_auto_configure:&lt;br /&gt;
#	dh_auto_configure -- #	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suurin osa tiedoston sisällöstä on #-merkillä alkavia kommentteja, poikkeuksena kuitenkin ensimmäinen rivi...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tiedoston alussa annetaan käännösoptiot, esimerkiksi [[gcc|C-kääntäjän]] käännösparametrit laitetaan muuttujaan CFLAGS. Tämä tehdään riveillä 19-25.&lt;br /&gt;
&lt;br /&gt;
Riveillä 27-31 ajetaan paketin &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;-skripti. Koska Hello käyttää autoconfia ja siten &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;-skriptiä, voimme välittää tässä vaiheessa tarvittavat parametrit. Saatat ihmetellä, miksi tässä annetaan parametrit &amp;lt;tt&amp;gt;--prefix=/usr&amp;lt;/tt&amp;gt;, vaikka juuri todettiin, että ohjelma on asennettava &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;-alihakemistoon. Rivillä 69, kun ajetaan paketin asennuskomento, kuitenkin asetetaan kohdehakemistoksi &amp;lt;tt&amp;gt;debian/hello&amp;lt;/tt&amp;gt;, jolloin paketti asentuu polkuun &amp;lt;tt&amp;gt;debian/hello/usr&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos tiedoston syntaksi on epäselvä, katso artikkeli [[Makefile]]. Paketti asennetaan monessa vaiheessa, aluksi riviltä 27 lähtien ajetaan &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;-skripti &amp;lt;tt&amp;gt;config.status&amp;lt;/tt&amp;gt;-osiossa. Tämän jälkeen ohjelma käännetään &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;-osiossa riviltä 34 eteenpäin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;build-indep&amp;lt;/tt&amp;gt;-osiossa käännetään tai luodaan alustariippumattomat tiedostot. Hellon tapauksessa niitä ei ole. Riviltä 77 eteenpäin rakennetaan varsinaista alustariippuvaista binääripakettia. &amp;quot;dh_&amp;quot;-alkuiset rivit ovat debhelperin funktiokutsuja, jotka tekevät erilaisia pieniä operaatioita rakentaen pakettia. Mm. seuraavia funktioita on tarjolla:&lt;br /&gt;
{| border=1&lt;br /&gt;
|&#039;&#039;&#039;Komento&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Kuvaus&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testdir&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että ollaan oikeassa hakemistossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_testroot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Tarkistaa, että meillä on pääkäyttäjän oikeudet kun niitä tarvitaan&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_strip&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Ajaa [[strip]]-komennon suoritettaville tiedostoille, jolloin niiden koko pienenee&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_compress&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Pakkaa [[gzip]]illä [[man]]-sivut ja ohjetiedostot, joiden koko ylittää 4kt&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_gencontrol&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Luo binääripaketille &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston ja kopioi sen hakemistoon &amp;lt;tt&amp;gt;debian/hello/DEBIAN&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_md5sums&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Laskee [[md5sum|MD5]]-tarkistussummat paketin tiedostoille&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Jos ohjelma ei asenna kaikkia tarpeellisia tiedostoja oikeisiin hakemistoihin autoconfin avulla (esim. komennolla &amp;lt;tt&amp;gt;make install&amp;lt;/tt&amp;gt;), voi käyttää tätä apufunktiota, jolle kerrotaan asennettavat tiedostot ja hakemistot &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;.install&amp;lt;/tt&amp;gt;-tiedostossa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installchangelog&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa muutoslokin polkuun &amp;lt;tt&amp;gt;/usr/share/doc/package/changelog&amp;lt;/tt&amp;gt;. Jos komennolle annetaan parametrina paketin mukana tulevan muutoslokin tiedostonimi, asennetaan myös se.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_shlibdeps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Määrittää paketin riippuvuuksia binääritiedostoihin linkitettyjen kirjastotiedostojen perusteella&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;dh_installdocs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|Asentaa &amp;lt;tt&amp;gt;debian/docs&amp;lt;/tt&amp;gt;-tiedostossa listatut tiedostot ja mm. &amp;lt;tt&amp;gt;debian/README.debian&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;debian/copyright&amp;lt;/tt&amp;gt;-tiedostot polkuun &amp;lt;tt&amp;gt;/usr/share/doc/paketti&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jos paketti ei käytä autoconfia, on &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt; muokattava sellaiseksi, että ohjelma kääntyy ja asentuu polkuun &amp;lt;tt&amp;gt;debian/&#039;&#039;paketinnimi&#039;&#039;&amp;lt;/tt&amp;gt;. Se, miten kääntäminen tapahtuu, riippuu ohjelmasta. Funktion &amp;lt;tt&amp;gt;dh_install&amp;lt;/tt&amp;gt; avulla asennetaan tiedostot oikeisiin hakemistoihin lopullisessa binaaripaketissa.&lt;br /&gt;
&lt;br /&gt;
=== compat ===&lt;br /&gt;
Tässä tiedostossa ilmoitamme, mitä versiota debhelperistä käytämme.&lt;br /&gt;
&lt;br /&gt;
=== source/format ===&lt;br /&gt;
Tätä tiedostoa ei tarvitse muuttaa. Sen sisältö on:&lt;br /&gt;
 3.0 (quilt)&lt;br /&gt;
Quilt viittaa [[#Patchit|patchien hallintaan]] käyttämäämme ohjelmaan. 3.0:n merkityksestä voi lukea tarkemmin Debian Wikin artikkelista [https://wiki.debian.org/Projects/DebSrc3.0 DebSrc3.0].&lt;br /&gt;
&lt;br /&gt;
=== .ex-päätteiset tiedostot ===&lt;br /&gt;
&amp;lt;tt&amp;gt;dh_make&amp;lt;/tt&amp;gt; luo &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistoon monia .ex-päätteisiä tiedostoja. Näitä tiedostoja muokkaamalla on mahdollista esimerkiksi saada paketti lisäämään tehtäviä [[cron]]ille ja kuvakkeen työpöytäympäristön valikkoon.&lt;br /&gt;
&lt;br /&gt;
Oletuksena .ex-päätteisiä tiedostoja ei huomioida. Jos haluat käyttää niitä, muokkaa tiedosto ensin sopivaksi ja poista tiedostonimestä tämän jälkeen .ex-pääte. Lisäksi tarkista, että sopivaa funktiota kutsutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa.&lt;br /&gt;
&lt;br /&gt;
Poista ne .ex-tiedostot, joita et tarvitse. Hellon tapauksessa emme tarvitse näitä. Seuraavassa esitellään kuitenkin muutamia yleisimmin käytettyjä tiedostoja joita luultavasti tulet joskus tarvitsemaan:&lt;br /&gt;
&lt;br /&gt;
==== cron.d ====&lt;br /&gt;
Tiedostoon &amp;lt;tt&amp;gt;cron.d&amp;lt;/tt&amp;gt; kirjoitetaan rivit, jotka halutaan lisätä &amp;lt;tt&amp;gt;cron&amp;lt;/tt&amp;gt;-järjestelmään. Rivit kirjoitetaan samassa muodossa kuin missä cronille annetaan suoritettavia tehtäviä. Katso lisätietoja artikkelista [[cron]].&lt;br /&gt;
&lt;br /&gt;
==== init.d ====&lt;br /&gt;
[[init]]-skripti, joka asennetaan polkuun &amp;lt;tt&amp;gt;/etc/init.d&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedoston komennolla &amp;lt;tt&amp;gt;dh_installinit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== manpage.1 ====&lt;br /&gt;
Ohjelman [[man]]-sivu. Pisteen jälkeen oleva numero kertoo, mihin kategoriaan man-sivu asennetaan (kategoriat on listattu artikkelissa [[man]]). Man-sivu asennetaan paikoilleen &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa olevalla komennolla &amp;lt;tt&amp;gt;dh_installman debian/mansivu.1&amp;lt;/tt&amp;gt;. Tiedoston nimi on yleensä muotoa &amp;lt;tt&amp;gt;paketinnimi.numero&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== watch ====&lt;br /&gt;
Kertoo &amp;lt;tt&amp;gt;uscan&amp;lt;/tt&amp;gt;-ohjelmalle, miten paketin uudet versiot voi ladata internetistä. Lisätietoja tiedostomuodosta: &amp;lt;code&amp;gt;man 1 uscan&amp;lt;/code&amp;gt; ja [https://wiki.debian.org/debian/watch Debian Wiki]. Watch-tiedosto mahdollistaa lähdekoodipaketin helpon päivittämisen aina uusimpaan versioon.&lt;br /&gt;
&lt;br /&gt;
[[GNU]]:n projekteille, jollainen Hellokin on, toimii seuraavanlainen watch-tiedosto:&lt;br /&gt;
 version=4&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://ftp.gnu.org/gnu/@PACKAGE@/&amp;lt;/nowiki&amp;gt; \&lt;br /&gt;
    @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate&lt;br /&gt;
&lt;br /&gt;
== Tehdään paketti! ==&lt;br /&gt;
Nyt kun tarvittavat tiedostot on lopulta muokattu sopiviksi, on aika luoda varsinainen paketti. Siirry ohjelman päähakemistoon (&amp;lt;tt&amp;gt;hello-2.6&amp;lt;/tt&amp;gt;) ja aja komento&lt;br /&gt;
 debuild&lt;br /&gt;
joka tekee seuraavat asiat:&lt;br /&gt;
*Siistii paketin (ajaa [[make]]lla komennon &amp;lt;tt&amp;gt;debian/rules clean&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Kääntää ohjelman (&amp;lt;tt&amp;gt;debian/rules build&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Luo binääripaketin (&amp;lt;tt&amp;gt;debian/rules binary&amp;lt;/tt&amp;gt;)&lt;br /&gt;
*Allekirjoittaa .dsc-tiedoston [[gpg|gnupgllä]]&lt;br /&gt;
*Luo ja allekirjoittaa .changes-tiedoston&lt;br /&gt;
*Käyttää [[fakeroot]]ia, jolloin pääkäyttäjän oikeuksia ei tarvita&lt;br /&gt;
Allekirjoitus vaatii, että olet luonut [[gpg]]:llä itsellesi avaimen. Tällöin sinulta kysytään avaimesi salasanaa.&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen, jos kaikki sujui ilman virheitä, ylähakemistosta pitäisi löytyä seuraavat tiedostot:&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.build&amp;lt;/tt&amp;gt; – kääntämisloki (&#039;&#039;build log&#039;&#039;)&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.changes&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu tiedosto, joka sisältää paketin muutoslokin (&amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;) ja pakettiin liittyvien tiedostojen [[SHA]]1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1_amd64.deb&amp;lt;/tt&amp;gt; – lopullinen deb-paketti!&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.debian.tar.xz&amp;lt;/tt&amp;gt; – &amp;lt;tt&amp;gt;debian-hakemiston&amp;lt;/tt&amp;gt; sisältö [[xz]]-pakattuna tar-arkistona&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10-1.dsc&amp;lt;/tt&amp;gt; – [[gpg]]:llä allekirjoitettu &amp;lt;tt&amp;gt;control&amp;lt;/tt&amp;gt;-tiedoston kaltainen tiedosto, jossa on listattu lähdekooditiedoston ja diff-tiedoston SHA1- ja SHA256-summat&lt;br /&gt;
*&amp;lt;tt&amp;gt;hello_2.10.orig.tar.gz&amp;lt;/tt&amp;gt; – alkuperäinen lähdekoodi&lt;br /&gt;
&lt;br /&gt;
Nyt lopullinen paketti voidaan asentaa [[dpkg]]:llä:&lt;br /&gt;
 dpkg -i hello_2.10-1_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Kun myöhemmin teet muutoksia pakettiin, voit luoda uuden paketin nopeasti komennolla&lt;br /&gt;
 fakeroot debian/rules binary&lt;br /&gt;
joka ei kuitenkaan käännä ohjelmaa alusta lähtien (tärkeää huomata, jos muutat lähdekoodia).&lt;br /&gt;
&lt;br /&gt;
=== Lähdekoodipaketti ===&lt;br /&gt;
Edellä teimme tavallisen ns. &#039;&#039;binääripaketin&#039;&#039;, joka sisältää valmiiksi käännetyn ohjelman. Monesti on tarpeen tehdä myös lähdekoodipaketti, joka sisältää pakettiin ja sen kääntämiseen ja asentamiseen liittyvät tiedot (&amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto) ja ohjelman lähdekoodin. Tällöin paketti on mahdollista kääntää ja asentaa jokaiselle sopivalle alustalle kun taas käännetty &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-paketti toimii vain yhdellä alustalla (esim. amd64, i386 tai armhf).&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketteja käytetään etenkin kun paketti julkaistaan esimerkiksi lisäämällä se jonkin jakelun virallisiin pakettilähteisiin. Tällöin kehittäjä yleensä vain lähettää palvelimelle lähdekoodipaketin, jonka palvelin sitten kääntää useille eri arkkitehtuureille.&lt;br /&gt;
&lt;br /&gt;
Lähdekoodipaketti luodaan ajamalla paketin päähakemistossa komento&lt;br /&gt;
 debuild -S -sa&lt;br /&gt;
Missä valitsin &amp;lt;tt&amp;gt;-S&amp;lt;/tt&amp;gt; tarkoittaa, että luodaan lähdekoodipaketti ja &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt; sisällyttää pakettiin mukaan alkuperäisen lähdekooditiedoston (&amp;lt;tt&amp;gt;.orig.tar.gz&amp;lt;/tt&amp;gt;). Tällöin ylähakemistoon pitäisi ilmestyä samanlaisten tiedostojen kuin luotaessa binääripakettia, paitsi että varsinaista &amp;lt;tt&amp;gt;.deb&amp;lt;/tt&amp;gt;-pakettia ei ilmesty. &lt;br /&gt;
&lt;br /&gt;
Nyt lähdekoodipaketti koostuu näistä tiedostoista (&amp;lt;tt&amp;gt;paketti.dsc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;paketti.orig.tar.gz&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;paketti.debian.tar.xz&amp;lt;/tt&amp;gt;), ja sitä voidaan hallita esimerkiksi &amp;lt;tt&amp;gt;dpkg-source&amp;lt;/tt&amp;gt;-ohjelmalla. Jos esimerkiksi olet saanut jostain lähdekoodipaketin, voit purkaa ja kääntää seuraavasti&lt;br /&gt;
 dpkg-source -x paketti.dsc&lt;br /&gt;
 cd paketti&lt;br /&gt;
 debuild&lt;br /&gt;
&lt;br /&gt;
Ilman &amp;lt;tt&amp;gt;debuildin&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;-sa&amp;lt;/tt&amp;gt;-valitsinta voi luoda paketin, joka ei sisällä alkuperäistä lähdekoodia. Tälle on käyttöä silloin, kun paketteja pidetään ulkopuolisessa pakettivarastossa ja uusi versio voidaan julkaista vain lähettämällä palvelimelle uusi lähdekoodipaketti ilman alkuperäistä lähdekoodia. Tällainen tilanne tulee eteen, kun paketista tehdään uusi versio joka ei muuta itse ohjelman lähdekoodia tai muuttaa sitä erillisellä &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedostolla (eli ohjelman tekijä ei ole julkaissut uutta versiota, mutta paketin tekijä tekee muutoksia joko itse ohjelmaan tai paketointiin).&lt;br /&gt;
&lt;br /&gt;
== Lintian: onnistuiko paketti? ==&lt;br /&gt;
Lintian on ohjelma, joka tarkistaa tekemäsi paketin laadun. Sille annetaan parametrina pakettia luotaessa syntynyt &amp;lt;tt&amp;gt;.changes&amp;lt;/tt&amp;gt;-päätteinen tiedosto. Yleensä kannattaa antaa myös valitsin -i, jolloin lintian kertoo tarkemmin, mikä paketissa on vialla:&lt;br /&gt;
 lintian -i hello_2.10-1_amd64.changes&lt;br /&gt;
Tulosteessa E:-alkavat rivit tarkoittavat virhettä, W:-alkavat varoituksia ja N:-alkavat huomautuksia.&lt;br /&gt;
&lt;br /&gt;
Jos esimerkiksi et poistanut &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemistosta &amp;lt;tt&amp;gt;.ex&amp;lt;/tt&amp;gt;-päätteisiä tiedostoja, lintian varoittaa niistä. Yleensä paketin tulisi olla sellainen, ettei lintian löydä siitä mitään valitettavaa.&lt;br /&gt;
&lt;br /&gt;
== Patchit ==&lt;br /&gt;
Joskus pakettia tehtäessä on tehtävä muutoksia myös itse ohjelman lähdekoodiin. Tällöin on siistiä pitää muutokset erillään [[patch]]-tiedostoissa. Kun binääripaketti sitten tehdään, otetaan patchit käyttöön ennen kääntämistä.&lt;br /&gt;
&lt;br /&gt;
== Muut pakettityypit ==&lt;br /&gt;
===Multi-binary: Monta pakettia yhdestä lähdekoodipaketista ===&lt;br /&gt;
Joskus tulee eteen tilanne, jossa yksi ohjelma on jaettava useampaan eri pakettiin. Tällainen tilanne tulee eteen mm. silloin, kun paketoidaan suurta peliä: yleensä peleissä itse käännetty ohjelma vie murto-osan siitä tilasta, jonka pelin datatiedostot vievät. Jos koko ohjelma laitettaisiin yhteen pakettiin, käytettäisiin turhaan palvelimen levytilaa ja resursseja, kun samat alustariippumattomat datatiedostot kopioitaisiin jokaiselle arkkitehtuurille tehtyyn pakettiin. &lt;br /&gt;
&lt;br /&gt;
Toinen esimerkki tilanteesta, jossa ohjelman jakaminen moneen pakettiin on järkevää on ohjelma, jonka mukana tulee paljon (esimerkiksi jopa kymmeniä megatavuja) dokumentaatiota ja ohjeita.&lt;br /&gt;
&lt;br /&gt;
Debhelper mahdollistaa useampien pakettien luomisen yhdestä lähdekoodipaketista varsin yksinkertaisesti. Ensinnäkin jokaiselle paketille kirjoitetaan oma osio &amp;lt;tt&amp;gt;debian/control&amp;lt;/tt&amp;gt;-tiedostoon. Tiedostoon tulee aluksi normaalisti lähdekoodipaketin tiedot, ja tämän jälkeen luotavien binääripakettien tiedot peräkkäin. Esimerkki:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;debcontrol&amp;quot;&amp;gt;&lt;br /&gt;
Source: hello&lt;br /&gt;
Section: unknown&lt;br /&gt;
Priority: extra&lt;br /&gt;
Maintainer: Paketin Tekijä &amp;lt;foo@bar.com&amp;gt;&lt;br /&gt;
Build-Depends: debhelper (&amp;gt;= 9), autotools-dev&lt;br /&gt;
Standards-Version: 3.9.8&lt;br /&gt;
&lt;br /&gt;
Package: hello&lt;br /&gt;
Architecture: any&lt;br /&gt;
Depends: ${shlibs:Depends}, ${misc:Depends}&lt;br /&gt;
Recommends: hello-doc&lt;br /&gt;
Description: Hello-ohjelma&lt;br /&gt;
 Klassinen hello-ohjelma, joka tulostaa tekstin&lt;br /&gt;
 hello world.&lt;br /&gt;
&lt;br /&gt;
Package: hello-doc&lt;br /&gt;
Architecture: all&lt;br /&gt;
Depends: hello&lt;br /&gt;
Description: Hellon ohjeet&lt;br /&gt;
 Monipuoliset käyttöohjeet hello world -sovelluksen käyttöön.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen muutetaan paketin asentamista (&amp;lt;tt&amp;gt;debian/rules&amp;lt;/tt&amp;gt;) siten, että esimerkiksi pakettiin &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt; kuuluvat tiedostot asennettaisiin hakemistoon &amp;lt;tt&amp;gt;debian/hello/&amp;lt;/tt&amp;gt; ja paketin &amp;lt;tt&amp;gt;hello-doc&amp;lt;/tt&amp;gt;-tiedostot hakemistoon &amp;lt;tt&amp;gt;debian/hello-doc&amp;lt;/tt&amp;gt;. Näihin hakemistoihin tiedostot asennetaan kuten normaalisti luotaessa vain yhtä pakettia, eli esimerkiksi ajettavat ohjelmat voitaisiin sijoittaa polkuun &amp;lt;tt&amp;gt;debian/hello/usr/bin/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tällaisessa tilanteessa ei yleensä ole järkevää käyttää &amp;lt;tt&amp;gt;dirs&amp;lt;/tt&amp;gt;-tiedostoa luomaan samat hakemistot molempiin paketteihin, koska luultavasti samoihin hakemistoihin ei sijoiteta tiedostoja eri paketeissa. Sen sijaan voidaan käyttää pakettikohtaisia tiedostoja, esimerkiksi &amp;lt;tt&amp;gt;hello.dirs&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;hello-doc.dirs&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Jos jokin Debhelperin komento (muotoa &amp;lt;tt&amp;gt;dh_jotain&amp;lt;/tt&amp;gt;) halutaan &amp;lt;tt&amp;gt;rules&amp;lt;/tt&amp;gt;-tiedostossa ajaa vain tietylle paketille, voidaan käyttää valitsinta &amp;lt;tt&amp;gt;--package&amp;lt;/tt&amp;gt;, esimerkiksi komennolla&lt;br /&gt;
 dh_installinfo --package=hello&lt;br /&gt;
asennettaisiin [[info]]-tiedostot vain &amp;lt;tt&amp;gt;hello&amp;lt;/tt&amp;gt;-pakettia luotaessa.&lt;br /&gt;
&lt;br /&gt;
== Pbuilder ==&lt;br /&gt;
Pbuilder on järjestelmä, joka kääntää ja rakentaa paketit omassa pienessä [[chroot]]-järjestelmässä. Pbuilderia käytettäessä saavutetaan mm. seuraavat edut:&lt;br /&gt;
#Käännösaikaiset riippuvuudet (&#039;&#039;build-depends&#039;&#039;) asennetaan automaattisesti&lt;br /&gt;
#Paketti käännetään puhtaassa ja mahdollisimman yksinkertaisessa ympäristössä, johon ei ole asennettu mitään ylimääräistä. Näin varmistetaan, että paketin kääntäminen onnistuu kaikissa järjestelmissä ja että käännösaikaiset riippuvuudet ovat riittävät.&lt;br /&gt;
#Paketin voi kääntää eri jakeluille ja jopa eri arkkitehtuurille&lt;br /&gt;
&lt;br /&gt;
Lisätietoja Pbuilderin käytöstä löytyy artikkelista [[Pbuilder]]&lt;br /&gt;
&lt;br /&gt;
== Paketin päivittäminen ja muokkaaminen ==&lt;br /&gt;
Edellä käsiteltiin uuden paketin tekemistä. Monesti eteen tulee kuitenkin myös tilanteita, joissa jo olemassa olevaa pakettia tulee muuttaa tai päivittää. Päivittämiselle tulee tarve kun paketoidusta ohjelmasta julkaistaan uusi versio tai vaikkapa silloin, kun ohjelmassa oleva ohjelmavirhe (bugi) korjataan &#039;&#039;patch&#039;&#039;-tiedostolla.&lt;br /&gt;
&lt;br /&gt;
Muokkauksen tekeminen alkaa hakemalla lähdekoodipaketti. Tämä onnistuu kätevästi komennolla &amp;lt;tt&amp;gt;[[apt-get]] source paketti&amp;lt;/tt&amp;gt;. Tällöin &amp;lt;tt&amp;gt;apt&amp;lt;/tt&amp;gt; hakee nykyiseen hakemistoon paketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedoston, muutokset sisältävän &amp;lt;tt&amp;gt;.diff.gz&amp;lt;/tt&amp;gt;-tiedoston ja alkuperäisen ohjelman sisältävän &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt;-paketin. Lisäksi hakemistoon syntyy &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt;-hakemisto, jonka sisältä löytyy sekä itse ohjelma että siihen tehdyt muutokset (mm. &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;)-hakemisto.&lt;br /&gt;
&lt;br /&gt;
Jos nyt halutaan esimerkiksi korjata ohjelmassa oleva bugi, voidaan edellä neuvotulla tavalla lisätä pakettiin uusi &amp;lt;tt&amp;gt;patch&amp;lt;/tt&amp;gt;-tiedosto. Tämän lisäksi on aina muistettava kirjata tiedot muutoksesta &amp;lt;tt&amp;gt;debian/changelog&amp;lt;/tt&amp;gt;-tiedostoon. Tämä onnistuu helpoiten komennolla &amp;lt;tt&amp;gt;dch -i&amp;lt;/tt&amp;gt;. Muutoslokin on tarkoitus tarkkaan kertoa, mitä muutoksia on tehty. Yleensä muutos korjaa jonkun vianhallintajärjestelmässä olevan ilmoitetun bugin, jolloin muutoslokissa mainitaan tämän bugin numero (Debianin vianseurantajärjestelmän kanssa käytetään syntaksia &amp;lt;tt&amp;gt;Closes: #numero&amp;lt;/tt&amp;gt; ja Ubuntun Launchpad-järjestelmässä ilmoitettujen bugien kanssa syntaksia LP: #numero).&lt;br /&gt;
&lt;br /&gt;
Jos paketoidusta ohjelmasta on ilmestynyt uusi versio, täytyy toimia hieman eri tavalla. Ensimmäinen tehtävä on ladata uuden ohjelman lähdekoodipaketti ja tutustua uuden version mukana tuomiin muutoksiin (&amp;lt;tt&amp;gt;NEWS&amp;lt;/tt&amp;gt;- tai &amp;lt;tt&amp;gt;CHANGELOG&amp;lt;/tt&amp;gt;-tiedosto). Tämän jälkeen puretaan paketti tiedostoon &amp;lt;tt&amp;gt;ohjelmannimi-versio&amp;lt;/tt&amp;gt; ja uudelleennimetään lähdekoodipakettitiedosto nimelle &amp;lt;tt&amp;gt;ohjelman_versio.orig.tar.gz&amp;lt;/tt&amp;gt;. Eli aivan kuin olisimme paketoimassa uutta ohjelmaa. &lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen voidaan kopioida vanha &#039;&#039;debianisointi&#039;&#039; eli &amp;lt;tt&amp;gt;debian&amp;lt;/tt&amp;gt;-hakemisto vanhasta paketista uuteen pakettiin. Helpoimmissa tapauksissa tämä riittää, mutta etenkin käytettävien patchien toimiminen ja tarpeellisuus uuden version kanssa on todella tärkeä selvittää. Lisäksi ohjelman kääntäminen ja asentaminen saattaa uuden version kanssa tapahtua eri tavalla. Tällaisessa tapauksessa muutoslokiin kirjataan maininta uudesta versiosta (&amp;quot;New upstream release&amp;quot;) ja kerrotaan myös, mitä muita muutoksia pakettiin tehtiin (esimerkiksi jätettiin pois tarpeettomaksi käynyt patchi.&lt;br /&gt;
&lt;br /&gt;
Uuden version numero riippuu siitä, paketoitiinko uusi versio vai korjattiinko vain vanhassa versiossa oleva ongelma. Jos itse ohjelman versio ei muuttunut, kasvatetaan paketin &amp;quot;revision&amp;quot;-numeroa yhdellä, esimerkiksi versio &amp;quot;0.4.1-2&amp;quot; muuttuisi versioksi &amp;quot;0.4.1-3&amp;quot;. Jos taas ohjelman versio muuttui, asetetaan paketin versioksi uuden version numero ja &amp;quot;revisioniksi&amp;quot; asetetaan 1: &amp;quot;0.4.1-2&amp;quot; -&amp;gt; &amp;quot;0.4.2-1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Näiden toimenpiteiden jälkeen voidaan paketti luoda kuten normaalistikin &amp;lt;tt&amp;gt;debuild&amp;lt;/tt&amp;gt;- ja &amp;lt;tt&amp;gt;pdebuild&amp;lt;/tt&amp;gt;-komennoilla.&lt;br /&gt;
&lt;br /&gt;
===Debdiff===&lt;br /&gt;
Debdiff on [[diff]]in kaltainen ohjelma, joka vertailee kahta deb-pakettia. Sitä käytetään mm. silloin, kun lähetetään itse tehty korjaus ohjelman alkuperäiselle paketoijalle tai vianseurantajärjestelmään. Yleensä näin toimitaan silloin, kun muutoksen tekijällä ei ole oikeutta lähettää korjauksiaan suoraan virallisiin pakettivarastoihin.&lt;br /&gt;
&lt;br /&gt;
Debdiffille annetaan kahden lähdekoodipaketin &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt;-tiedostot:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc&lt;br /&gt;
Jolloin ohjelma tulostaa erot ruudulle. Yleensä erot kannattaa [[Komentorivin perusteet#putkitus|putkittaa]] tiedostoon:&lt;br /&gt;
 debdiff vanha.dsc uusi.dsc &amp;gt; erot.debdiff&lt;br /&gt;
&lt;br /&gt;
== Pakettini on valmis, miten saan sen jakeluni pakettilähteisiin ==&lt;br /&gt;
Paketin saaminen jakelun virallisiin pakettilähteisiin on jakelun käytännöistä riippuen enemmän tai vähemmän työläs prosessi, johtuen muun muassa laadunvarmistuksesta. Teknisellä tasolla paketit viedään jakeluihin [[dput]]- tai [[dupload]]-työkaluilla. Katso lisää näiden työkalujen käytöstä näiden omilta sivuilta.&lt;br /&gt;
&lt;br /&gt;
Debianilla on käytössä [http://mentors.debian.net mentors.debian.net]-palvelu, jonne kaikki voivat lähettää omia pakettejaan tarjolle lähdekoodimuodossa. Tämän jälkeen paketille hankitaan/pyydetään halukas &amp;quot;sponsori&amp;quot;, joka on kokenut Debian-kehittäjä jolla on oikeudet lisätä paketteja virallisiin pakettilähteisiin. Sponsoreita haetaan yleensä lähettämällä viesti &amp;lt;tt&amp;gt;debian-mentors&amp;lt;/tt&amp;gt;-sähköpostilistalle sivustolta löytyvien ohjeiden mukaan. Tämän jälkeen joku paketista kiinnostunut kehittäjä tarkistaa sen ja antaa yleensä korjausehdotuksia. Kun paketti on hänen mielestään riittävän laadukas, hän lisää sen pakettilähteisiin. Prosessi voi paketin laadusta ja sponsoroijasta riippuen kestää pitkäänkin, ja vapaaehtoisuuteen perustamalla saattaa vaatia omaa aktiivisuutta ja kohteliasta ajoittaista tiediustelua.&lt;br /&gt;
&lt;br /&gt;
Virallisten pakettilähteiden lisäksi voit myös ylläpitää omaa. Paketteja voi myös jakaa helposti esimerkiksi [[Launchpad | Launchpadin]] tarjoaman [[PPA]]-ominaisuuden avulla. PPA automatisoi paketin kääntämistä ja julkaisua. Halutessasi voit myös vain yksinkertaisesti jakaa tekemääsi deb-tiedostoa millä tahansa tiedostonjakotekniikalla.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://www.debian.org/doc/maint-guide/index.en.html#contents Debian New Maintainers&#039; Guide]&lt;br /&gt;
*[http://www.debian.org/doc/debian-policy/ Debian policy] - Debianin käytäntöjä ja sääntöjä&lt;br /&gt;
*Ubuntun [https://wiki.ubuntu.com/PackagingGuide PackagingGuide]-opas&lt;br /&gt;
*[http://wiki.ubuntu.com/PackagingGuide Packaging guide - Ubuntu Wiki]&lt;br /&gt;
*[http://www.debian-administration.org/articles/286 Setting up your own APT reposity]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Paketinhallinta]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Digabi&amp;diff=46926</id>
		<title>Digabi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Digabi&amp;diff=46926"/>
		<updated>2016-08-14T19:47:23Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jakelu&lt;br /&gt;
| nimi=Digabi&lt;br /&gt;
| logo=&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| julkaisija=Ylioppilastutkintolautakunta&lt;br /&gt;
| viimeisin versio=ABITTI15123 (opiskelijan tikku)&lt;br /&gt;
| päivämäärä=17.3.2015&lt;br /&gt;
| julkaisusykli=&lt;br /&gt;
| elinkaari=&lt;br /&gt;
| pakettienhallinta=[[dpkg]], [[APT]]&lt;br /&gt;
| tila=toiminnassa&lt;br /&gt;
| arkkitehtuurit=amd64, i386&lt;br /&gt;
| äitijakelu=[[Debian]]&lt;br /&gt;
| sukulaisjakelut=&lt;br /&gt;
| kotisivu=[https://digabi.fi/ digabi.fi]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digabi&#039;&#039;&#039; on Ylioppilastutkintolautakunnan kehittämä Debianin epävakaaseen &#039;&#039;Jessie&#039;&#039;-versioon perustuva [[live-cd|live]]-jakelu sähköisiä ylioppilaskirjoituksia varten. Koulujen käyttöön Digabista on julkaistu kehitteillä oleva Abitti-koejärjestelmä.&lt;br /&gt;
&lt;br /&gt;
Ennen kokeen alkamista opiskelijat käynnistävät oman tai koulunsa tarjoaman tietokoneen Digabin sisältävältä USB-muistilta tai optiselta levyltä. Kokeen aikana Digabin pitäisi estää pääsy mm. kiintolevyjen sisältöön sekä internetiin.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [https://sourceforge.net/projects/digabi/ sourceforge.net/projects/digabi]&lt;br /&gt;
* [https://github.com/digabi github.com/digabi]&lt;br /&gt;
* [http://www.abitti.fi/ abitti.fi]&lt;br /&gt;
* [http://fi.digabi-tweaks.wikia.com/wiki/Digabi_Tweaks_Wikia fi.digabi-tweaks.wikia.com]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Jakelut]]&lt;br /&gt;
[[Luokka:Linux kouluissa]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Libert%C3%A9_Linux&amp;diff=46925</id>
		<title>Liberté Linux</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Libert%C3%A9_Linux&amp;diff=46925"/>
		<updated>2016-08-14T11:46:50Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: ei toiminnassa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jakelu &lt;br /&gt;
| nimi=Liberté Linux&lt;br /&gt;
| logo=[[Tiedosto:Liberte-logo-600px.png|250px]]&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| julkaisija=&lt;br /&gt;
| viimeisin versio=Liberté Linux 2012.3&lt;br /&gt;
| päivämäärä=1.9.2012&lt;br /&gt;
| julkaisusykli=&lt;br /&gt;
| elinkaari=&lt;br /&gt;
| pakettienhallinta=[[Portage]]&lt;br /&gt;
| tila=ei toiminnassa&lt;br /&gt;
| arkkitehtuurit=i386&lt;br /&gt;
| äitijakelu=[[Gentoo]]&lt;br /&gt;
| sukulaisjakelut=&lt;br /&gt;
| kotisivu=[http://dee.su/liberte dee.su/liberte]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Liberté Linux&#039;&#039;&#039; oli [[Gentoo]] Linuxiin perustuva kevyt [[live-cd|live]]-jakelu, jonka tarkoituksena oli keskittyä yksityisyyteen ja tietoturvaan. Kaikki verkkoliikenne kulki [[Tor]]in kautta ja myös [[I2P]] oli tuettu.&lt;br /&gt;
&lt;br /&gt;
Version 2012.3 jälkeen uusia versioita ei ole julkaistu.&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
* http://distrowatch.com/table.php?distribution=liberte&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Jakelut]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Malline:Ogg&amp;diff=46924</id>
		<title>Malline:Ogg</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Malline:Ogg&amp;diff=46924"/>
		<updated>2016-08-14T11:33:10Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;toccolours&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #e1ddc9; text-align:center&amp;quot; |&#039;&#039;&#039;[[Ogg]]-säiliömuodot&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Ogg Vorbis]] | [[Ogg Opus]] | [[Ogg FLAC]] | [[Ogg Speex]] | [[Ogg Theora]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mallineesta==&lt;br /&gt;
Tämä malline esittelee OGG-säiliömuotoja.&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Lisää artikkelin loppuun: &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{OGG}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Luokka:Mallineet|{{PAGENAME}}]][[Luokka:Artikkelisarjamallineet|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;[[Luokka:Tiedostomuodot]][[Luokka:Multimedia]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=MySQL&amp;diff=46923</id>
		<title>MySQL</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=MySQL&amp;diff=46923"/>
		<updated>2016-08-14T11:30:23Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ohjelma&lt;br /&gt;
| nimi=MySQL&lt;br /&gt;
| kuva=[[Kuva:489px-MySQL.svg.png|180px]]&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=[[GPL]]&lt;br /&gt;
| kehittäjä=Oracle&lt;br /&gt;
| käyttöliittymä=Komentorivi/www/API&lt;br /&gt;
| kotisivu=[http://www.mysql.com www.mysql.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MySQL&#039;&#039;&#039; on maailman suosituin [[Avoin lähdekoodi|avoimen lähdekoodin]] [[wikipedia:fi:SQL|SQL]]-kieltä käyttävä relaatio[[wikipedia:fi:Tietokanta|tietokantaohjelmisto]]. Sen kehityksestä vastaa nykyään Oracle, joka tarjoaa MySQL:ää ja viralliset tukipalvelut myös yrityksille kaupalliseen käyttöön [[wikipedia:fi:Omisteinen ohjelmisto|suljetulla lisenssillä]] MySQL Enterprise Edition -nimisenä. MySQL on ohjelmoitu [[C]]- ja [[C++]]-kielillä ja se sisältää [[wikipedia:fi:Ohjelmointirajapinta|rajapinnan]] useimmille nykyään käytetäville ohjelmointikielille.&lt;br /&gt;
&lt;br /&gt;
MySQL asennetaan osana avoimen lähdekoodin niin sanottua [[LAMP]]-palvelinpakettia. [[GPL]]-lisenssillä vapaasti saatava MySQL-ohjelmisto on viralliselta nimitykseltään Community Server.&lt;br /&gt;
&lt;br /&gt;
==Asennus==&lt;br /&gt;
{{Asenna|MySQL|mysql-server}}&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
*[[MySQL:n käyttöönotto]]&lt;br /&gt;
*[[MySQL-tietokannan varmuuskopiointi ja palautus]]&lt;br /&gt;
*[[PostgreSQL]]&lt;br /&gt;
*[[Sqlite]]&lt;br /&gt;
*[[MariaDB]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://www.mysql.com/ MySQL:n kotisivu]&lt;br /&gt;
*[[wikipedia:fi:MySQL|MySQL Wikipediassa]]&lt;br /&gt;
*[http://www.ohjelmointiputka.net/opas.php?tunnus=mysqlphp01 MySQL ja PHP ohjelmointiputkassa]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Tietokannat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Mobiilivarmenne&amp;diff=46922</id>
		<title>Mobiilivarmenne</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Mobiilivarmenne&amp;diff=46922"/>
		<updated>2016-08-14T11:24:22Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &amp;#039;&amp;#039;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Mobiilivarmenne&#039;&#039;&#039;-hanke on teleoperaattoreiden uusi yritys tuoda [http://fi.wikipedia.org/wiki/X.509 x.509] varmenteet matkaviestimien [http://fi.wikipedia.org/wiki/Subscriber_Identity_Module SIM-korteille] käytettäväksi matkapuhelimissa, taulutietokoneissa ja miniläppäreissä. Edelliseen hankkeeseen verrattuna jossa kortille lisättiin VRK:n allekirjoittama  [http://fi.wikipedia.org/wiki/HST kansalaisvarmenne], varmenteen tekijänä ja varmentajana toimii nyt teleoperaattori itse. Varmenteen avaimena käytetään yhä samaa VRK:n allokoimaa SATU:a (sähköistä asiointitunnistetta). Täten varmenne pitäisi olla teknisesti yhteensopiva kansalaisvarmenteen kanssa. Muita merkittäviä eroja edelliseen yritykseen nähden on varmenteen hakuprosessin- ja itse varmenteen käsittely ilman virkahenkilöä - kuten poliisia - ja mobiilivarmenteen käytön maksullisuus niin käyttäjälle kuin palvelun tuottajalle.&lt;br /&gt;
&lt;br /&gt;
Varmenteen sisältävä SIM-älykortin lukija voi olla suoraan Linuxilla toimivassa kannettavan laitteen rungossa kuten tietokoneessa, tabletissa, erillisessä ulkoisessa adapterissa tai matkapuhelimessa jonka käyttöjärjestelmänä toimii Linux.&lt;br /&gt;
&lt;br /&gt;
Varmenteiden jako on parhaillaan käynnistymässä ja niiden käyttö Linuxista käsin on vielä epäselvää ja kokeilematta.&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
&lt;br /&gt;
* [[HST]] - Henkilökortin varmenteiden käyttö.&lt;br /&gt;
* [[Linux-matkapuhelimet]]&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
&lt;br /&gt;
* [http://mobiilivarmenne.fi mobiilivarmenne.fi] - Hankkeen kotisivu.&lt;br /&gt;
* [http://dna.fi/mobiilivarmenne dna.fi/mobiilivarmenne] - DNA:n varmennesivut.&lt;br /&gt;
* [http://elisa.fi/varmenne/ elisa.fi/varmenne/] - Elisan varmennesivut.&lt;br /&gt;
* [http://www.sonera.fi/id sonera.fi/id] - Soneran varmennesivut.&lt;br /&gt;
* [irc://irc.freenode.net/fineid irc://irc.freenode.net/fineid] - #fineid IRC kanava.&lt;br /&gt;
&lt;br /&gt;
* [http://trousers.sourceforge.net/ trousers.sourceforge.net] - TCG Software Stack implementation.&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Tietoturva]]&lt;br /&gt;
[[Luokka:Suomi]]&lt;br /&gt;
[[Luokka:Matkapuhelimet]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Dash&amp;diff=46921</id>
		<title>Dash</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Dash&amp;diff=46921"/>
		<updated>2016-08-14T11:22:29Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ohjelma&lt;br /&gt;
| nimi=DASH&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=[[BSD-lisenssi]]&lt;br /&gt;
| käyttöliittymä=teksti&lt;br /&gt;
| kotisivu=http://gondor.apana.org.au/~herbert/dash/&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Dash&#039;&#039;&#039; eli &#039;&#039;Debian Almquist shell&#039;&#039; on [[NetBSD]]:n [[ash]]-versiosta [[Debian]]in ashin korvaajaksi kehitetty komentotulkki. Kuten ashia, dashia käytetään lähinnä skriptikielenä keveytensä ja vähäisten ohjelmointikirjastoriippuvuuksiensa vuoksi. [[Busybox]] sisältää dashista haarautetun ash-komentotulkin. Debianissa versiosta 6 ja [[Ubuntu]]ssa versiosta 6.10 lähtien on &amp;lt;tt&amp;gt;/bin/[[sh]]&amp;lt;/tt&amp;gt; ollut [[symbolinen linkki|symlinkattu]] dashiin. Useimmissa muissa jakeluissa &amp;lt;tt&amp;gt;/bin/sh&amp;lt;/tt&amp;gt; on [[bash]], mikä erityisesti siirtymävaiheessa häiritsi lukuisten &amp;lt;tt&amp;gt;/bin/sh&amp;lt;/tt&amp;gt;:ta kutsuvien skriptien toimintaa, sillä ne käyttivätkin bashin laajennuksia.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://gondor.apana.org.au/~herbert/dash/ Kotisivu]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentotulkit]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Red_Star_OS&amp;diff=46920</id>
		<title>Red Star OS</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Red_Star_OS&amp;diff=46920"/>
		<updated>2016-08-14T11:00:12Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: yhdyssanoja, wikipedia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jakelu&lt;br /&gt;
| nimi=Red Star OS&lt;br /&gt;
| logo=&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| julkaisija=Korea Computer Center&lt;br /&gt;
| viimeisin versio=3&lt;br /&gt;
| päivämäärä=&lt;br /&gt;
| julkaisusykli=&lt;br /&gt;
| elinkaari=&lt;br /&gt;
| pakettienhallinta=[[RPM]]&lt;br /&gt;
| tila=toiminnassa&lt;br /&gt;
| arkkitehtuurit=i386&lt;br /&gt;
| äitijakelu=&lt;br /&gt;
| sukulaisjakelut=&lt;br /&gt;
| kotisivu=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Red Star OS&#039;&#039;&#039; on pohjoiskorealainen jakelu. Työpöytäympäristönä on [[KDE]], joka on Red Star OS 3:n myötä muokattu [[Mac OS X|OS X]]:n näköiseksi. Red Star OS on saatavilla vain koreankielisenä, eikä kieltä voi vaihtaa edes asennuksen jälkeen. Ei ole suositeltavaa asentaa jakelua jokapäiväiseen käyttöön, sillä se sisältää todennäköisesti jonkinlaisia vakoiluominaisuuksia.&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
* [[wikipedia:en:Red Star OS|Englanninkielisessä Wikipediassa]]&lt;br /&gt;
* http://www.openingupnorthkorea.com/downloads-2&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Jakelut]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=BSD&amp;diff=46919</id>
		<title>BSD</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=BSD&amp;diff=46919"/>
		<updated>2016-08-14T10:45:55Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{perustietoa}}&lt;br /&gt;
&#039;&#039;Tämä artikkeli käsittelee käyttöjärjestelmää nimeltä BSD. BSD-lisenssistä kerrotaan artikkelissa [[BSD-lisenssi]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BSD&#039;&#039;&#039;, lyhennys sanoista Berkeley Software Distribution, on nimitys eräälle [[Unix|UNIX]]-käyttöjärjestelmäperheelle, jota nykyään edustavat mm. [[FreeBSD]], [[PC-BSD]], [[NetBSD]], [[OpenBSD]] ja [[DragonflyBSD]]. Myös [[OS X]]:ssä ([[wikipedia:fi:Darwin (käyttöjärjestelmä)|Darwin]]) on BSD-koodia.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[[wikipedia:fi:BSD|BSD Wikipediassa]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Käsitteet]]&lt;br /&gt;
[[Luokka:BSD]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=MySQL-tietokannan_varmuuskopiointi_ja_palautus&amp;diff=46911</id>
		<title>MySQL-tietokannan varmuuskopiointi ja palautus</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=MySQL-tietokannan_varmuuskopiointi_ja_palautus&amp;diff=46911"/>
		<updated>2016-08-13T19:09:29Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: lisää oikolukua&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MySQL]]-tietokantojen varmuuskopiointia ja kopioiden palauttamista hallinnoidaan MySQL:n omien asiakasohjelmien kautta. Graafiset käyttöliittymät tulevat toistuvissa rutiineissa raskaiksi käyttää, joten lähes ainoa tapa hoitaa automaattinen varmuuskopiointi on käyttö [[komentorivi]]ltä. Tässä artikkelissa käsitellään &amp;lt;tt&amp;gt;mysqldump&amp;lt;/tt&amp;gt;- ja &amp;lt;tt&amp;gt;mysql&amp;lt;/tt&amp;gt;-asiakasohjelmia. &lt;br /&gt;
&lt;br /&gt;
== Mysqldump-asiakasohjelma ==&lt;br /&gt;
&lt;br /&gt;
Mysqldump on komentoriviltä kutsuttava asiakasohjelma, joka tulostaa määritellyt tietokannat haluttuun tiedostoon SQL-syntaksissa. Mysqldump ei käsittele dataa binäärimuodossa, kuten datatiedostoina, vaan selväkielisenä syötteenä. Mysqldump mahdollistaa myös syötteen lukemisen ja jopa sen muokkaamisen ennen tallennusta. &lt;br /&gt;
&lt;br /&gt;
Mysqldump ohjelmaa ei ole tarkoitettu valtavan määrän dataa sisältävien tietokantojen varmuuskopiointiin. Suuret datamäärät voivat varmuuskopiota tehdessä vielä tapahtua siedettävässä ajassa, mutta niiden palauttaminen voi viedä aikaa ja palvelimen suorituskykyä johtuen yksittäisistä SQL-komennoista, palvelimen levylle tallentamisesta ja indeksien luomisesta. Tuotantoympäristöön tarkoitetulla mysqlbackup-asiakasohjelmalla (maksullisen Enterprise-version mukana) kyetään kopioimaan tehokkaasti suuriakin määriä dataa kuitenkaan rajoittamatta tietokannan antamia palveluita.&lt;br /&gt;
&lt;br /&gt;
=== Syntaksi ===&lt;br /&gt;
&lt;br /&gt;
Mysqldumpin syntaksi on lyhyesti seuraava:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump [options] db_name [tbl_name ...]&lt;br /&gt;
shell&amp;gt; mysqldump [options] --databases db_name ...&lt;br /&gt;
shell&amp;gt; mysqldump [options] --all-databases&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Käyttäjätiedot ====&lt;br /&gt;
&lt;br /&gt;
Otettaessa yhteyttä MySQL-palvelimeen on muistettava antaa tarvittavat käyttäjäoptiot (muista esimerkeistä jätetty tarkoituksella pois):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump -u root -psalasana db_nimi [taulu_nimi...]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos lyhyet optiotunnukset eivät toimi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--user=user_name&lt;br /&gt;
--password[=password]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tiedostoon tallentaminen ====&lt;br /&gt;
&lt;br /&gt;
Varsinainen tiedostoon tallennus on hyvin yksinkertaista, varsinkin jos syötteen ohjaaminen on tuttua entuudestaan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt;mysqldump [optiot] db_nimi [taulut] &amp;gt; tallennettavan-tiedoston-nimi.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mysql-asiakasohjelma ==&lt;br /&gt;
&lt;br /&gt;
SQL-syntaksia noudattavien varmuuskopiotiedostojen palauttaminen tapahtuu mysql-asiakasohjelman kautta.&lt;br /&gt;
&lt;br /&gt;
Esimerkki varmuuskopion palauttamisesta. Huomioi ohjausmerkin suunta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysql tietokanta &amp;lt; kopio.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esimerkkejä ==&lt;br /&gt;
&lt;br /&gt;
Tietokannan db_nimi kopionti tiedostoon nimeltä varmuuskopio.sql:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump db_nimi &amp;gt; varmuuskopio.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samaisen tietokannan palauttaminen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysql db_nimi &amp;lt; varmuuskopio.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toinen toimiva tapa palauttaa varmuuskopio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysql -e &amp;quot;source /hakemisto-polku-tiedostoon/varmuuskopio.sql&amp;quot; db_nimi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mysqldumpia voidaan käyttää tietokannan kopioimiseen toisesta MySQL-palvelimesta toiseen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump --opt db_nimi | mysql --host=etä_palvelin_nimi -C db_nimi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useiden tietokantojen varmuuskopiointi samalla kertaa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump --databases db_nimi1 [db_nimi2 ...] &amp;gt; kaikki_kannat.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaikkien tietokantojen kopionti optiolla --all-databases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump --all-databases &amp;gt; ihan_kaikki_kannat.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
&lt;br /&gt;
*[[MySQL:n käyttöönotto]]&lt;br /&gt;
*[[Putkitus]]&lt;br /&gt;
*[[Komentojen ajastaminen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lähteet ==&lt;br /&gt;
&lt;br /&gt;
# http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html&lt;br /&gt;
# http://dev.mysql.com/doc/mysql-enterprise-backup/3.6/en/index.html&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Varmuuskopiointi]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=MySQL_tietokannan_varmuuskopiointi_ja_palautus&amp;diff=46910</id>
		<title>MySQL tietokannan varmuuskopiointi ja palautus</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=MySQL_tietokannan_varmuuskopiointi_ja_palautus&amp;diff=46910"/>
		<updated>2016-08-13T19:01:41Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun MySQL tietokannan varmuuskopiointi ja palautus uudelle nimelle MySQL-tietokannan varmuuskopiointi ja palautus: yhdyssana&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#OHJAUS [[MySQL-tietokannan varmuuskopiointi ja palautus]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=MySQL-tietokannan_varmuuskopiointi_ja_palautus&amp;diff=46909</id>
		<title>MySQL-tietokannan varmuuskopiointi ja palautus</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=MySQL-tietokannan_varmuuskopiointi_ja_palautus&amp;diff=46909"/>
		<updated>2016-08-13T19:01:40Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun MySQL tietokannan varmuuskopiointi ja palautus uudelle nimelle MySQL-tietokannan varmuuskopiointi ja palautus: yhdyssana&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MySQL&#039;&#039;&#039; tietokantojen varmuuskopiointia ja  kopioiden palauttamista hallinnoidaan sen omien asiakasohjelmien kautta. Graafiset käyttöliittymät muuttuvat toistuvissa rutiineissa raskaiksi käyttää, joten lähes ainoa tapa hoitaa automaattinen varmuuskopiointi on käyttö komentoriviltä. Tässä artikkelissa käsitellään mysqldump- ja mysql-asiakasohjelmia. &lt;br /&gt;
&lt;br /&gt;
== Mysqldump-asiakasohjelma ==&lt;br /&gt;
&lt;br /&gt;
Mysqldump on komentoriviltä kutsuttava asiakasohjelma, joka tulostaa määritellyt tietokannat haluttuun tiedostoon SQL-syntaksissa. Mysqldump ei käsittele dataa binäärimuodossa, kuten datatiedostoina, vaan selväkielisenä syötteenä. Mysqldump mahdollistaa myös syötteen lukemisen ja jopa sen muokkaamisen ennen tallennusta. &lt;br /&gt;
&lt;br /&gt;
Mysqldump ohjelmaa ei ole tarkoitettu valtavan määrän dataa sisältävien tietokantojen varmuuskopiointiin. Suuret datamäärät voivat varmuuskopiota tehdessä vielä tapahtua siedettävässä ajassa, mutta niiden palauttaminen voi viedä aikaa ja palvelimen suorituskykyä johtuen yksittäisistä SQL-komennoista, palvelimen levylle tallentamisesta ja indeksien luomisesta. Tuotantoympäristöön tarkoitettu mysqlbackup-asiakasohjelmalla (maksullisen Enterprise-version mukana) kyetään kopioimaan tehokkaasti suuriakin määriä dataa kuitenkaan rajoittamatta tietokannan antamia palveluita.&lt;br /&gt;
&lt;br /&gt;
=== Syntaksi ===&lt;br /&gt;
&lt;br /&gt;
Mysqldumpin syntaksi on lyhyesti seuraava:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump [options] db_name [tbl_name ...]&lt;br /&gt;
shell&amp;gt; mysqldump [options] --databases db_name ...&lt;br /&gt;
shell&amp;gt; mysqldump [options] --all-databases&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Käyttäjätiedot ====&lt;br /&gt;
&lt;br /&gt;
Otettaessa yhteyttä MySQL-palvelimeen on muistettava antaa tarvittavat käyttäjäoptiot (muista esimerkeistä jätetty tarkoituksella pois):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt;mysqldump -u root -psalasana db_nimi [taulu_nimi...]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jos lyhyet optiotunnukset eivät toimi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--user=user_name&lt;br /&gt;
--password[=password]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tiedostoon tallentaminen ====&lt;br /&gt;
&lt;br /&gt;
Varsinainen tiedostoon tallennus on hyvin yksinkertaista, varsinkin jos syötteen ohjaaminen on tuttua entuudestaan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt;mysqldump [optiot] db_nimi [taulut] &amp;gt; tallennettavan-tiedoston-nimi.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mysql-asiakasohjelma ==&lt;br /&gt;
&lt;br /&gt;
SQL-syntaksia noudattavien varmuuskopiotiedostojen palauttaminen tapahtuu mysql-asiakasohjelman kautta.&lt;br /&gt;
&lt;br /&gt;
Esimerkki varmuuskopion palauttamisesta. Huomioi ohjausmerkin suunta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysql tietokanta &amp;lt; kopio.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Esimerkkejä ==&lt;br /&gt;
&lt;br /&gt;
Tietokannan db_nimi kopionti tiedostoon nimeltä varmuus-kopio.sql:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump db_nimi &amp;gt; varmuus-kopio.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samaisen tietokannan palauttaminen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysql db_nimi &amp;lt; varmuus-kopio.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toinen toimiva tapa palauttaa varmuuskopio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysql -e &amp;quot;source /hakemisto-polku-tiedostoon/varmuus-kopio.sql&amp;quot; db_nimi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mysqldumpia voidaan käyttää tietokannan kopioimiseen toisesta MySQL-palvelimesta toiseen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump --opt db_nimi | mysql --host=etä_palvelin_nimi -C db_nimi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useiden tietokantojen varmuuskopiointi samalla kertaa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump --databases db_nimi1 [db_nimi2 ...] &amp;gt; kaikki_kannat.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kaikkien tietokantojen kopionti optiolla --all-databases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;shell&amp;gt; mysqldump --all-databases &amp;gt; ihan_kaikki_kannat.sql&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
&lt;br /&gt;
*[[MySQL:n_käyttöönotto | MySQL:n käyttöönotto]]&lt;br /&gt;
*[[Putkitus]]&lt;br /&gt;
*[[Komentojen_ajastaminen | Komentojen ajastaminen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lähteet ==&lt;br /&gt;
&lt;br /&gt;
# http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html&lt;br /&gt;
# http://dev.mysql.com/doc/mysql-enterprise-backup/3.6/en/index.html&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Varmuuskopiointi]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=FrankenDebian&amp;diff=46870</id>
		<title>FrankenDebian</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=FrankenDebian&amp;diff=46870"/>
		<updated>2016-08-13T10:46:49Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: wikilinkkejä&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FrankenDebian&#039;&#039;&#039; (&#039;&#039;viittaus [[Wikipedia:fi:Frankensteinin hirviö|Frankensteinin hirviöön]]&#039;&#039;) on [[Debian]]-projektin käyttämä termi, jolla viitataan järjestelmän tilaan, joka syntyy sotkemalla epävakaiden [[pakettivarasto]]jen tai muiden Debianiin pohjautuvien [[jakelu]]pakettien [[paketinhallintajärjestelmä|paketteja]] vakaaseen Debianin versioon. Asennettaessa paketteja epävakaista lähteistä, tuovat ne riippuvuuksina usein mukanaan uudempia versioita kirjastoista tai muista järjestelmän kannalta merkittävistä paketeista, jotka eivät ole välttämättä yhteensopivia muun järjestelmän kanssa.&lt;br /&gt;
&lt;br /&gt;
Myös joitain Debianiin pohjautuvia jakeluita kutsutaan joskus FrankenDebianeiksi.[https://lwn.net/Articles/676664/]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [https://wiki.debian.org/DontBreakDebian Debian Wiki - Don&#039;t break Debian]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Käsitteet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Pencil2D&amp;diff=46869</id>
		<title>Pencil2D</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Pencil2D&amp;diff=46869"/>
		<updated>2016-08-13T10:33:22Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: päivitys&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ohjelma&lt;br /&gt;
| nimi=Pencil2D&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=[[GPL]]v2&lt;br /&gt;
| käyttöliittymä=[[Qt]]&lt;br /&gt;
| kotisivu=[http://www.pencil2d.org/ www.pencil2d.org]&amp;lt;br /&amp;gt;[https://pencil2d.github.io/ pencil2d.github.io]&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;Tämä artikkeli kertoo animaatio- ja piirto-ohjelmasta. [http://pencil.evolus.vn/ Pencil] on myös käyttöliittymien suunnitteluun tarkoitettu ohjelmisto.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pencil2D&#039;&#039;&#039; on 2D-animaatioon ja piirtämiseen tarkoitettu ohjelma Linux-, Windows- ja Mac OS X -käyttöjärjestelmille. Ohjelma antaa luoda perinteisiä käsin piirrettyjä animaatioita käyttäen rasteri- ja vektorigrafiikkaa.&lt;br /&gt;
&lt;br /&gt;
Luodun animaation voi tallentaa PNG-kuvasarjana tai [[Flash]]-tiedostona.&lt;br /&gt;
&lt;br /&gt;
==Asennus==&lt;br /&gt;
&lt;br /&gt;
===Arch Linux===&lt;br /&gt;
Asenna [[AUR]]ista paketti &amp;lt;tt&amp;gt;[https://aur.archlinux.org/packages/pencil2d-git/ pencil2d-git]&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Debian ja Ubuntu===&lt;br /&gt;
{{Asenna|Pencil2d|pencil2d|Debian-pohjaisten}}&lt;br /&gt;
&lt;br /&gt;
===Lähdekoodista asentaminen===&lt;br /&gt;
Pencil2D:n uusimman version [[lähdekoodi]]n voi ladata sen [https://github.com/pencil2d/pencil GitHub-sivulta]. Saatu lähdekoodipaketti täytyy tämän jälkeen [[kääntäminen|kääntää]].&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* [[Animaatiot]]&lt;br /&gt;
* [[Tupi]]&lt;br /&gt;
* [[Synfig]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [http://www.linux.com/feature/131921 Artikkeli Linux.comissa]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Kuvankäsittelyohjelmat]]&lt;br /&gt;
[[Luokka:Flash-editorit]]&lt;br /&gt;
[[Luokka:Animointiohjelmat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Pencil&amp;diff=46868</id>
		<title>Pencil</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Pencil&amp;diff=46868"/>
		<updated>2016-08-13T10:11:13Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Pencil uudelle nimelle Pencil2D: käyttää ilmeisesti Pencil2D:tä nykyään&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#OHJAUS [[Pencil2D]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Pencil2D&amp;diff=46867</id>
		<title>Pencil2D</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Pencil2D&amp;diff=46867"/>
		<updated>2016-08-13T10:11:13Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Pencil uudelle nimelle Pencil2D: käyttää ilmeisesti Pencil2D:tä nykyään&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Pencil&#039;&#039;&#039; on 2D-animaatioon ja piirtämiseen tarkoitettu ohjelma Linux-, Windows- ja Mac OS X -käyttöjärjestelmille. Ohjelma antaa luoda perinteisiä käsin piirrettyjä animaatioita käyttäen rasteri- ja vektorigrafiikkaa. &lt;br /&gt;
&lt;br /&gt;
Luodun animaation voi tallentaa PNG-kuvasarjana tai [[Flash]]-tiedostona.&lt;br /&gt;
&lt;br /&gt;
== Asennus ==&lt;br /&gt;
===Arch Linux===&lt;br /&gt;
[[AUR]]ista löytyy Pencilille [http://aur.archlinux.org/packages.php?do_Details=1&amp;amp;ID=13438 PKGBUILD]. &lt;br /&gt;
&lt;br /&gt;
===Ubuntu===&lt;br /&gt;
Pencilin kotisivuilta löytyy [[Ubuntu]]lle tarkoitettu [[deb]]-paketti: http://sourceforge.net/project/platformdownload.php?group_id=155770&amp;amp;sel_platform=5697&lt;br /&gt;
&lt;br /&gt;
===Lähdekoodista asentaminen===&lt;br /&gt;
Pencilin uusimman version [[lähdekoodi]]n voi ladata sen [http://www.les-stooges.org/pascal/pencil/index.php?id=Download kotisivuilta].&lt;br /&gt;
&lt;br /&gt;
Kehitysversion [[lähdekoodi]]t voi hakea ohjelmiston [[SVN]]-[[versionhallinta|versionhallinnasta]] komennolla&lt;br /&gt;
 svn co https://pencil-planner.svn.sourceforge.net/svnroot/pencil-planner pencil-planner &lt;br /&gt;
Saatu lähdekoodipaketti täytyy tämän jälkeen [[kääntäminen|kääntää]].&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* [[Animaatiot]]&lt;br /&gt;
* [[Tupi]]&lt;br /&gt;
* [[Synfig]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [http://www.les-stooges.org/pascal/pencil/ Ohjelman kotisivu]&lt;br /&gt;
* [http://www.linux.com/feature/131921 Artikkeli Linux.comissa]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Kuvankäsittelyohjelmat]]&lt;br /&gt;
[[Luokka:Flash-editorit]]&lt;br /&gt;
[[Luokka:Animointiohjelmat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Chsh&amp;diff=46822</id>
		<title>Chsh</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Chsh&amp;diff=46822"/>
		<updated>2016-08-11T11:48:58Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;chsh&#039;&#039;&#039;-[[komentorivi]]komennolla vaihdetaan [[käyttäjä]]n oletus[[komentotulkki]]a. &lt;br /&gt;
&lt;br /&gt;
Tavallinen käyttäjä voi vaihtaa oletuskomentotulkikseen vain jonkin [[shells-tiedosto|/etc/shells]]-[[asetustiedosto]]on listatuista komentotulkeista. [[Pääkäyttäjä]] voi määrittää tähän minkä ohjelman tahansa (esimerkiksi /sbin/[[nologin]]).&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Vaihdetaan käyttäjän volodja oletuskomentotulkiksi /bin/[[tcsh]]. Komennon voi ajaa vain pääkäyttäjä tai volodja itse. Mikäli komennon ajaa tavallinen käyttäjä, kysytään ajettaessa käyttäjän [[salasana]]a.&lt;br /&gt;
 chsh -s /bin/tcsh volodja&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[Passwd]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin perustyökalut]]&lt;br /&gt;
[[Luokka:Käyttäjät ja ryhmät]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Opengta&amp;diff=46821</id>
		<title>Opengta</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Opengta&amp;diff=46821"/>
		<updated>2016-08-11T11:47:58Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Opengta uudelle nimelle OpenGTA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#OHJAUS [[OpenGTA]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=OpenGTA&amp;diff=46820</id>
		<title>OpenGTA</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=OpenGTA&amp;diff=46820"/>
		<updated>2016-08-11T11:47:58Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Opengta uudelle nimelle OpenGTA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[kuva:ogta.png|250px|right|thumb|Opengta 2D]]&lt;br /&gt;
[[kuva:ogta-3D.png|250px|right|thumb|Opengta.3D]]&lt;br /&gt;
[[wikipedia:fi:Grand Theft Auto|Grand Theft Auto]] eli GTA, on suosittu Rockstar Gamesin luoma pelisarja, jonka osia on 15. Pelisarja keskittyy lähinnä rikollisuuteen, tavoitteena on suorittaa tehtäviä, mutta pelisarjan kaikki osat sisältävät tehtävien välisen vapaan kiertelyn pelimaailmassa. GTA-pelit käyttivät ensimmäisten joukossa ideaa interaktiivisesta pelimaailmasta, jossa pelaaja voi kierrellä kaupungeissa ja vaikuttaa sen tapahtumiin. &lt;br /&gt;
&lt;br /&gt;
Tällä sivulla seurataan GTA 1- ja GTA 2 -käännöstyötä. Käännökset ovat vielä kehitysvaiheessa.&lt;br /&gt;
&lt;br /&gt;
==Opengta==&lt;br /&gt;
* [http://ogta.fifengine.de/about.html Opengta-kotisivu]&lt;br /&gt;
* [http://picasaweb.google.com/under.northern.sky/OpenGTAScreenshots# kuvakaappauksia]&lt;br /&gt;
&lt;br /&gt;
==Opengta2==&lt;br /&gt;
* [http://brain.wireos.com/?tag=opengta2 OpenGTA2-kotisivu]&lt;br /&gt;
* [http://gta.wikia.com/OpenGTA2 OpenGTA2-wiki]&lt;br /&gt;
===Kehitysversion asentaminen===&lt;br /&gt;
Kehitysversion [[lähdekoodi]]t voi hakea ohjelmiston [[Git]]-[[versionhallinta|versionhallinnasta]] komennolla:&lt;br /&gt;
 git clone https://github.com/u9oqcd4p/OpenGTA2.git&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[Wine/GTA|Wine/Grand Theft Auto]]&lt;br /&gt;
*[[Wine/GTA2|Wine/Grand Theft Auto 2]]&lt;br /&gt;
*[[Wine/Grand Theft Auto - Vice City|Wine/Grand Theft Auto - Vice City]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [http://www.ghanja.be/gta1.htm GTA1-lataussivusto] (julkaistu ilmaisena)&lt;br /&gt;
* [http://www.ghanja.be/gta2.htm GTA2-lataussivusto] (julkaistu ilmaisena)&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Peli-kehitysvaihe]]&lt;br /&gt;
[[Luokka:Portatut pelit]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Watch&amp;diff=46819</id>
		<title>Watch</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Watch&amp;diff=46819"/>
		<updated>2016-08-11T11:46:54Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: displaytitle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
[[Komentorivi]]ohjelmaa &#039;&#039;&#039;watch&#039;&#039;&#039; käytetään tietyn komennon jatkuvaan toistamiseen tietyin väliajoin (oletuksena on 2 sekuntia). Watch näyttää komennon tulosteesta ensimmäisen ruudullisen, ruudun ylimmällä rivillä suoritusajankohdan ja suoritettavan komennon sekä valinnaisesti komennon tulosteiden eroavaisuuskohdat. Komennon suorittamista jatketaan, kunnes ohjelmalle annetaan [[kill|keskeytyssignaali]] ({{Näppäin|Ctrl|C}}).&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Seurataan [[tac]]in avulla väärin päin käännettyä [[dmesg]]in tulostetta. Komento &amp;lt;tt&amp;gt;dmesg|tac&amp;lt;/tt&amp;gt; suoritetaan kahden sekunnin välein:&lt;br /&gt;
 watch &#039;[[dmesg]]|[[tac]]&#039;&lt;br /&gt;
Suoritetaan komento &amp;lt;tt&amp;gt;[[date]]&amp;lt;/tt&amp;gt; sekunnin välein ([[valitsin]] &amp;lt;tt&amp;gt;-n&amp;lt;/tt&amp;gt;) näyttämättä otsikkoriviä (valitsin &amp;lt;tt&amp;gt;--no-title&amp;lt;/tt&amp;gt;):&lt;br /&gt;
 watch -n 1 --no-title date&lt;br /&gt;
[[ping|Pingataan]] linux.fi:n palvelinta kaksi kertaa kolmen sekunnin välein korostaen muuttuneet kohdat (valitsin &amp;lt;tt&amp;gt;-d&amp;lt;/tt&amp;gt;) kumulatiivisesti (&amp;lt;tt&amp;gt;=cumulative&amp;lt;/tt&amp;gt;):&lt;br /&gt;
 watch -n 3 -d=cumulative &amp;quot;ping linux.fi -c 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin perustyökalut]]&lt;br /&gt;
&lt;br /&gt;
[[pl:Watch]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=History&amp;diff=46818</id>
		<title>History</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=History&amp;diff=46818"/>
		<updated>2016-08-11T11:45:01Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
&#039;&#039;&#039;history&#039;&#039;&#039; on komentotulkin sisäänrakennettu komento, jolla voi tarkastella ja muokata komentohistoriaa.&lt;br /&gt;
&lt;br /&gt;
Useimmat [[Komentotulkki|komentotulkit]] tukevat komentohistoriaa, joka mahdollistaa aikaisemmin annettujen komentojen selaamisen ja uudelleensuorittamisen. Perustapa aikaisempien komentojen selaamiseen on ylös- ja alasnäppäimet. Komentohistorian alkuun voi yleensä siirtyä näppäimellä {{Näppäin|Page Up}} ja loppuun näppäimellä {{Näppäin|Page Down}}.&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Tulostaa koko historian&lt;br /&gt;
 history&lt;br /&gt;
Tulostaa viisi viimeistä komentoa&lt;br /&gt;
 history 5&lt;br /&gt;
Tyhjentää komentorivihistorian&lt;br /&gt;
 history -c &lt;br /&gt;
&lt;br /&gt;
Suorita erityinen komento komentorivihistoriasta.&lt;br /&gt;
&lt;br /&gt;
 history | more&lt;br /&gt;
&lt;br /&gt;
Tulostus voi näyttää esimerkiksi tältä.&lt;br /&gt;
 1  service network restart&lt;br /&gt;
 2  exit&lt;br /&gt;
 3  id&lt;br /&gt;
 4  cat /etc/redhat-release&lt;br /&gt;
&lt;br /&gt;
Valitaan historian viimeinen rivi, jonka järjestysnumero on neljä. &lt;br /&gt;
 !4&lt;br /&gt;
Tulostuva rivi on:&lt;br /&gt;
 cat /etc/redhat-release&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* [[Komentorivin perusteet]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [http://www.efytimes.com/e1/creativenews.asp?edid=119846 15 Effective Ways To Use The Linux Command Line History]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin perustyökalut]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Sarjaportti&amp;diff=46817</id>
		<title>Sarjaportti</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Sarjaportti&amp;diff=46817"/>
		<updated>2016-08-11T11:27:51Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: perustietoa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{perustietoa}}&lt;br /&gt;
&#039;&#039;&#039;Sarjaportti&#039;&#039;&#039; on tietokoneen liittymä, jota ennen kaikkea käytettiin tietokoneen kytkemiseen [[modeemi]]n ja puhelinverkon kautta palvelimeen ja mahdollisesti sitä kautta verkkoon. Sarjaporttia käytettiin myös joidenkin kirjoittimien ja hiirien kytkemiseen, tietokoneiden väliseen kommunikointiin ym. Standardi RS-232 otettiin käyttöön 1962 [[pääte|päätteiden]] kytkemiseen.&lt;br /&gt;
&lt;br /&gt;
==Yleistä==&lt;br /&gt;
Uusista tietokoneesta sarjaportti yleensä puuttuu, vaikka liitintämahdollisuus usein löytyykin emokortilta. Perinteisesti sarjaporttia käyttäneet laitteet kytketään nykyään yleensä [[USB]]-porttiin, mutta sarjaportti on yhä käytössä esimerkiksi elektroniikan ohjelmoinnissa ja Internetistä riippumattoman päätteen kytkemiseen palvelinkoneeseen tai reitittimeen. Etu USB-porttiin on ennen kaikkea että sarjayhteys ei vaadi erillistä ohjainta: yksinkertainen elektroninen piiri pystyy muuttamaan datan tavuiksi, joita voi käyttää hyvin yksinkertaisissa ohjelmissa. Yhteyden ohjaussignaaleja voi myös käyttää suoraan, välittämättä datalinjoista.&lt;br /&gt;
&lt;br /&gt;
Sarjaportin liitin on joko 9- tai 25-nastainen D-liitin. Johdossa on yleensä 3, 5, 8 tai 9 johdinta (PC-laitteista jätettiin pois joukko ominaisuuksia): ainakin lähtevä data (TX), tuleva data (RX) ja yhteinen maa (SG), usein myös joukko ohjaussignaaleja, joilla voidaan hetkeksi pysäyttää liikenne (RTS ja CTS), ilmaista että laitteet ovat valmiina (DTR, DSR) ja kertoa modeemin tilasta (RI: puhelin soi ja CD: yhteys muodostunut). Kaapelin pituus voi yleensä olla noin 15 metriä, erikoiskaapelilla jopa satoja metrejä.&lt;br /&gt;
&lt;br /&gt;
Yhteysnopeus vaihtelee riippuen laitteiden kyvyistä (ja puhelinlinjoista). 1980-luvun alussa tyypillinen modeemin yhteysnopeus oli 300&amp;amp;nbsp;bps (merkkiä sekunnissa), 1980-luvun lopulla 2400&amp;amp;nbsp;bps, 1990-luvulla 14400, 33600 tai 56000&amp;amp;nbsp;bps. Suoraan kytketyn päätteen tapauksessa tyypillinen nopeus on 9600 tai 19200&amp;amp;nbsp;bps, tietokoneiden välillä saatetaan käyttää 115200 bps.&lt;br /&gt;
&lt;br /&gt;
PC-laitteissa käytetyn RS-232:n ohella käytetään sulautetuissa laitteissa myös sitä muistuttavia RS-422 (käytössä myös monessa Mac-koneessa), RS-423 ja RS-485.&lt;br /&gt;
&lt;br /&gt;
==Laitetiedostot==&lt;br /&gt;
Sarjaporttien [[laitetiedosto]]jen nimet ovat muodoltaan /dev/ttyS0 tai /dev/tts/0, jossa 0 on numero. Tyypillisesti PC:ssä oli kaksi sisäänrakennettua porttia ja valmius liitää kaksi lisäporttia (ttyS0&amp;amp;ndash;ttyS3, Windowsissa COM1&amp;amp;ndash;COM4). Lisäkorteilla voi saada suuren joukon portteja esimerkiksi modeemipankin rakentamiseen. Myös emo- tai lisäkortilla oleva modeemi näkyy usein sarjaporttina.&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Jos koneen emolevyllä on tuki sarjaportille, varsinaisen liittimen suojalevyineen voi lainata mistä tahansa romutettavasta PC-pöytäkoneesta. Käyttö:&lt;br /&gt;
* [[Sarjaterminaali|Pääte]] tai sarjakonsoli&lt;br /&gt;
* [[Modeemi]], etäpäätteen kytkemiseksi, vakinaisen Internet-yhteyden vaihtoehdoksi tai Internet-yhteydeksi siellä missä muut yhteydet eivät toimi kunnolla&lt;br /&gt;
* Yhteys joihinkin laitteisiin (GPS, UPS yms.), joidenkin laitteiden ohjelmistopäivitykset&lt;br /&gt;
* Elektroniikan ohjelmointi: monet laitteet käyttävät vielä sarjaporttia&lt;br /&gt;
* Itsetehtyjen laitteiden hallinta&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[Kirjoitinportti]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[[wikipedia:fi:RS-232|RS-232]] (Wikipedia)&lt;br /&gt;
*[[wikipedia:sv:Serieport|Serieport]] (Wikipedia)&lt;br /&gt;
*[[wikipedia:Serial port|Serial port]] (Wikipedia)&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Käsitteet]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Xz&amp;diff=46816</id>
		<title>Xz</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Xz&amp;diff=46816"/>
		<updated>2016-08-10T06:03:22Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: typo, pilkku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
{{Ohjelma&lt;br /&gt;
| nimi=xz&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=[[LGPL]]v2+&lt;br /&gt;
| käyttöliittymä=teksti&lt;br /&gt;
| kotisivu=[http://tukaani.org/xz/ tukaani.org/xz]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;xz&#039;&#039;&#039; on tiedostonpakkausohjelma, jota käytetään yleensä [[tar]]in kanssa. xz on tehokkaampi kuin [[gzip]] ta [[bzip2]] ja luo noin 30% pienenpiä paketteja kuin gzip ja noin 15% pienempiä paketteja kuin bzip2. xz käyttää samaa [[wikipedia:en:Lempel–Ziv–Markov chain algorithm|LZMA]]-algoritmia kuin [[p7zip|7-Zip]]. Muun muassa Linux-ytimen lähdekoodit jaetaan nykyään &amp;lt;tt&amp;gt;.tar.xz&amp;lt;/tt&amp;gt;-paketteina &amp;lt;tt&amp;gt;.tar.gz&amp;lt;/tt&amp;gt;-pakettien sijaan.&lt;br /&gt;
&lt;br /&gt;
==Asennus==&lt;br /&gt;
{{Asenna|xz|xz}}&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Tiedosto voidaan pakata komentamalla:&lt;br /&gt;
 $ xz tiedosto&lt;br /&gt;
Ja purkaa komentamalla:&lt;br /&gt;
 $ xz -d tiedosto.xz&lt;br /&gt;
Yleensä pakataan kuitenkin tarilla. tarilla xz-pakkaus onnistuu &amp;lt;tt&amp;gt;J&amp;lt;/tt&amp;gt; -valitsimella:&lt;br /&gt;
 $ tar cJf arkisto.tar.xz hakemisto&lt;br /&gt;
Purkaminen taas onnistuisi perinteiseen tapaan:&lt;br /&gt;
 $ tar xf arkisto.tar.xz&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin perustyökalut]]&lt;br /&gt;
[[Luokka:Pakkausohjelmat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Convmv&amp;diff=46795</id>
		<title>Convmv</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Convmv&amp;diff=46795"/>
		<updated>2016-08-09T19:15:57Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
{{Ohjelma&lt;br /&gt;
| nimi=convmv&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=[[GPL]]v2 tai GPLv3&lt;br /&gt;
| käyttöliittymä=teksti&lt;br /&gt;
| kotisivu=[http://j3e.de/linux/convmv/ j3e.de/linux/convmv]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;convmv&#039;&#039;&#039; on [[Komentorivikomennot|komentoriviohjelma]], jolla onnistuu tiedostonimien muuttaminen merkistöstä toiseen. Esimerkiksi seuraava komento muuttaisi kaikki hakemiston &amp;lt;tt&amp;gt;foo&amp;lt;/tt&amp;gt; tiedostonimet rekursiivisesti (eli myös alihakemistot käydään läpi) ISO-8859-15-muodosta [[UTF-8]]-muotoon:&lt;br /&gt;
 convmv -f iso-8859-15 -t utf8 -r foo/ --notest&lt;br /&gt;
Ilman &amp;lt;tt&amp;gt;--notest&amp;lt;/tt&amp;gt;-lippua ohjelma vain näyttää, mitä tiedostoja se on uudelleennimeämässä, eikä varsinaisesti tee muutoksia. convmv osaa myös jättää muuttamatta sellaisten tiedostojen nimet, jotka on jo koodattu valitulla merkistönkoodauksella.&lt;br /&gt;
&lt;br /&gt;
Mahdolliset optiot:&lt;br /&gt;
*&amp;lt;tt&amp;gt;-f koodaus&amp;lt;/tt&amp;gt;: Muunnettavien tiedostonimien merkistökoodaus&lt;br /&gt;
*&amp;lt;tt&amp;gt;-t koodaus&amp;lt;/tt&amp;gt;: Muunnetaan tähän koodaukseen&lt;br /&gt;
*&amp;lt;tt&amp;gt;-r&amp;lt;/tt&amp;gt;: Rekursiivinen tila, käy läpi myös alihakemistot&lt;br /&gt;
*&amp;lt;tt&amp;gt;--list&amp;lt;/tt&amp;gt;: Listaa käytettävissä olevat koodaukset&lt;br /&gt;
*&amp;lt;tt&amp;gt;--nosmart&amp;lt;/tt&amp;gt;: Muuttaa kaikkien tiedostojen nimeä riippumatta sen koodauksesta&lt;br /&gt;
*&amp;lt;tt&amp;gt;--notest&amp;lt;/tt&amp;gt;: Tekee muunnoksen eikä vain näytä, mitä tehtäisiin&lt;br /&gt;
*&amp;lt;tt&amp;gt;--upper&amp;lt;/tt&amp;gt;: Käyttää isoja kirjaimia&lt;br /&gt;
*&amp;lt;tt&amp;gt;--lower&amp;lt;/tt&amp;gt;: Käyttää pieniä kirjaimia&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*&amp;lt;tt&amp;gt;[[iconv]]&amp;lt;/tt&amp;gt; – muuttaa tiedostojen sisällön merkistökoodauksesta toiseen&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin erikoisohjelmat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Rm&amp;diff=46794</id>
		<title>Rm</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Rm&amp;diff=46794"/>
		<updated>2016-08-09T19:11:11Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: displaytitle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
[[Komentorivi]]komento &#039;&#039;&#039;rm&#039;&#039;&#039; poistaa valitun tiedoston. Poistaaksesi tiedoston sinulla täytyy olla kirjoitusoikeudet hakemistoon jossa tiedosto sijaitsee &amp;amp;ndash; itse tiedostoon ei tarvita oikeuksia (muuta kuin jos hakemistossa on t-bitti aktiivisena ja tiedosto on toisen omistuksessa).&lt;br /&gt;
&lt;br /&gt;
Normaalisti &amp;lt;tt&amp;gt;rm&amp;lt;/tt&amp;gt; ei kysy varmistusta kuin kahdessa tapauksessa: jos tiedostoon ei ole kirjoitusoikeuksia tai jos valitsin &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt; on käytössä (explisiitisti tai [[alias|aliaksen]] kautta). Valitsimella &amp;lt;tt&amp;gt;-f&amp;lt;/tt&amp;gt; varmistusta ei kysytä näissäkään tapauksissa.&lt;br /&gt;
&lt;br /&gt;
Itse asiassa komento ei ensisijaisesti poista tiedostoa kiintolevyltä, vaan sen nimen hakemistosta. Tiedosto saattaa esiintyä useammassa hakemistossa tai eri nimillä ja vasta viimeisen [[Kova linkki|kovan linkin]] poistamisen myötä tiedosto häviää (&amp;lt;tt&amp;gt;[[ls]] -l&amp;lt;/tt&amp;gt; näyttää linkkien määrän). Jos tiedosto on jonkin ohjelman käytössä, ohjelma voi jatkaa sen käyttöä riippumatta siitä onko tiedosto poistettu hakemistoista.&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Poista tiedosto &lt;br /&gt;
 $ rm poistettava_tiedosto&lt;br /&gt;
&lt;br /&gt;
Poista hakemisto ja sisältö rekursiivisesti (varmista, ettei komennossa ole ylimääräisiä välilyöntejä tai hakemistonimessä erikoismerkkejä)&lt;br /&gt;
 $ rm -r poistettava_hakemisto&lt;br /&gt;
&lt;br /&gt;
Jos &amp;lt;tt&amp;gt;rm&amp;lt;/tt&amp;gt; kyselee varmistusta, on se [[alias]]. Oikean rm-komennon saa käyttöön joko antamalla polun &amp;lt;tt&amp;gt;/bin/rm&amp;lt;/tt&amp;gt; tai käyttämällä muotoa &amp;lt;tt&amp;gt;\rm&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Ongelmatiedostot===&lt;br /&gt;
Jos poistettavassa tiedostonimessä on erikoismerkkejä (Unixeissa kaikki merkit paitsi &amp;lt;tt&amp;gt;\0&amp;lt;/tt&amp;gt; ja kauttaviiva ovat sallittuja), tiedoston voi poistaa esimerkiksi näin:&lt;br /&gt;
* Lainausmerkit toimivat hyvin, jos tiedostonimessä on esimerkiksi välilyöntejä. Niitä kannattaa käyttää aina, kun tiedostonimiä käsittelee skripteissä.&lt;br /&gt;
* &amp;quot;Hipsut&amp;quot; estävät useimpien erikoismerkkien toiminnan.&lt;br /&gt;
* Kenoviiva muuttaa sitä seuraavan erikoismerkin tavalliseksi merkiksi.&lt;br /&gt;
* Polun määrittäminen siirtää ongelmallisen alkumerkin ongelmattomaan kohtaan.&lt;br /&gt;
* Tähdellä voi määritellä nimiä, joita ei voi helposti kirjoittaa, ja valitsimella -i niistä voi poimia poistettavat. Muoto \rm tai /bin/rm varmistaa ettei aliaksen kautta käytetä valitsinta -f.&lt;br /&gt;
 $ [[ls]]&lt;br /&gt;
 a b  a&amp;quot;b  a*b  -ab  a?b&lt;br /&gt;
&lt;br /&gt;
 $ rm &amp;quot;a b&amp;quot;&lt;br /&gt;
 $ rm &#039;a&amp;quot;b&#039;&lt;br /&gt;
 $ rm a\*b&lt;br /&gt;
 $ rm ./-ab&lt;br /&gt;
 $ \rm -i a*b&lt;br /&gt;
&lt;br /&gt;
Poista hakemiston kaikki piilotiedostot (poistamatta mitään ylähakemistosta):&lt;br /&gt;
 $ rm ./.[^.]*&lt;br /&gt;
 $ ls&lt;br /&gt;
 ...  ..abc  a  b  c&lt;br /&gt;
 $ rm ./..?*&lt;br /&gt;
&lt;br /&gt;
Rikkinäisellä medialla ja joissakin toisissa yhteyksissä voi esiintyä tiedostoja, joita pääkäyttäjäkään ei voi poistaa. Varmista, että osio ei ole kirjoitussuojattu (&amp;lt;tt&amp;gt;[[mount]] -o remount,rw osio&amp;lt;/tt&amp;gt;) ja ettei tiedotoa ole suojattu erikoismääreillä (&amp;lt;tt&amp;gt;[[lsattr]] tiedosto&amp;lt;/tt&amp;gt;). Erilaiset &amp;quot;haamutiedostot&amp;quot; on monessa tapauksessa mahdollista saada häviämään tarkistamalla ja korjaamalla tiedostojärjestelmä [[fsck]]:n avulla.&lt;br /&gt;
&lt;br /&gt;
==Valitsimia==&lt;br /&gt;
*&#039;&#039;&#039;-f&#039;&#039;&#039; - ei kysellä koskaan mitään&lt;br /&gt;
*&#039;&#039;&#039;-i&#039;&#039;&#039; - kysytään ennen jokaisen tiedoston poistamista&lt;br /&gt;
*&#039;&#039;&#039;-I&#039;&#039;&#039; - kysyy vain kerran, jos poistettavia tiedostoja on yli kolme tai jos käytetään rekursiivista poistoa (&amp;lt;tt&amp;gt;-r&amp;lt;/tt&amp;gt;-[[valitsin]])&lt;br /&gt;
*&#039;&#039;&#039;--interactive=&#039;&#039;&#039; - säätelee varmistuksen kyselyä, &amp;lt;tt&amp;gt;never&amp;lt;/tt&amp;gt;-arvolla ei kysellä lainkaan, &amp;lt;tt&amp;gt;once&amp;lt;/tt&amp;gt; on sama kuin valitsin &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;always&amp;lt;/tt&amp;gt; sama kuin valitsin &amp;lt;tt&amp;gt;-i&amp;lt;/tt&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;--one-file-system&#039;&#039;&#039; - ei poista kuin yhteen tiedostojärjestelmään kuuluvia tiedostoja &lt;br /&gt;
*&#039;&#039;&#039;--preserve-root&#039;&#039;&#039; - ei sovella rekursiivista poistoa [[juuriosio|juurihakemistoon]] (oletus)&lt;br /&gt;
*&#039;&#039;&#039;--no-preserve-root&#039;&#039;&#039; - mahdollistaa juurihakemiston rekursiivisen poiston (käytä jos haluat tuhota järjestelmäsi) &lt;br /&gt;
*&#039;&#039;&#039;-r, -R&#039;&#039;&#039; - rekursiivinen poisto (poistaa myös hakemistot)&lt;br /&gt;
*&#039;&#039;&#039;-v&#039;&#039;&#039; - tulostaa jokaisen tiedoston nimen ennen sen poistoa (&#039;&#039;verbose&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Lisätietoja saa komennolla:&lt;br /&gt;
 [[info]] rm&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
*[[ls]] (tiedostolistaus)&lt;br /&gt;
*[[ln]] (linkitys)&lt;br /&gt;
*[[mv]] (tiedostojen siirtäminen)&lt;br /&gt;
*[[rmdir]] (hakemiston poistaminen)&lt;br /&gt;
*[[mkdir]] (hakemiston luominen)&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Coreutils]][[Luokka:Komentorivin perustyökalut]]&lt;br /&gt;
&lt;br /&gt;
[[pl:Rm]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Malline:Levyn_polttoohjelmia&amp;diff=46793</id>
		<title>Malline:Levyn polttoohjelmia</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Malline:Levyn_polttoohjelmia&amp;diff=46793"/>
		<updated>2016-08-09T19:08:53Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: kauttaviivat ja linkit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;toccolours&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #e1ddc9; text-align:center&amp;quot; |&#039;&#039;&#039;[[Levyn polttaminen]]&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | [[Brasero]] | [[cdrkit]] | [[genisoimage]]/[[mkisofs]] | [[GnomeBaker]] | [[growisofs]] | [[Gcdmaster]] | [[K3b]] | [[Konqueror]] | [[Nautilus]] | [[Nero]] | [[wodim]]/[[cdrecord]] | [[XCDRoast]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mallineesta==&lt;br /&gt;
Tämä malline esittelee Levyn polttoohjelmia.&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Lisää artikkelin loppuun: &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{Levyn polttoohjelmia}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Luokka:Mallineet|{{PAGENAME}}]][[Luokka:Artikkelisarjamallineet|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;[[Luokka:Poltto-ohjelmat]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Sysctl&amp;diff=46792</id>
		<title>Sysctl</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Sysctl&amp;diff=46792"/>
		<updated>2016-08-09T09:37:26Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
&#039;&#039;&#039;sysctl&#039;&#039;&#039; on ohjelma, joka säätää [[ydin|ytimen]] asetuksia ajonaikaisesti. Näitä asetuksia voi muokata myös &amp;lt;tt&amp;gt;/[[proc]]/sys&amp;lt;/tt&amp;gt;-hakemiston kautta. Useimmissa [[jakelu]]issa &amp;lt;tt&amp;gt;sysctl&amp;lt;/tt&amp;gt; tekee järjestelmän käynnistyksen yhteydessä &amp;lt;tt&amp;gt;[[sysctl.conf|/etc/sysctl.conf]]&amp;lt;/tt&amp;gt;-[[asetustiedosto]]n mukaiset asetukset.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[[archwiki:sysctl|Sysctl Arch Linuxin wikissä]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin perustyökalut]]&lt;br /&gt;
[[Luokka:Ydin]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Sysctl&amp;diff=46791</id>
		<title>Sysctl</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Sysctl&amp;diff=46791"/>
		<updated>2016-08-09T09:37:00Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: arch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}&lt;br /&gt;
&#039;&#039;&#039;sysctl&#039;&#039;&#039; on ohjelma, joka säätää [[ydin|ytimen]] asetuksia ajonaikaisesti. Näitä asetuksia voi muokata myös &amp;lt;tt&amp;gt;/[[proc]]/sys&amp;lt;/tt&amp;gt;-hakemiston kautta. Useimmissa [[jakelu]]issa &amp;lt;tt&amp;gt;sysctl&amp;lt;/tt&amp;gt; tekee järjestelmän käynnistyksen yhteyedessä &amp;lt;tt&amp;gt;[[sysctl.conf|/etc/sysctl.conf]]&amp;lt;/tt&amp;gt;-[[asetustiedosto]]n mukaiset asetukset.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[[archwiki:sysctl|Sysctl Arch Linuxin wikissä]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin perustyökalut]]&lt;br /&gt;
[[Luokka:Ydin]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Keskustelu_k%C3%A4ytt%C3%A4j%C3%A4st%C3%A4:Apdeit&amp;diff=46790</id>
		<title>Keskustelu käyttäjästä:Apdeit</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Keskustelu_k%C3%A4ytt%C3%A4j%C3%A4st%C3%A4:Apdeit&amp;diff=46790"/>
		<updated>2016-08-09T09:32:03Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tervetuloa wikiin kirjoittajaksi. Aktiivisia kirjoittajia on vain muutama eli lisää tarvittaisiin joukkoon. Ihan hyvää tekstiä ja korjauksia tulee. --[[Käyttäjä:Lahtis|Lahtis]] ([[Keskustelu käyttäjästä:Lahtis|keskustelu]]) 2. elokuuta 2016 kello 15.55 (EEST)&lt;br /&gt;
&lt;br /&gt;
: Kiitos ystävällisestä vastaanotosta. --[[Käyttäjä:Apdeit|Apdeit]] ([[Keskustelu käyttäjästä:Apdeit|keskustelu]]) 9. elokuuta 2016 kello 12.32 (EEST)&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=PXE&amp;diff=46779</id>
		<title>PXE</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=PXE&amp;diff=46779"/>
		<updated>2016-08-08T07:55:24Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Perustietoa|en:Preboot Execution Environment}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PXE&#039;&#039;&#039; (&#039;&#039;Preboot eXecution Environment&#039;&#039;) on nykyisin laajalti tuettu ja yleisimmin käytetty tietokoneen [[verkkokäynnistys]]tapa.&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Preboot_Execution_Environment en.wikipedia.org - Preboot eXecution Environment]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkkokäynnistys]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Pxe&amp;diff=46778</id>
		<title>Pxe</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Pxe&amp;diff=46778"/>
		<updated>2016-08-08T07:52:45Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Pxe uudelle nimelle PXE: isoilla kirjaimilla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#OHJAUS [[PXE]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=PXE&amp;diff=46777</id>
		<title>PXE</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=PXE&amp;diff=46777"/>
		<updated>2016-08-08T07:52:45Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Pxe uudelle nimelle PXE: isoilla kirjaimilla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PXE&#039;&#039;&#039; (&#039;&#039;Preboot eXecution Environment&#039;&#039;) on nykyisin laajalti tuettu ja yleisimmin käytetty tietokoneen verkkokäynnistystapa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Preboot_Execution_Environment en.wikipedia.org - Preboot eXecution Environment]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkkokäynnistys]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Tarsnap&amp;diff=46776</id>
		<title>Tarsnap</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Tarsnap&amp;diff=46776"/>
		<updated>2016-08-08T07:51:55Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: wikilinkkejä&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ohjelma&lt;br /&gt;
| nimi=Tarsnap&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| lisenssi=avoin lähdekoodi epävapaalla lisenssillä&lt;br /&gt;
| käyttöliittymä=teksti&lt;br /&gt;
| kotisivu=[https://www.tarsnap.com/ www.tarsnap.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tarsnap&#039;&#039;&#039; on [[komentorivi]]ltä käytettävä varmuuskopiointipalvelu Unixin kaltaisille järjestelmille. Asiakasohjelma on avointa lähdekoodia, mutta siitä muunneltujen versioiden levittäminen ei ole sallittua. Tarsnap salaa tiedostot ennen palvelimelle siirtämistä.&lt;br /&gt;
&lt;br /&gt;
==Asennus==&lt;br /&gt;
Ohjelma on tarkoitus asentaa [[kääntäminen|kääntämällä se lähdekoodeista]], eikä sitä ole saatavissa valmiiksi käännettynä.&lt;br /&gt;
* [https://www.tarsnap.com/download.html www.tarsnap.com/download.html]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [https://github.com/Tarsnap/tarsnap github.com/Tarsnap/tarsnap] - Ohjelman lähdekoodit GitHubissa&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Varmuuskopiointi]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Luokka:Muistiinpano-ohjelmat&amp;diff=46775</id>
		<title>Luokka:Muistiinpano-ohjelmat</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Luokka:Muistiinpano-ohjelmat&amp;diff=46775"/>
		<updated>2016-08-08T07:40:00Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tässä luokassa on esitelty muistiinpanoihin liittyviä ohjelmistoja.&lt;br /&gt;
&lt;br /&gt;
[[Luokka: Ohjelmat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Luokka:Muistiinpano_ohjelmat&amp;diff=46774</id>
		<title>Luokka:Muistiinpano ohjelmat</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Luokka:Muistiinpano_ohjelmat&amp;diff=46774"/>
		<updated>2016-08-08T07:39:35Z</updated>

		<summary type="html">&lt;p&gt;Apdeit: Apdeit siirsi sivun Luokka:Muistiinpano ohjelmat uudelle nimelle Luokka:Muistiinpano-ohjelmat: yhdyssana&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#OHJAUS [[:Luokka:Muistiinpano-ohjelmat]]&lt;/div&gt;</summary>
		<author><name>Apdeit</name></author>
	</entry>
</feed>