Operatsioonisüsteemi Debian GNU/Linux paketihalduse kasutamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Üldiselt on paketihalduse eesmärgiks lihtsustada tarkvara haldamist muutes tarkvara paigaldamise, eemaldamise ja turvaparanduste rakendamise ühetaoliseks ja hõlpsasti korratavaks protseduuriks. Debiani paketihaldusele on iseloomulik

  • 2013 aastal on nt AMD64 arhitektuuri Debiani stabiilses v. 7.0 üle 37 000 paketi, mis tähendab, et enamiku kasutusjuhte saab rahuldada ära ametliku Debiani paketirepositooriumi tarkvara abil; tarkvara jagatakse Debiani ametlikes peeglites, http://www.debian.org/mirror/list; Debiani ametlike repositooriumide kasutamiseks ei ole vaja kuskil midagi registreerida
  • ametliku repositooriumi kasutajate jaoks on tagatud kõigi pakettide kooskõlalisus ja turvapaikade olemasolu, selliselt moodustatud süsteem on tarkvara ja tarkvara halduse seisukohast terviklik; erinevalt näiteks OpenBSD operatsioonisüsteemist, kus on olemas operatsioonisüsteemi põhiosa, mida ei halda paketihaldus ning portsud ja neile vastavad binaarsed paketid, kõik tarkvara esineb Debianis pakettide kujul (teatud abistavad skriptid, seadistusfailid, ajutised failid jms võivad olla genereeritud paketi paigaldamise käigus)
  • operatsioonisüsteemi kuuluv tarkvara on jaotatud pakettideks funktsionaalsuse alusel, reeglina vastab ühele paketile kas üks programm või programmide komplekt, põhimõtteliselt iga süsteemis esinev fail on mingi paketiga seotud
  • paketihaldussüsteem lahendab automaatselt sõltuvused, mis tähendab praktiliselt seda, et kui paigaldatav tarvkvarapakett eeldab mõne muu paketi olemasolu, siis see paigaldatakse automaatselt; ja vastupidi, tarkvara eemaldamisel on võimalik kasutajal eemaldada paketid, mis on tekkinud süsteemi sõltuvuste rahuldamiseks, kuid mida enam ei ole tarvis
  • tavaliselt ei ole vajadust ja paketihaldus ei näe eriti ette võimalust paigaldada sisuliselt sama funktsionaalsusega erinevat tarkvara, kui see tekitab konflikti, näiteks, kui süsteemi on paigaldatud postivahetusprogramm (MTA) Exim ja seejärel asutakse paigaldama postivahetusprogrammi Postfix, siis esmalt Exim eemaldatakse ning alles seejärel paigaldatakse Postfix; aga näiteks on legaalne, et samaaegselt on paigaldatud süsteemi mitmu tekstiredaktorit, nt Joe ja Vi
  • pakettidele on arvutatud kontrollsummad, mida paketihaldussüsteem kasutab vigade ja võimalike võltsingute avastamiseks
  • lisaks ametlikule repositooriumile eksisteerivad mitmed alternatiivsed repositooriumid, mida erinevad huvigrupid peavad, nende kasutamise osas peab kasutaja ise otsuse tegema
  • kasutaja võib ka lähtetekstidest tarkvara süsteemi paigaldada, kuid seejuures tuleb omal järge pidada sellise tarkvara uuendamise osas; kusjuures lähtetekstist kompileeritud tarkvara ei ole ületamatult keeruline kasutajal endal pakendada ning süsteemi lisada siiski kasutade paketihaldusvahendeid
  • lisaks kompileeritud pakettidele jagatakse reegline repositooriumides ka vastavaid lähtetekstipakette, millest saab kasutaja ise paketid kompileerida; see võib olla oluline mõne nn compile-time seadistuse kohandamise jaoks
  • tarkvara turvaparandused esinevad uute asjassepuutuvate terviklike pakettide kujul, nt erinevalt Solarisest kus nn paik muudab ühe või mitme paketi teatud faile
  • paketihaldusvahenditega tehtud muudatused logitakse erinevatesse /var/log kataloogi all asuvates logifailides
  • tarkvara paigaldamine toimub tavaliselt võrgust, failis /etc/apt/sources.list on näidatud allikad (ingl. k. sources), kust tarkvara kopeeritakse
  • pakettide vahel on selged sõltuvused; nt paketi paigaldamisel paigaldatakse automaatselt vajalikud muud paketid; paigaldatud paketi eemaldamisel eemaldatakse kõnealune pakett ja seejärel saab eemaldada sõltuvustana paigaldatud paketid kuna need ilmselt ei ole vajalikud (apt süsteem eristab otseselt paigaldatud pakette kaudselt paigaldatud pakettidest)

Tööpõhimõte

deb http://ftp.ee.debian.org/debian wheezy main contrib non-free

kus

.deb fail on ar arhiiv, mis sisaldab kolme faili, nt

$ ar t postgresql-client-9.5_9.5.9-0ubuntu0.16.04_amd64.deb
debian-binary
control.tar.gz
data.tar.xz

Mõisted

  • APT -
  • DPKG -
  • Pinning -
  • package -

Paketihalduse tarkvara paigaldamine

Debiani jaoks leidub mitmesuguseid paketihaldusvahendeid, kuid nad kõik töötavad süsteemi ühe ja sama paketihalduse suhtes. St täiesti korrektne on ühe paketihaldusvahendi abil tarkvara paigaldada, teise abil olukorda kontrollida ja kolmanda abil tarvkara eemaldada. Levinumad vahendid on

  • apt-get - käsurea utiliit, tõenäoliselt kõige universaalsem kasutada
  • dpkg - käsurea utiliit, suhteliselt madala taseme programm, tihtipeale kasutavad teised paketihaldusvahendid teda oma nn back-endina, nimetatutest ainsana ei lahenda automaatselt sõltuvusi ega kopeeri andmeid võrgust
  • dselect - pseudograafiline programm
  • aptitude - pseudograafiline (curses) programm, arendajad investeerivad sellesse suhteliselt palju, sisaldab lisafunktsionaalsust võrreldes apt-get programmiga
  • synaptic - graafiline paketihaldusvahend

Failisüsteemis asub paketihaldusse puutuv kataloogi /var/cache/apt all ning paketihaldust tuleb sooritada juurkasutaja (ingl. k. root) õigustes.

Tarkvara paigaldamine ja eemaldamine paketihaldusvahendite abil

Tarkvara paigaldamiseks sobib kasutada käsurealt programmi apt-get, mis kopeerib andmeid automaatselt võrgust ning lahendab sõltuvused, enne apt-get abil tarkvara repositooriumist kopeerimist tuleb kopeerida indeksid, kus on kirjas pakettide kirjeldused ja pakettidevahelised sõltuvused öeldes

# apt-get update

ning seejärel näiteks populaarse tekstiredaktori Joe paigaldamiseks tuleb öelda

# apt-get install joe

Paketihaldusvahendi dpkg abil on võimalik paigaldatud tarkvara kohta küsida, näiteks versiooni teada saamiseks

# dpkg -l joe
 ..
 ii  joe  3.5-1.1  user friendly full screen text editor

Tarkvara eemaldamiseks sobib öelda

# apt-get remove joe

Lisaks saab apt-cache programmiga otsida paketihalduse arhiivist märksõna alusel tarkvara, näiteks otsime ftp serveri tarkvara vsftpd

# apt-cache search vsftpd
ccze - A robust, modular log coloriser
fail2ban - bans IPs that cause multiple authentication errors
vsftpd - The Very Secure FTP Daemon

Ning konkreetse paketi kohta saab infot küsides, kusjuures pakett ei pea olema paigaldatud

# apt-cache show vsftpd
Package: vsftpd
Priority: extra
Section: net
Installed-Size: 424
Maintainer: Matej Vela <vela@debian.org>
Architecture: amd64
Version: 2.0.5-2
Provides: ftp-server
Depends: libc6 (>= 2.3.5-1), libcap1, libpam0g (>= 0.76), libssl0.9.8 (>= 0.9.8c-1), libwrap0,   libpam-modules, adduser, netbase 
Recommends: logrotate
Conflicts: ftp-server
Filename: pool/main/v/vsftpd/vsftpd_2.0.5-2_amd64.deb
Size: 120284
MD5sum: fe2adbe42fafa0c259cc5acde14163ff
SHA1: 609903667ea2a1a521492e1d0f08b54e4a85465b
SHA256: cfdbe918507c7340f1c28ff925d37f74e644e3b7f97d0fc4f7cde9826ecb4397
Description: The Very Secure FTP Daemon
A lightweight, efficient FTP server written from the ground up with
security in mind.
.
vsftpd supports both anonymous and non-anonymous FTP, PAM authentication,
bandwidth limiting, and the Linux sendfile() facility.
Tag: admin::file-distribution, filetransfer::ftp, implemented-in::c, interface::daemon, network::server, protocol::ftp, protocol::ssl, role::program, works-with::file

Väljundist saame muu hulgas teada

  • autori andmed - Maintainer: Matej Vela <vela@debian.org>
  • versiooni - Version: 2.0.5-2
  • sõltuvused - Depends: libc6 (>= 2.3.5-1), libcap1, libpam0g (>= 0.76), libssl0.9.8 (>= 0.9.8c-1), libwrap0, libpam-modules, adduser, netbase
  • kontrollsummad - MD5, SHA1, SHA256
  • tarkvara kirjelduse

Kui paketihaldus on mõndaaega kasutatud, siis kogunevad võrgust kopeeritud paketid kataloogi /var/cache/apt/archives ning võtavad omajagu ruumi, nende kustutamiseks sobib öelda

# apt-get clean

Soovides teada, millisesse paketti kuulub mõni fail, tuleb öelda

# dpkg -S /bin/date 
coreutils: /bin/date

Süsteemi paigaldatud paketis sisalduvate failide nimekiri esitatakse öeldes

# dpkg -L coreutils

Paigaldatud paketi uuesti paigaldamiseks sobib öelda

# apt-get install paketinimi --reinstall

Vaikimisi seadistusfailide reinstall, nt mis tekitab või kirjutab üle /etc/apache2/apache2.conf jt failid vaikimisi paketihaldusest tulevatega

# apt-get -o DPkg::Options::="--force-confmiss" --reinstall install apache2.2-common

Paketiga seotud programmifailide ja seadistusfailide eemaldamiseks

# apt-get purge apache2

Nö tavaliste repositooriumide kasutamisel eriti suuri valikuid paigaldatava versiooni osas pole, ehk vaid main vs security, versiooni saab öelda nii

vaadata mõnes arvutis versioon järgi

# dpkg -l paketinimi

paigaldada täpselt versioon

# apt-get install paketinimi=versioon

Avaramate versioonide võimaluste osas vt https://www.auul.pri.ee/wiki/Operatsioonis%C3%BCsteem_Debian_GNU/Linux_paketihalduse_kasutamine#Debian_snapshot_kasutamine

Operatsioonisüsteemi pakettide uuenduste rakendamine

Operatsioonisüsteemi kasutamise ajal antakse välja turva ja muid parandusi, mida levitatakse natuke suurendatud pakettide versiooninumbritega pakettidena. Nende uuenduste rakendamisel ei toimu operatsioonisüsteemi versiooni uuendamist. Selliste uuenduste rakendamiseks sobib öelda

# apt-get update

ning edasi on kaks varianti, 'upgrade' uuendab paketid ilma uusi pakette paigaldamata või olemasolevaid eemaldamata

# apt-get upgrade

'dist-upgrade' uuendab paketid vajadusel lisades pakette juurde või eemaldades olemasolevaid

# apt-get dist-upgrade

Töötamine pakettide metaandmetega

apt-listchanges

Programmi apt-listchanges abil saab jälgida pakettide uuendamisel toimuvaid muudatusi

# apt-get install apt-listchanges

apt-file

Programmi apt-file abil saab nt

  • küsida, millisesse paketti fail kuulub ilma, et kõnealune pakett peaks olema süsteemi paigaldatud
  • küsida paigaldamata paketi failide nimekirja (sarnaselt dpkg -L paketinimi)

Tarkvara paigaldamiseks tuleb öelda

# apt-get install apt-file

Tarkvara kasutamiseks tuleb öelda esmalt

# apt-file update

ja nt faili warwick_duncan-cyrus_without_system_accounts.txt sisaldava paketinime otsimiseks

# apt-file search warwick_duncan-cyrus_without_system_accounts.txt 
 libpam-pwdfile: /usr/share/doc/libpam-pwdfile/warwick_duncan-cyrus_without_system_accounts.txt

Tundub, et päris suvalist repode puhul asi ei tööta, nt PostgreSQL PGDG puhul.

rdepends

Sõltuvustega tutvumiseks on sobiv kasutada programmi apt-rdepends, mille paigaldamiseks tuleb öelda

# apt-get install apt-rdepends

Ja selleks, et saada teada, mis pakettidest sõltub bash shell sobib öelda

# apt-rdepends bash
Reading package lists... Done
Building dependency tree       
Reading state information... Done
bash
   Depends: base-files (>= 2.1.12)
   Depends: debianutils (>= 2.15)
   PreDepends: libc6 (>= 2.7-1)
   PreDepends: libncurses5 (>= 5.6+20071006-3)
 base-files
   Depends: base-passwd (>= 2.0.3.4)
   PreDepends: awk
 base-passwd
   Depends: libc6 (>= 2.7-1)
 libc6
   Depends: libgcc1
 libgcc1
   Depends: gcc-4.3-base (= 4.3.2-1.1)
   Depends: libc6 (>= 2.7-1)
 gcc-4.3-base
 awk
 debianutils
   PreDepends: libc6 (>= 2.7-1)
 libncurses5
   Depends: libc6 (>= 2.7-1)

apt-show-versions

Kui süsteemi on paigaldatud mitmetest allikatest tarkvara, võib olla abiks apt-show-versions kasutamine, nt

# apt-show-versions | grep ubuntu
esteidcerts/natty uptodate 3.5.5259.239-ubuntu-11-04
esteidfirefoxplugin/natty uptodate 3.5.5988.638-ubuntu-11-04
esteidpkcs11loader/natty uptodate 3.5.3717.583-ubuntu-11-04
estonianidcard/natty uptodate 3.5.6034.793-ubuntu-11-04
libdigidoc/natty uptodate 3.5.5782.613-ubuntu-11-04
libdigidocpp/natty uptodate 3.5.5814.662-ubuntu-11-04
opensc/natty uptodate 0.12.5361.616-ubuntu-11-04
qdigidoc/natty uptodate 3.5.5776.686-ubuntu-11-04
qesteidutil/natty uptodate 3.5.5589.607-ubuntu-11-04
smartcardpp/natty uptodate 3.5.5908.581-ubuntu-11-04

apt-mark

Otseselt paigaldatud pakettide nimekirja esitamine

# apt-mark showmanual

Kaudselt (st sõltvustest tulenevalt) paigaldatud pakettide nimekirja esitamine

# apt-mark showauto

Misc

Kui pakett esineb failisüsteemis .deb faili kujul, siis saab infot küsida öeldes näiteks

# dpkg -I /var/cache/apt/archives/tcpdump_3.9.8-4_amd64.deb 
 new debian package, version 2.0.
 size 320810 bytes: control archive= 1010 bytes.
     796 bytes,    19 lines      control              
     701 bytes,    10 lines      md5sums              
 Package: tcpdump
 Version: 3.9.8-4
 Architecture: amd64
 Maintainer: Romain Francoise <rfrancoise@debian.org>
 Installed-Size: 728
 Depends: libc6 (>= 2.7-1), libpcap0.8 (>= 0.9.3-1), libssl0.9.8 (>= 0.9.8f-5)
 Section: net
 Priority: optional
 Homepage: http://www.tcpdump.org/
 Description: A powerful tool for network monitoring and data acquisition
  This program allows you to dump the traffic on a network. tcpdump
  is able to examine IPv4, ICMPv4, IPv6, ICMPv6, UDP, TCP, SNMP, AFS
  BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS and many other packet
  types.
  .
  It can be used to print out the headers of packets on a network
  interface, filter packets that match a certain expression. You can
  use this tool to track down network problems, to detect "ping attacks"
  or to monitor network activities.

Paketihalduse seadistamine

TODO

Recommends

Debian v. 7 paigaldab vaikimisi ka Recommends paketid, selle väljalülitamiseks sobib kasutada nt

# apt-get --no-install-recommends install nmap -s

Vastasel korral paidaldatakse nmap puhul mh omajagu X teeke.

APT pinning

TODO

  • Archive
Pin: release a=stable
  • Codename
Pin: release n=jessie
  • Version
Pin: release v=7.0
  • Component
Pin: release c=main
  • Origin
Pin: release o=Debian
  • Label
Pin: release l=Debian

'apt-cache policy paketinimi' abil saab enne reaalseid süsteemi muutvaid tegevusi kontrollid, mis toimuma hakkaks

# apt-cache policy whois
whois:
 Installed: 5.0.23
 Candidate: 5.0.26
 Version table:
    5.0.26 0
       500 http://ftp.ee.debian.org/debian/ unstable/main amd64 Packages
    5.0.25 0
       500 http://ftp.ee.debian.org/debian/ testing/main amd64 Packages
*** 5.0.23 0
       500 http://ftp.ee.debian.org/debian/ wheezy/main amd64 Packages
       500 http://ftp.fi.debian.org/debian/ wheezy/main amd64 Packages
       100 /var/lib/dpkg/status
    5.0.10 0
       500 http://ftp.ee.debian.org/debian/ squeeze/main amd64 Packages
    5.0.0ubuntu3 0
       500 http://archive.ubuntu.com/ubuntu/ lucid/main amd64 Packages

Kasulikud lisamaterjalid

Ubuntu pakettide kasutamine

Üldiselt peab olema ettevaatlik süsteemi tarkvara paigaldamisega mõne muu Linuxi distributsiooni paketihaldusest, aga paistab, et lihtsamatel juhtudel (st kui kõnealusega paketiga pole seotud palju sõltuvusi) ja on kui on suhteliselt täpselt teada, mis toimub, siis on nii väga mugav teha. Olgu nt eesmärk paigaldada tarkvara Ubuntu 10.04 Lucid arhiivist

  • Lisada /etc/apt/sources.list faili read, nt
deb http://archive.ubuntu.com/ubuntu lucid main restricted universe
  • uuendada
# atp-get update
  • seejuures võib olla tarvis lisada apt-key abil võtmehoidjasse arhiivi võti
TODO
  • paigaldada tarkvara
# apt-get install -t tcpdump

Vanemast Debiani versioonist pakettide kasutamine

Nt juhtumil kui kasutatakse Zabbix server v. 1.8 ja arvestades, et ei sobi kasutada serveri versioonist uuemat klienti, oleks abiks kasutada monitooritavas Debian v. 7 Wheezy arvutis paketihalduse v. 2.0 Zabbix agendi asemel Debian v. 6 Squeeze agenti. Üldiselt võiks toimuda vanemast Debiani versioonist pakettide kasutamine selliselt

  • Lisada /etc/apt/sources.list faili v. 6 read, nt
deb http://ftp.ee.debian.org/debian/ squeeze main contrib non-free
  • uuendada
# atp-get update
  • paigaldada zabbix-agent pakett v. 6 arhiivist ja muu st vajalikud sõltuvused v. 7 arhiivist
# apt-get install zabbix-agent/squeeze

Kasulikud lisamaterjalid

stat-override

dpkg-statoverride programmiga saab kohendada faili (või kataloogi) omanik:grupi või loabittide väärtusi erinevaks sellest, mis neil paigaldamisel oli. Mõnel korral neid paigaldamisel omandatud väärtusi käsutatakse programmi järgmistel käivitustel, nt soketite puhul. Nimekirja failidest, millega dpkg-statoverride on tegelenud saab küsida selliselt, nt ühel juhtumil võiks olla vastuseks

# dpkg-statoverride --list
root postdrop 2555 /usr/sbin/postdrop
root postdrop 2555 /usr/sbin/postqueue
root mlocate 2755 /usr/bin/mlocate
postfix postdrop 2710 /var/spool/postfix/public
root ssl-cert 710 /etc/ssl/private
root Debian-exim 640 /etc/exim4/passwd.client

Alternatives süsteem

Alternatives süsteem võimaldab kasutada süsteemis samaaegselt erinevaid sarnase funktsionaalsusega programme kusjuures üks on nn default. Nt tekstiredaktorid

# update-alternatives --display editor
editor - auto mode
  link currently points to /usr/bin/joe
/bin/ed - priority -100
  slave editor.1.gz: /usr/share/man/man1/ed.1.gz
/bin/nano - priority 40
  slave editor.1.gz: /usr/share/man/man1/nano.1.gz

Graafilise haldusliidese paigaldamiseks sobib öelda

# apt-get install galternatives

Selliselt saab alternatiive lisada

# update-alternatives --install /usr/lib/iceweasel/plugins/libjavaplugin.so iceweasel-javaplugin.so \
  /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so 100
update-alternatives: using /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so to provide \
  /usr/lib/iceweasel/plugins/libjavaplugin.so (iceweasel-javaplugin.so) in auto mode

kus --install argumentideks on

  • standardne asukoht, kus teeki kasutav programm teeki otsib
  • alternatiivi nimi
  • teegi path
  • prioriteet
# update-alternatives --set editor /usr/bin/vim.basic
udate-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode

Kasulikud lisamaterjalid

Divert süsteem

Nimekirja saab küsida

# dpkg-divert --list

Konkreetse diversiooni kohta öeldakse nt nii

$ dpkg -S /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1.2 
diversion by glx-diversions from: /usr/lib/x86_64-linux-gnu/libGL.so.1.2
diversion by glx-diversions to: /usr/lib/mesa-diverted/x86_64-linux-gnu/libGL.so.1.2

Kasulikud lisamaterjalid

Paketihalduse logi

Paketihalduse protseduuridega sooritatud tegevused logitakse failidesse

  • /var/log/dpkg.log
  • /var/log/apt/history.log
  • /var/log/apt/term.log
  • /var/log/aptitude

Repositooriumide kasutamine

Kui repositoorium asub https:// aadressil, tuleb paigaldada pakett apt-transport-https

# apt-get install apt-transport-https

Debian Archive kasutamine

2009 aastaks Debian Sarge v. 3.1 küll nö ajalugu selles mõttes, et talle ei anta enam välja nt turvaparandusi, kuid operatsioonisüsteem on iseenesest kättesaadav ja kasutatav.

 deb http://archive.debian.org/debian sarge main contrib non-free
 deb-src http://archive.debian.org/debian sarge main contrib non-free

Tundub, et Sarges on olemas alglaadur grub ja lvm tarkvara, kuid lvm köidet juurfailisüsteemi jaoks kasutada on keerukas. initramfs moodustamiseks sobib öelda nt

 # mkinitrd -k -o /boot/initrd.img-2.6.8-4-686-test 2.6.8-4-686

kus

  • -k - jätta initramfs moodustamiseks kasutatud failisüsteemi sisu alles /tmp kataloogi

VMware ESX guestina kasutamiseks tuleb paigaldada

 # apt-get build-dep kernel-image-2.6-686
 # apt-get install kernel-headers-2.6-686

VMware guestile tuleb seadistada mitte LSI vaid BusLogic SCSI kettakontroller.

Kui Debian Sarge guest moodustatakse olemasoleva Debian Sarge eksemplari ning RIPLinux abil, siis tasub tähele panna, et 2009 aasta RIPLinux mke2fs utiliidi abil moodustatud ext3 failisüsteem ei ole Debian Sarge mount jaoks kasutatav. Aitab nt moodustada ajutine chroot kopeeritavast Debian Sargest ja seal sees töötades moodustada Sarge mke2fs abil failisüsteem.

Backports

Debian v. 9 Stretch puhul
deb http://ftp.ee.debian.org/debian/ stretch-backports main contrib non-free
deb-src http://ftp.ee.debian.org/debian/ stretch-backports main contrib non-free

Paigaldamiseks nt

# apt-get install -t stretch-backports haproxy
Debian v. 8 Jessie puhul
deb http://ftp.ee.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://ftp.ee.debian.org/debian/ jessie-backports main contrib non-free

Paigaldamiseks nt

# apt-get install -t jessie-backports docker.io
Debian v. 7 Wheezy puhul

Omajagu uuemaid versioone, ja mille haldamine on siiski nt turvalisuse osas Debian kontrolli all, on kasutatavad backports repositooriumist. Selle kasutamiseks tuleb lisada /etc/apt/sources.list faili read

deb http://ftp.ee.debian.org/debian/ wheezy-backports main contrib non-free
deb-src http://ftp.ee.debian.org/debian/ wheezy-backports main contrib non-free

Ning seejärel saab kasutada Backportsidest pakette öeldes

 # apt-get -t wheezy-backports install tmux

kus

  • -t järel näidatakse distributsiooni nimi, millest tarkvara soovitakse paigaldada (see muudub sisemiselt nn pinningu prioriteete käsu andmise ajal)
  • selliselt paigaldatud tarkvara uuendatakse edaspidi automaatselt samast distributsioonist

Nt sedasi saab küsida distributsioonis oleva paketi versiooni

$ wget ftp://ftp.ee.debian.org/debian/dists/wheezy/main/binary-amd64/Packages.gz --quiet -O - | zgrep -A 1 "^Package: tmux"
Package: tmux
Version: 1.6-2
$ wget ftp://ftp.ee.debian.org/debian/dists/wheezy-backports/main/binary-amd64/Packages.gz --quiet -O - | zgrep -A 1 "^Package: tmux"
Package: tmux
Version: 1.8-2~bpo70+1
Debian v. 6 Squeeze ja varasemat puhul
# cat /etc/apt/sources.list
...
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

uuendada apt-get update abil kirjeldused ning paigaldada tarkvara

# apt-get update
# apt-get -t squeeze-backports install php-apc

Privaatse failisüsteemi repositooriumi kasutamine

Privaatset repositooriumi võiks kasutada nt sellistel puhkudel

  • kasutaja kopeeris usaldusväärsest allikast .deb paketi, nt http://synergy-foss.org/download/?list
  • kasutaja valmistas usaldusväärsete juhiste järgi .deb paketi (nt java-package abil Oracle Java Wheezy jaoks)
  • kasutaja on tõepoolest täiesti ise valmistanud .deb paketi

Repositooriumi kasutamise eeliseks niisama dpkg -i paketinimi.deb ütlemisele on, et paigaldatakse vajalikud sõltuvused automaatselt. Esmalt tuleb paigaldada repositooriumi pidamiseks vajalik tarkvara

# apt-get install dpkg-dev

Seejärel tekitada repositooriumi jaoks kataloog

$ mkdir repo
$ cd repo
$ mkdir binary source
$ cp /tmp/paketinimi.deb binary
$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
$ dpkg-scanpackages source /dev/null | gzip -9c > source/Packages.gz

Eeldusel, et repositooriumi kasutatakse samast arvutist, lisada /etc/apt/sources.list faili read

deb file:///home/priit/repo binary/
deb-src file:///home/priit/repo source/

Seejärel tuleb nagu ikka öelda

# apt-get update
# apt-get install paketinimi.deb

Tundub, et Debiani paketihaldus jälgib paigaldamisel sõltuvusi ning paigaldab vaikimisi kõige uuema paketi võimalikest. Nt kui synergy pakett on Debiani ametlikus arhiivis ja privaatses repos, siis paigaldatakse see, mille versiooninumber on suurem.

Kasulikud lisamaterjalid

Märkus

  • Tundub, et koos sõltuvustega saab paigaldada failisüsteemist .deb paketti selliselt
# apt-get install /var/tmp/paketinimi.deb

Debian v. 6 Squeeze LTS

Debian v. 6 Squeeze jaoks on kasutada Long Time Support (LTS) repositoorium, mis tähendab, et i386 ja amd64 platvormil on paljudele pakettidele jätkuvalt kuni 2016 aasta veebruarini saadava turvaparandused, https://wiki.debian.org/LTS.

Debian snapshot kasutamine

Debian snapshot http://snapshot.debian.org/ abil saab kasutada tagantjärele põhimõtteliselt suvalisi eksisteeriunud pakettide versioone. Debian v. 7.4 CD võimaldab paigaldada v. 7 neljanda update'i seisu pakettidest ja v. 7.5 CD viienda update'i seisu, aga nende vahel võib olla paketist veel antud välja vahepealseid versioone. Selliste versioonide kasutamiseks sobibki http://snapshot.debian.org/. Kasutamiseks tuleb lisada /etc/apt/sources.list faili midagi sellist

# /etc/apt/sources.list 
...
deb http://snapshot.debian.org/archive/debian/20130609T035604Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20131004T220558Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20131031T095700Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20140304T101110Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20140808T043255Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20141210T162204Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20150104T100454Z/ wheezy main non-free contrib
deb http://snapshot.debian.org/archive/debian/20150908T094651Z/ wheezy main non-free contrib

ja nt php5 kohta näeb selliselt

# apt-show-versions -a -p php5
php5 5.4.4-14+deb7u14 install ok installed
No oldstable version
php5 5.4.4-14         wheezy snapshot.debian.org
php5 5.4.4-14+deb7u2  wheezy snapshot.debian.org
php5 5.4.4-14+deb7u5  wheezy snapshot.debian.org
php5 5.4.4-14+deb7u7  wheezy snapshot.debian.org
php5 5.4.4-14+deb7u11 wheezy snapshot.debian.org
php5 5.4.4-14+deb7u14 wheezy snapshot.debian.org
php5 5.4.4-14+deb7u14 wheezy snapshot.debian.org
php5 5.4.44-0+deb7u1  wheezy ftp.ee.debian.org
php5 5.4.44-0+deb7u1  wheezy snapshot.debian.org
php5 5.4.45-0+deb7u1  wheezy security.debian.org
No stable version
php5/wheezy upgradeable from 5.4.4-14+deb7u14 to 5.4.45-0+deb7u1

kus

  • versiooninimi esineb nagu ikka kujul <upstreamversion>-<debianversion>
  • debiani versiooni nime vormistavad erinevad paketi maintainerid omal äranägemisel, nt mõnele meeldib kasutada nimes 'deb7u4' moodi järgnevusi, u4 ei viita debiani versiooni update numbrile, tõenäoliselt loendab sisemiselt mitmenda upstream versiooni debiani update'iga on tegemist
  • erinevatel ridadel kuvatakse kõik võimalused mida /etc/apt seadistused võimaldavad

Konkreetse versiooni paigaldamiseks sobib öelda nt

# apt-get install php5=5.4.4-14+deb7u14

Muud populaarsed repositooriumid

Multiarch kasutamine

Üldiselt 64 bit tuumad toetavad 32 bit programmide kasutamist. St näiteks töötab 64 bit tuumaga nö läbi ja lõhki 32 bit operatsioonisüsteemi eksemplar, mis on algselt 32 bit tuumaga paigaldatud.

  • legacy - enne Debian v. 7 Wheezy toimus 64 bit keskkonnas 32 bit tarkvara kasutamine selliselt, et süsteemi paigaldatakse loetud hulk pakette, mis sisaldavad nö igasuguseid 32 bit teeke. Ja kui siis nö kuskilt oli kopeeritud dünaamiliselt lingitud 32 bit programm, siis suure tõenäosusega see töötas
  • multiarch - Debian v. 7 Wheezy puhul paigaldatakse süsteemi nende loetud hulga igasuguseid 32 bit teeke sisaldavate pakettide asemel tavalise paketihalduse abil 32 bit arhitektuurile vastavad paketid; ja neid 32 bit teeke kasutavaid programme saab samuti nö tavalisel viisil paketihalduse vahenditega paigaldada, eemaldada ja muul moel hallata

Legacy viis 32 bit tarkvara kasutamiseks 64 bit keskkonnas

Läbi ja lõhki 64 bit tuuma ja operatsioonisüsteemi eksemplaris saab ilma pikemata kasutada staatilisi 32 bit programme, kuid kui nad on dünaamiliselt lingitud, st vastu 32 bit teeke, siis need teegid tuleb paigaldada eraldi öeldes

 # apt-get install ia32-libs

kusjuures sedasi paigaldatakse veel mõned paketid sõltuvustena.

Teine võimalus 32 bit tarkvara süsteemi saada on tekitada kuhugi kataloogi 32 bit chroot keskkond, nt debootsrap abil.

Multiarch

32 bit arhitektuuri lisamiseks 64 bit süsteemi sobib öelda

# dpkg --add-architecture i386
# apt-get update

konktrolliks saab küsida nt

# dpkg --print-architecture
amd64
# dpkg --print-foreign-architectures
i386

AMD64 pakett kasutab selliseid teeke

# ldd /bin/nano
  linux-vdso.so.1 =>  (0x00007fffe5dda000)
  libncursesw.so.5 => /lib/x86_64-linux-gnu/libncursesw.so.5 (0x00007f8403e8f000)
  libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f8403c66000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f84038db000)
  libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f84036d7000)
  /lib64/ld-linux-x86-64.so.2 (0x00007f84040e3000)

Teise arhitektuuri paketi paigaldamiseks sobib öelda nt

# apt-get install nano:i386

ja tulemusena on näha, et kasutatakse selliseid teeke

# ldd /bin/nano 
  linux-gate.so.1 =>  (0xf776c000)
  libncursesw.so.5 => /lib/i386-linux-gnu/libncursesw.so.5 (0xf7714000)
  libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xf76f4000)
  libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf7590000)
  libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf758c000)
  /lib/ld-linux.so.2 (0xf776d000)

Pakettide nimekiri paistab nt selline, lisandunud on arhitektuuri tulp

# dpkg -l
..
||/ Name               Version                   Architecture   Description
... 
ii  nano               2.2.6-1+b1                i386           small, friendly text editor inspired by Pico
ii  nautilus           3.4.2-1+build1            amd64          file manager and graphical shell for GNOME
ii  nautilus-data      3.4.2-1+build1            all            data files for nautilus

Kasulikud lisamaterjalid

Paketihalduse turvalisus - Secure APT

Palas http://wiki.debian.org/SecureApt ja manuaalis 'man apt-secure' selgitatakse kuidas GnuPG tarkvara abil tagatakse Debiani paketihalduse turvalisus. Tänu sellisele järgnevusele on tagatud, et tarkvara saaks jõuda muutmata kujul arendaja käest kasutajani.

  • Kasutaja arvutis on olemas nn apt-võtmehoidjas (ingl. k. apt-keyring) Debiani paketihalduse arhiivide avalikud võtmed, mis on sinna paigutatud süsteemi paigaldamisel
 # file /etc/apt/trusted.gpg 
 /etc/apt/trusted.gpg: GPG key public ring

Sisuliselt kopeeritakse võtmed paketi debian-archive-keyring abil, mille sisu saab otseselt esitada öeldes

 $ gpg -k --keyring /usr/share/keyrings/debian-archive-keyring.gpg --no-default-keyring
  • apt-get update ütlemisel kopeeritakse paketihalduse arhiivist muu hulgas nende avalike võtmetega allkirjastatud Release failid (ingl.k. archive reference files) ja Packages failid (viimased ei ole allkirjastatud).
  • Release failides on kirjas Packages failide MD5, SHA1 ja SHA256 kontrollsummad.
  • Packages failis on kirjas kõige kõneksoleva arhiivi paketihalduses olevate .deb pakettide kirjeldused, sh pakettide MD5, SHA1 ja SHA256 kontrollsummad. (Sarnaselt Packages failile kasutatakse Sources faili lähtetekstipakettide jaoks).
  • Pakettide haldajad (ingl. k. maintainer) on tavaliselt Debiani arendajad (ingl. k. Debian developer, DD) kusjuures arendajaks saamisel usaldab uus arendaja oma avaliku võtme teistele arendajatele muu hulgas selleks, et nad saaksid tema pakettide autentsust kontrollida. Nt kui paketi haldaja valmistab paketi, siis signeerib ta selle oma salajase võtmega ning kõneksoleva paketi Debiani arhiivi lisamisel saavad arhiivi koostajad kontrollida paketi autentsust. Kui arhiivi koostajateni jõudnud pakett on autentne, siis arvutatakse faili MD5, SHA1 ja SHA256 kontrollsummad ning lisatakse need andmed Packages ja Sources failidesse.

APT paketihalduses reeglina ei kasutata pakettide endi signeerimist, mida iseenesest saab teha nt dpkg-sig utiliidi abil.

Secure-Apt tehnikat oskavad kasutada apt-get, aptitude ja synaptic paketihalduse programmid. Secure-Apt töö sõltub oluliselt sellest, et arvuti kellaaeg oleks õige (või vähemalt enam-vähem õige).

Release faili autentsuse kontrolli näide

Konkreetse Release faili kontrollimiseks sobib viia läbi selline protseduur. Leiame find abil, millised on Release failid (kusjuures allkirjastatud fail ja vastav signatuur asuvad eraldi failides, nt *Release ja *Release.gpg, täpsemalt väljendades on tegemist 'ascii-armored detached gpg signatures'-idega)

 # $ find /var/lib/apt/lists/ -name \*Release\*
 /var/lib/apt/lists/192.168.10.199:9999_debian_dists_lenny_Release
 /var/lib/apt/lists/security.debian.org_dists_lenny_updates_Release
 /var/lib/apt/lists/security.debian.org_dists_lenny_updates_Release.gpg
 /var/lib/apt/lists/192.168.10.199:9999_debian_dists_lenny_Release.gpg

Nt esimesel Release failil on kaks signatuuri

 # cat "/var/lib/apt/lists/192.168.10.199:9999_debian_dists_lenny_Release.gpg" 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.9 (GNU/Linux)
 
 iEYEABECAAYFAkniWaMACgkQpw2vU2Bw06HU/QCeLF+wWYq601HqwIruP9hShJ3A
 X8QAnRNEncbcXZYmOKMlvE21TcCNcZQI
 =i25J
 -----END PGP SIGNATURE-----
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.9 (GNU/Linux)
 
 iEYEABECAAYFAkniXKUACgkQTScNBvQlhObeUwCfdxECD1alVTT3MbYhoJTGghLO
 RroAn1yUaIOvhLo4s33jopXhO4IIS7ss
 =+vS2
 -----END PGP SIGNATURE-----

Signatuuri kontrollimiseks, tuleb signatuurile vastav avalik võti paigutada kontrollija võtmehoidjasse. Selleks küsime apt-süsteemilt võtmete nimekirja

 # apt-key list
 /etc/apt/trusted.gpg
 --------------------
 pub   1024D/6070D3A1 2006-11-20 [expires: 2009-07-01]
 uid                  Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>
 
 pub   1024D/ADB11277 2006-09-17
 uid                  Etch Stable Release Key <debian-release@lists.debian.org>
 
 pub   1024D/BBE55AB3 2007-03-31 [expires: 2010-03-30]
 uid                  Debian-Volatile Archive Automatic Signing Key (4.0/etch)
 sub   2048g/36CA98F3 2007-03-31 [expires: 2010-03-30]
 
 pub   1024D/F42584E6 2008-04-06 [expires: 2012-05-15]
 uid                  Lenny Stable Release Key <debian-release@lists.debian.org>
 
 pub   4096R/55BE302B 2009-01-27 [expires: 2012-12-31]
 uid                  Debian Archive Automatic Signing Key (5.0/lenny) <ftpmaster@debian.org>
 
 pub   2048R/6D849617 2009-01-24 [expires: 2013-01-23]
 uid                  Debian-Volatile Archive Automatic Signing Key (5.0/lenny)

ja expordime apt süsteemist alustuseks F42584E6 võtme

 # apt-key export F42584E6 | tee -a /tmp/F42584E6.gpg
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: GnuPG v1.4.9 (GNU/Linux)
 
 mQGiBEf4yvIRBADKgBKsRcuk+JiyNvC7DIiSugcxCvzxTVZYKrGQFRbV0r4auF0f
 cvs1OdeACC92JNmaTjCxrP5ZLZk2NdmbaRvV7MgzQpzZxPcK6NQP7GHtHmMyiwpU
 1YP+R9gLGgEvwOUxR80IRQrLGi37DnaiVYtFC68a+EWRJiRebRfkkJ3xUwCgt/vF
 OCJi0sOa69HFS+dANRb7geMD/jtEB1WtKvyktiIY0OpNhMF7UIYzaF4UXqkALjDj
 mG4DOd5hEJA4yESJDwUKXQoReDtd8dGUfgXJ+X9evLMOzRwUbYpdP+asjl907Eps
 vPaGlfWiYI+vWvA7OGyPEgsPpNhNcXfRBljhLja8A3L1oPvAF5vnF9jIXNdw/0FC
 LpN4BADDCYIsd32uPDkag0kEv4KxQwLrle7Y/i8O+JRIkiqWOW+g3izNEUnKlhVj
 7iTK1fT+2gtazMVmnxpDZfODudYG79cruy33F/Xw75nar5eKstMwc7WPpp6soxnN
 Zscug6Ohb1TW62GpnUvonyxN1qnXDHe4PASVqsBEQ0eqAoBj3bQ6TGVubnkgU3Rh
 YmxlIFJlbGVhc2UgS2V5IDxkZWJpYW4tcmVsZWFzZUBsaXN0cy5kZWJpYW4ub3Jn
 PohGBBARAgAGBQJH+NeBAAoJEOVE3gebfDKNkNAAnjJQPg/hmAHsF9e6YF6twWd5
 dwJ4AJ9nwlTdir2bjC+qnE3XAAFywTOblIhGBBARAgAGBQJH+Ni7AAoJEAZ6rQTJ
 O/95iUoAmQHBvtIoDtImONHBrmn9UEg0VeH4AKCe7R9YFjsEoAcHfu/7TOhR4fab
 PohGBBARAgAGBQJH+NlXAAoJEMWvd0pYUQtaKoIAoKCL0RTXGbvaB+A5U+e+a0Sy
 /cN3AKCr5zQnmwtxBZAHT9SdCHSLMKwmxIhGBBARAgAGBQJH+N2IAAoJEFZBJvIp
 8ZvRY04AnRnRwcpwnYX3PI2YcPoFXlb937urAJ9TRdpmMnOTCUo1UbB64OAaGepx
 MohGBBARAgAGBQJH+Ok9AAoJEEk++45dZPhwxZkAoOQS7yrG1G8es+xncDWPKAMy
 RnFIAJwIFqbkbJ4p9U09Mv1ivgvDiP9W0ohmBBMRAgAmBQJH+MryAhsDBQkHuYoA
 BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQTScNBvQlhOal1wCfR+9KG9oKTPtr
 baKcMQldlSYaGXoAn0aEsGxPl+errTOYy2ZsWLNr19Rk
 =V0lS
 -----END PGP PUBLIC KEY BLOCK-----

ning impordime kasutaja võtmehoidjasse

 $ gpg --import /tmp/F42584E6.gpg

Tundub, et selleks, et järgmine --verify käsk ei esitaks hoiatusi tuleb tõsta arhiivi võtmete usaldusväärsust

 $ gpg --edit-key F42584E6
 gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 
 pub  1024D/F42584E6  created: 2008-04-06  expires: 2012-05-15  usage: SC  
                      trust: unknown      validity: unknown
 [unknown] (1). Lenny Stable Release Key <debian-release@lists.debian.org>
 
 Command> trust
 pub  1024D/F42584E6  created: 2008-04-06  expires: 2012-05-15  usage: SC  
                      trust: unknown      validity: unknown
 [unknown] (1). Lenny Stable Release Key <debian-release@lists.debian.org>
 
 Please decide how far you trust this user to correctly verify other users' keys
 (by looking at passports, checking fingerprints from different sources, etc.)
 
   1 = I don't know or won't say
   2 = I do NOT trust
   3 = I trust marginally
   4 = I trust fully
   5 = I trust ultimately
   m = back to the main menu
 
 Your decision? 5
 Do you really want to set this key to ultimate trust? (y/N) y
 
 pub  1024D/F42584E6  created: 2008-04-06  expires: 2012-05-15  usage: SC  
                      trust: ultimate      validity: ultimate
 [ultimate] (1). Lenny Stable Release Key <debian-release@lists.debian.org>
 
 Command> quit

Kui sarnane export-import-trust sooritada ka 6070D3A1 võtme jaoks saab kontrollida Release faili autentsust Release.gpg signatuuri ning avalike võtmete abil

 $ gpg --verify 192.168.10.199\:9999_debian_dists_lenny_Release.gpg  192.168.10.199\:9999_debian_dists_lenny_Release
 gpg: Signature made Mon Apr 13 00:14:11 2009 EEST using DSA key ID 6070D3A1
 gpg: Good signature from "Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>"
 gpg: Signature made Mon Apr 13 00:27:01 2009 EEST using DSA key ID F42584E6
 gpg: Good signature from "Lenny Stable Release Key <debian-release@lists.debian.org>

Lisaks on huvitav tähele panna, et Lenny arhiivi avalik võti on allkirjastatud viie kasutaja poolt

Fail:Apt-secure-1.gif

Selline pilt avaneb eeldusel, et nende kasutajate võtmed on gpg võtmehoidjasse kopeeritud nt öeldes

 $ gpg --keyserver hkp://subkeys.pgp.net --recv-keys 0xC93BFF7

Packages faili autentsuse kontrolli näide

 # cd /var/lib/apt/lists
 # sha256sum 192.168.10.199\:9999_debian_dists_lenny_main_binary-amd64_Packages
 1983c015f6c606492f126f10346ce8784d3a7f47c525699c21659d0005b344f3  192.168.10.199:9999_debian_dists_lenny_main_binary-amd64_Packages
 # grep 1983c015f6c606492f126f10346ce8784d3a7f47c525699c21659d0005b344f 192.168.10.199\:9999_debian_dists_lenny_Release
 1983c015f6c606492f126f10346ce8784d3a7f47c525699c21659d0005b344f3 24180067 main/binary-amd64/Packages

Paketi vsftpd autentsuse kontrolli näide

Otsime failist 192.168.10.199:9999_debian_dists_lenny_main_binary-amd64_Packages välja vsftpd paketi osas

 ...
 Package: vsftpd
 Priority: extra
 Section: net
 Installed-Size: 432
 Maintainer: Daniel Baumann <daniel@debian.org>
 Architecture: amd64
 Version: 2.0.7-1
 Provides: ftp-server
 Depends: libc6 (>= 2.7-1), libcap1, libpam0g (>= 0.99.7.1), libssl0.9.8 (>= 0.9.8f-5), libwrap0 (>= 7.6-4~), libpam-modules, adduser, netbase
 Recommends: logrotate
 Conflicts: ftp-server
 Filename: pool/main/v/vsftpd/vsftpd_2.0.7-1_amd64.deb
 Size: 126910
 MD5sum: a32b16e35ab08d02fc64054962766064
 SHA1: 0602ba528acef734b240107dcdc50031684ed32c
 SHA256: 1948f22aa0c0862973143971032e72357af8efcb9f557ad9e4d17d741eca9701
 ...

ja kopeerime repositooriumist arvutisse vsftpd paketi

 # apt-get install -d vsftpd
 # sha256sum /var/cache/apt/archives/vsftpd_2.0.7-1_amd64.deb 
 1948f22aa0c0862973143971032e72357af8efcb9f557ad9e4d17d741eca9701 /var/cache/apt/archives/vsftpd_2.0.7-1_amd64.deb

debsums kasutamine

Reeglina paketihaldusest paigaldatud tarkvara jaoks on olemas vastavad md5 kontrollsummade failid ja nad asuvad vaikimisi kataloogis

/var/lib/dpkg/info/*.md5sums

debsums võimaldab

  • arvutada failisüsteemis olevate failide kontrollsummad ja võrdleb neid *.md5sums failide sisuga
  • genereerida *.md5sums paketile, millel seda ei mingil põhjusel ei ole
  • käivitada debsums'i crontabist (vaikimisi ei ole aktiivne)
  • kontrollida debsums abil faile valikuliselt (nt ainult seadistusfaile)

Tarkvara paigaldamiseks sobib öelda

# apt-get install debsums

Tulemusena paigaldatakse

  • /etc/default/debsums
  • /etc/cron.daily/debsums
  • /usr/bin/debsums
  • /etc/debsums-ignore

Kasutamiseks

  • Ilma md5 summata pakettide nimekirja esitamiseks sobib öelda
# debsums -l
binutils
g++
joe
mawk
php5
ssmtp
  • Kõige muutunud failide (sh seadistusfailide) nimekirja esitamine
# debsums -ca
/etc/denyhosts.conf
debsums: no md5sums for doc-debian
debsums: no md5sums for joe
debsums: no md5sums for mawk
debsums: no md5sums for netbase
/etc/ntp.conf
/etc/sysctl.conf
/etc/rsyslog.conf
/etc/squid3/squid.conf

Operatsioonisüsteemi tarkvara uuendamine

Operatsioonisüsteemi tarkvara uuendamise käigus rakendatakse süsteemile veaparandused. Selleks peab olema /etc/apt/sources.list failis lisaks rida

deb http://security.debian.org stable/updates main non-free contrib

ning tuleb öelda

 bash# apt-get update
 bash# apt-get upgrade

Kui süsteem saab aru, et mõnda paketihalduse kontrolli all olevat faili on kasutaja muutnud, nt seadistusfaili, siis ta küsib selliselt, st põhiliselt seda, kas kopeerida üle kasutaja muudatused või säilitada; osa kasutajaid eelistab lasta üle kopeerida ja pärast varukoopia abil viia muudatused uuesti sisse

 Configuration file `/etc/xen/xend-config.sxp'
  ==> Modified (by you or by a script) since installation.
  ==> Package distributor has shipped an updated version.
    What would you like to do about it ?  Your options are:
     Y or I  : install the package maintainer's version
     N or O  : keep your currently-installed version
       D     : show the differences between the versions
       Z     : background this process to examine the situation
  The default action is to keep your current version.
 *** xend-config.sxp (Y/I/N/O/D/Z) [default=N] ? Y

Operatsioonisüsteemi versiooni uuendamine

Debiani järgmisele versioonile liikumiseks tuleb veenduda, et /etc/apt/sources.list fail sisaldab järgmisele versioonile vastavat infot ning tuleb öelda

 # apt-get update
 # apt-get dist-upgrade

Kogemus näitab, et Debiani operatsioonisüsteemi versiooni saab sellisel moel uuendada ühelt versioonilt järgmisele isegi üle võrgu, näiteks Sarge (v 6.0 -> Etch (v 7.0).

Käsitsi pakettide kompileerimine

Puhas debiani install ei sisalda endas ei gcc'd ega make't mõlemad tuleks eraldi paigaldada

apt-get install gcc make

Source pakettide kasutamine

Litsentsitingumuste tõttu jaotatakse Debiani paketihalduses vaid Pine lähtekoodi, mille kasutaja saab ise kompileerida.

Kompileerimiseks vajalike vahendite paigaldamine, sh pine programmi kompileerimiseks vajalikud sõltuvused

# apt-get install dpkg-dev
# apt-get build-dep pine

Töö kataloogi moodustamine

# mkdir /usr/src/pine
# chown mart:mart /usr/src/pine
# su - mart
$ cd /usr/src/pine

source paketi nö paigaldamine, source pakett ei ole selles mõttes tavaline pakette, et teda nö süsteemi ei integreerita, sisuliselt kopeeritakse lähtetekst; source paketti saab mitu korda installeerida

$ apt-get source pine

Paketi ehitamine

$ cd pine-4.64
$ dpkg-buildpackage -rfakeroot

Tulemusena tekib mitu paketti .deb failide kujul kataloog ülespoole, pine'i võiks saada paigaldada öeldes

# dpkg -i /usr/src/pine/pine_4.64-3_i386.deb

apt-cacher-ng kasutamine

Kui ühe suhteliselt rahuliku ühenduse taga kasutatakse nt mitut sama versiooni ja samal platvormil töötavat Debiani operatsioonisüsteemi eksemplari, siis on kasu apt-cacher-ng http://www.unix-ag.uni-kl.de/~bloch/acng/ tarkvarast. apt-cacher-ng töötab sisuliselt vahendajana (ingl. k. proxy, cache) paketihaldusega seotud andmete kopeerimise juures. Tõenäoliselt on see kõige sobivam tarkvara, nt töötab paremini kui apt-proxy.

apt-cacher-ng server

Tarkvara paigaldamiseks tuleb öelda ühes arvutis

# apt-get install apt-cacher-ng

Tarkvara tööd juhib seadistusfail /etc/apt-cacher-ng/acng.conf mida kasutamiseks praktiliselt ei ole vaja muuta. Serveri statistikat näeb aadressil http://192.168.1.241:3142/acng-report.html.

apt-cacher-ng kliendid

Selleks, et arvutid asuks andmeid kopeerima läbi apt-cacher-ng sobib lisada nende failisüsteemi fail

# cat /etc/apt/apt.conf.d/02proxy 
Acquire::http { Proxy "http://192.168.1.241:3142"; };

Seejärel toimub tarkvara paigaldamine klientides tavalisel viisil. Kopeeritud andmeid hoiab apt-proxy kataloogis /var/cache/apt-cacher-ng.

Kasulikud lisamaterjalid

debmirror kasutamine

# apt-get install debmirror
# cp /usr/share/doc/debmirror/debmirror.conf /etc
# ln -s /root/.gnupg/pubring.gpg /root/.gnupg/trustedkeys.gpg
# debmirror -v -p /tmp/dm
 Mirroring to /tmp/dm from http://ftp.ee.debian.org//debian/
 Arches: amd64
 Dists: lenny
 Sections: main,main/debian-installer,contrib,non-free
 Including source.
 Will clean up AFTER mirroring.
 Pdiff mode: use.
 Attempting to get lock, this might take 2 minutes before it fails.
 Get Release files.
 [0%] Getting: dists/lenny/Release... ok
 [0%] Getting: dists/lenny/Release.gpg... ok
 gpgv: Signature made Mon Apr 13 00:14:11 2009 EEST using DSA key ID 6070D3A1
 gpgv: Good signature from "Debian Archive Automatic Signing Key (4.0/etch) <ftpmaster@debian.org>"
 gpgv: Signature made Mon Apr 13 00:27:01 2009 EEST using DSA key ID F42584E6
 gpgv: Good signature from "Lenny Stable Release Key <debian-release@lists.debian.org>"
 Get Packages and Sources files and other miscellany.
 dists/lenny/main/binary-amd64/Packages.gz needs fetch
 [  0%] Getting: dists/lenny/main/binary-amd64/Packages.gz... ok
 dists/lenny/main/binary-amd64/Release needs fetch
 [ 67%] Getting: dists/lenny/main/binary-amd64/Release... ok
 dists/lenny/main/source/Sources.gz needs fetch
 ...

Debiani peegel

Debiani peeglid (ingl. k. mirror) http://www.debian.org/mirror/ on ftp/http/rsync serverid, mille sisu hoitakse automaatselt sünkroonis ja mida kasutatakse põhilise Debiani tarkvara jagamise vahendina. Nn country mirrori pidamine on otstarbekas sellistel põhjustel ja et seejuures sellega tegeleks usaldusväärne teenusepakkuja

  • tal on ülevaade millistelt aadressidelt peeglit kasutatakse
  • mis tarkvara need kasutamised kasutavad
  • ta ei saa võltsida sisu, aga ta saab viivitada tarkvara kasutajateni jõudmisega
  • nö tavalised mirrorid reegline ei jaga nö uusi uuendusi; seda teeb security.debian.org
  • kasutajate jaoks on ebamugav kui mirror töötab ebakvaliteetselt

Võiks eeldada, et kui ftp.ee.debian.org nimi ei ole kasutusel, siis debian.org hakkab selle cname'ga viitama sinna kuhu tal palutakse viitama hakata (sh sisuliselt nö kahtlasse kohta). Seepärast on mõistlik country-mirror'it pidada.

ftpsync

ftpsync http://ftp-master.debian.org/ftpsync.tar.gz skript on 2009 aasta lõpul soovitatav vahend Debiani mirrori pidamisel. Nn push-peegli kasutamisel toimub selline tegevuste järgnevus

  • moodustada kasutaja debian, kodukataloogida /home/debian
  • pakkida kasutaja debian alla ftpsync.tar.gz arhiiv lahti, moodustuvad kataloogid /home/debian/bin, /home/debian/etc jt
  • teha etc/ftpsync.conf failis vajalikud muudatused, nt sellised
 MIRRORNAME="ftp.loomaaed.tartu.ee
 TO="/srv/ftp/debian/"
 RSYNC_PATH="debian"
 RSYNC_HOST=ftp.ee.domainname.org
 MAILTO="mart@loomaaed.tartu.ee"
 ERRORSONLY="false"
 FULLLOGS="true"
  • lisada ~/.ssh/authorized_keys faili push-sync tegemiseks vajalik upstream ssh kasutaja võti
 no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync",from="192.168.10.100" ssh-rsa AAAAB3 .. NE4gRJpRgBl/gJ5kkM= mirror@dommainname.org

ftp

http

http protokolliga teenuse pakkumiseks, sobib kasutada nt sellist Apache virtual host seadistust

 <VirtualHost 10.0.6.9:80>
   ServerName ftp.loomaaed.tartu.ee
   DocumentRoot /srv/ftp
   ErrorLog /var/log/apache2/ftp.loomaaed.tartu.ee-error.log
   LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
   CustomLog "/var/log/apache2/ftp.loomaaed.tartu.ee-access.log" combined
 
 <Directory /srv/ftp>
   AllowOverRide None
   Options  Indexes SymlinksIfOwnerMatch
   IndexOptions  NameWidth=* +SuppressDescription
   DirectoryIndex  NODIRECTORYINDEX
   Order Allow,Deny
   Allow from All
 </Directory>
 
 </VirtualHost>

rsync

rsync serveri pidamiseks sobib kasutada nt sellist seadistusfaili /etc/rsyncd.conf

 [debian]
   comment = Debian archive
   path = /srv/ftp/debian
   read only = yes
   list = yes
   max connections = 20
   log file = /var/log/ftpdata/debian-rsyncd.log
   transfer logging = yes

Peegli tervikluse kontrollimine

Nt võiks sobida sarnast skripti kasutada

#!/bin/bash

find /srv/ftp/debian/dists -name Packages.gz -size +20c | while read packagename;

do
  zcat $packagename | egrep "Filename:|MD5sum:" | sed 's/Filename:\s//' | \
    sed ':a;N;$!ba;s/\nMD5sum:\s/ /g' | while read LINE; 

  do
    filename=`echo $LINE | awk {'print $1'}`;
    md5sum=`echo $LINE | awk {'print $2'}`;
    echo  $packagename $filename $md5sum >> /mnt/ftp-6-9/comp.sh.log
    md5sumcald=`md5sum /srv/ftp/debian/$filename | awk {'print $1'}`
 
    if [ "$md5sum" != "$md5sumcald" ]; then
      echo problem: $filename
    fi
  done

done

Kasulikud lisamaterjalid

Debiani peegel - 2018

2018 aastal toimub Debiani mirrordamine üldiselt samuti nagu eelmises punktis kirjeldatud, sellised märkused

  • .ssh/authorized_keys failis sobib kasutada sellist rida (-T argument ei juhi midagi, aga logib midagi)
command="~/bin/ftpsync -T 'ssh (upstream-name.eu.debian.org)'",restrict,from="10.196.149.237" ssh-rsa AAAAB3NzaC1...
  • /opt/debian/etc/ftpsync.conf failis sobib kasutada sisu
$ egrep -v "^#|^$" /srv/debianhome/etc/ftpsync.conf
MIRRORNAME="ftp.moraal.ee"
TO="/srv/ftp/debian/"
MAILTO="imre@moraal.moraal"
RSYNC_HOST="10.196.149.237"
RSYNC_PATH="debian"
RSYNC_USER="kasutajanimi"
RSYNC_PASSWORD="parool"
LOGDIR="/srv/debianhome/log"
ERRORSONLY="false"
FULLLOGS="true"
RSYNC_EXTRA=" --timeout 7200 --contimeout 7200 "
  • kui ftp.moraal.ee jaoks on olemas ipv6 st aaaa kirje, siis tuleb arvestada, et nii pushid sisse kui rsynciga kopeerimiste algatamised välja käivad üle ipv6 tõenäoliselt
  • rsync io errorite vastu võib aidata rsync suvandid ' --timeout 7200 --contimeout 7200 ', vastavad elemendid tuleb bin/ftpsync skriptis kohendada, vastasel korral nad overridevad konfi osa
  • kopeerimiseks rsync serverisse logitakse sisse, liiklus käib üle võrgu nö plain text

ftp.xx.debian.org mirrori liigutamine

  • lähtepunkt on töötav mirror aadressil ftp.auul.pri.ee
  • ftp.xx.debian.org on cname ftp.auul.pri.ee peale
  • valmistatakse ette uus mirror aadressile ftp.moraal.ee ja registreeritakse debian.org juures
  • palutakse ftp.xx.debian.org cname muuta ftp.moraal.ee peale
  • palutakse eemaldada ftp.auul.pri.ee mirrorite nimekirjast
  • lõpetatakse ftp.auul.pri.ee peal mirrordamine

Misc

pre, post jt install skriptid

# ls -ld /var/lib/dpkg/info/openssh-server.*
-rw-r--r-- 1 root root   143 Jul 22  2016 /var/lib/dpkg/info/openssh-server.conffiles
-rwxr-xr-x 1 root root   648 Jul 22  2016 /var/lib/dpkg/info/openssh-server.config
-rw-r--r-- 1 root root  1018 Jul 24 23:04 /var/lib/dpkg/info/openssh-server.list
-rw-r--r-- 1 root root   683 Jul 22  2016 /var/lib/dpkg/info/openssh-server.md5sums
-rwxr-xr-x 1 root root 10821 Jul 22  2016 /var/lib/dpkg/info/openssh-server.postinst
-rwxr-xr-x 1 root root  2271 Jul 22  2016 /var/lib/dpkg/info/openssh-server.postrm
-rwxr-xr-x 1 root root   460 Jul 22  2016 /var/lib/dpkg/info/openssh-server.preinst
-rwxr-xr-x 1 root root   341 Jul 22  2016 /var/lib/dpkg/info/openssh-server.prerm
-rw-r--r-- 1 root root 13234 Jul 22  2016 /var/lib/dpkg/info/openssh-server.templates

apt-listbugs

apt-listbugs võimaldab saada registreeritud bugide kohta infot nt enne paketi uuendamist, tarvara paigaldamiseks sobib öelda

# apt-get install apt-listbugs

Kasutamine paistab välja nt selliselt

# apt-get upgrade
..
Retrieving bug reports... Done
Parsing Found/Fixed information... Done
grave bugs of iceweasel (23.0-1~bpo70+1 -> 25.0-1~bpo70+1) <unfixed>
 #720968 - Enables javascript without asking
 #719689 - iceweasel completely froze X when typing a URL
Summary:
 iceweasel(2 bugs)
Are you sure you want to install/upgrade the above packages? [Y/n/?/...]
...

hold

Paketi hold nimekirja lisamiseks

# echo "paketinimi hold" | dpkg --set-selections

hold asendis nimekirja saamiseks

# dpkg --get-selections

Uuemal ajal on sobivam selleks kasutada apt-mark utiliiti, võib näidata korraga ka mitme paketi nimed

# apt-mark hold libopenipmi0
libopenipmi0 set on hold.
# apt-mark showhold
libopenipmi0
# apt-mark unhold libopenipmi0
Canceled hold on libopenipmi0.

dpkg-repack

dpkg-repack tarkvara paigaldamiseks sobib öelda

# apt-get install dpkg-repack

Paigaldatud tarkvara alusel vastava paketi moodustamine

# dpkg-repack chromium
dpkg-deb: building package `chromium' in `./chromium_34.0.1847.116-1~deb7u1_amd64.deb'.

Paketi nime lugemine

  • paketi nimes sisalduv 'dfsg' (debian free software guidelines) tähistab, et upstream tarkvara sisaldab midagi debiani jaoks sobimatut ja see on eemaldatud debiani versioonis

Kasulikud lisamaterjalid

apt-cache madison

madison abil saab indikatsiooni, millisest repositooriumist on pakett süsteemi paigaldatud, nt mis on paigaldatud muljalt kui nö tavalistest repodest

# for i in `dpkg -l | grep ^ii | awk {'print $2'}`; do apt-cache madison $i; done | grep -v 'jessie/'
   blender | 2.74+dfsg0-4~bpo8+1 | http://ftp.ee.debian.org/debian/ jessie-backports/main amd64 Packages
   blender | 2.74+dfsg0-4~bpo8+1 | http://ftp.ee.debian.org/debian/ jessie-backports/main Sources
blender-data | 2.74+dfsg0-4~bpo8+1 | http://ftp.ee.debian.org/debian/ jessie-backports/main amd64 Packages
   blender | 2.74+dfsg0-4~bpo8+1 | http://ftp.ee.debian.org/debian/ jessie-backports/main Sources
check-postgres | 2.22.0-1.pgdg80+1 | http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg/main amd64 Packages
chrome-token-signing | 1:1.0.0.388-1404 | https://installer.id.ee/media/ubuntu/ trusty/main amd64 Packages
...

Tuuma kasutamine paketihaldusest

Tuumale vastab pakett linux-image-amd64 (nt linux-image-3.16.0-4-amd64 vms)

# dpkg -l linux-im\*
..

ii  linux-image-3.16.0-4-amd64    3.16.43-2+deb8u1    amd64               Linux 3.16 for 64-bit PCs
ii  linux-image-amd64             3.16+63             amd64               Linux for 64-bit PCs (meta-package)

kusjuures parasjagu töötava tuuma nö kernel.org versiooni näeb küsides

# uname -a
Linux post-fend 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u1 (2017-06-18) x86_64 GNU/Linux

Tuuma kompileerimine

Tuuma kompileerimiseks vajalikud ettavalmistused

# apt-get install fakeroot build-essential devscripts
# apt-get build-dep linux
# apt-get install linux-headers-$(uname -r)
# apt-get source linux

Nt mooduli plusb kompileerimiseks sobib õelda

# cd linux-3.16.7-ckt11
# make -C /lib/modules/$(uname -r)/build M=$(pwd) drivers/net/usb/plusb.ko

tulemusena tekib fail

drivers/net/usb/plusb.ko

Kasutamiseks

# cp drivers/net/usb/plusb.ko /lib/modules/3.16.0-4-amd64/kernel/drivers/net/usb/plusb.ko
# depmod
# modprobe plusb

ning

# dmesg
..
[1284534.170339] plusb 1-1.6:1.0 usb0: register 'plusb' at usb-0000:00:07.0-1.6, \
  Prolific PL-2301/PL-2302/PL-25A1/PL-2501, 92:02:c9:44:fa:e6
[1284534.180556] usbcore: registered new interface driver plusb

Kasulikud lisamaterjalid

DKMS tuuma moodulite kasutamine

Paigaldatud moodulite nimekiri

# dkms status
flashcache, 1.0-187-g1cff6f724aab, 3.2.0-4-amd64, x86_64: built
flashcache, 1.0-197-g91b7a0851e97, 3.2.0-4-amd64, x86_64: installed
iscsitarget, 1.4.20.3+svn502, 3.16.0-4-amd64, x86_64: installed
iscsitarget, 1.4.20.3+svn502, 3.16-3-amd64, x86_64: installed
nvidia-current, 367.57, 3.16.0-4-amd64, x86_64: installed
nvidia-current, 367.57, 4.7.0-0.bpo.1-amd64, x86_64: installed
openafs, 1.6.9, 3.16.0-4-amd64, x86_64: installed
virtualbox, 4.3.36, 3.16.0-4-amd64, x86_64: installed

Moodulite uuesti kompileerimine

# dkms autoinstall

Mooduli eemaldamiseks

# dkms remove flashcache/1.0-187-g1cff6f724aab --all

Kasulikud lisamaterjalid

gdebi kasutamine

TODO

apt utiliit

Tundub, et uuemal ajal st Debian v. 8 Jessie puhul on tekkinud apt nimeline utiliit, millega saab sooritada apt-get ja apt-cache enam-vajalikke tegevusi

# apt search sshguard
Sorting... Done
Full Text Search... Done
sshguard/stable 1.5-6 amd64
  Protects from brute force attacks against ssh

NTP

Mõisted

SNTP - Simple Network Time Protocol NTP - Network Time Protocol

TODO

Kasulikud lisamaterjalid

Märkused

Milline fail on millise paketi koosseisus, on kirjas kataloogis

# ls -ld /var/lib/dpkg/info/*
-rw-r--r-- 1 root root     263 Oct 25 22:02 /var/lib/dpkg/info/6tunnel.list
-rw-r--r-- 1 root root     327 May 24  2013 /var/lib/dpkg/info/6tunnel.md5sums
-rw-r--r-- 1 root root   15688 Jan  8  2015 /var/lib/dpkg/info/abiword-common.list
-rw-r--r-- 1 root root   26303 Jan  1  2015 /var/lib/dpkg/info/abiword-common.md5sums
...

Reproducible Builds

TODO

Kasulikud lisamaterjalid

Millist riistvara toetab draiver

Olgu ülesandeks välja selgitada Intel X550 võrguseadme toetus. BSD maailmas on reeglina iga draiveri jaoks manpage ja seal on täpselt kirjas toetatud riistvara, nt http://man.openbsd.org/ix.4

NAME

ix — Intel 82598/82599/X540/X550 PCI Express 10Gb Ethernet device
SYNOPSIS

ix* at pci?
DESCRIPTION

The ix driver provides support for PCI Express 10Gb Ethernet adapters based on the Intel 82598EB, 82599EB, X540 and X550 Ethernet controller chips, including the following:

Intel 82598AF 10GbE Adapter (10GbaseSR)
Intel 82598AF Dual Port 10GbE Adapter (10GbaseSR)
...
Intel X520-DA2 Dual Port 10GbE Adapter (SFP+)
Intel X520-SR1 10GbE Adapter (SFP+/10GbaseSR)
Intel X520-SR2 Dual Port 10GbE Adapter (SFP+/10GbaseSR)
Intel X520-LR1 10GbE Adapter (SFP+/10GbaseLR)
Intel X520-QDA1 10GbE Adapter (QSFP)
Intel X540-T 10GbE Adapter (10GbaseT/1000baseT/100baseTX)
Intel X550-T 10GbE Adapter (10GbaseT/1000baseT/100baseTX)
Intel X552 10GbE Adapter (SFP+)
Intel Xeon-D X552/X557 embedded 10GbE Adapter (SFP+/10GbaseT)
HotLava Tambora 64G4/80G4/64G6/120G6 (SFP+)
...

Tundub, et Linuxi puhul on asjakohane uurida lähteteksti aadressil https://github.com/torvalds/linux kus tuleb valida mingi konkreetne kerneli versiooni Tag. Tundub, et Linux puhul dokumentatsioon ja tegelikkus lahknevad tublisti, nt kernel v. 4.4 puhul Makefail ütleb, et x550 on toetatud

https://github.com/torvalds/linux/blob/v4.4/drivers/net/ethernet/intel/ixgbe/Makefile

kuigi dokumentatsiooni järgi x550 ei ole toetatud

https://github.com/torvalds/linux/blob/v4.4/Documentation/networking/ixgbe.txt

Draiveri kompileerimine lähtetekstist

nt x550 toega ixgbe draiveri kompileerimiseks peavad olema süsteemis vajalikud arendusvahendid

TODO

ixgbe draiveri lähteteksti jagatakse aadressil https://sourceforge.net/projects/e1000/

# cd /var/tmp
# tar zxf ...
# cd src
# make

Tulemusena tekitb igbge.ko fail. Kasutamiseks tuleb tuuma endaga kaasa tulev ixgbe.ko moodul asendada kompileeritud eksemplariga (võimalik, et ka initramfs sees).

Kasulikud lisamaterjalid

Debconf

Üldosa

Debconf on Debiani pakettide seadistamise süsteem. Andmed pakettide kohta asuvad failides kataloogides

 /var/cache/debconf
 /var/lib/dpkg

Üheks Debconf omaduseks on talletada tarkvara paigaldamisel (ja teatud juhtumitel ka paigaldamata tarkvara kohta) tehtud valikud Debconfi andmebaasi selleks, et nt süsteemi uuendamisel neid valikud kasutada.

debconf paketis sisalduva utiliidi debconf-show abil saab küsida paketiga seoses salvestatud seadistusi, nt debconf enda kohta

 # debconf-show debconf 
   debconf-apt-progress/preparing:
 * debconf/frontend: Dialog
   debconf-apt-progress/title:
 * debconf/priority: high
   debconf-apt-progress/info:
   debconf-apt-progress/media-change:

dpkg-reconfigure programmi abil saab selle andmebaasi sisu muuta, nt määrata kui põhjalikke küsimusi tarkvara paigaldamisel kõnealususe tarkvara seadistamiseks kasutajalt küsitakse

 # dpkg-reconfigure debconf

Fail:Debconf-1.gif

Programm gkdebconf on graafiline liides Debconf süsteemile

Fail:Debconf-2.gif

2009 aastal ei ole Debconf siiski oma kõikehõlmavuselt lähedane nt Suse YaSTile.

Dialoogide küsimustele saab vastused ette salvestada debconf-set-selections utiliidiga. Tundub, et info paigutatakse faili

/var/cache/debconf/config.dat

Üks asjade käik võiks olla selline

  • paigaldada arvutisse mingi interaktiivsust vajal programm, nt mysql server
  • küsida debconf-get-selections abil vastused
  • teisse arvutisse salvestada need vastused ära debconf-set-selections programmiga
  • paigaldada mysql-server ja seejuures küsimusi ei küsita

20230530 täiendus

Ubuntu 18.04 on töötanud füüsilisel arvutil ja on kopeeritud ümber virtuaalsele arvutile, kõik toimib, aga uuendamisel 20.04 versioonile do-release-upgrade abil saab ühel hetkel sellise vea

..
Setting up grub-efi-amd64-signed (1.187.3~20.04.1+2.06-2ubuntu14.1) ...
mount: /var/lib/grub/esp: special device /dev/disk/by-id/ata-CT250MX500SSD1_2023E2AA04BF-part1 does not exist.
dpkg: error processing package grub-efi-amd64-signed (--configure):
 installed grub-efi-amd64-signed package post-installation script subprocess returned error exit status 32
dpkg: dependency problems prevent configuration of shim-signed:
 shim-signed depends on grub-efi-amd64-signed (>= 1.187.2~) | grub-efi-arm64-signed (>= 1.187.2~); however:
  Package grub-efi-amd64-signed is not configured yet.
  Package grub-efi-arm64-signed is not installed.

dpkg: error processing package shim-signed (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 grub-efi-amd64-signed
 shim-signed
...

Osutub, et viga on tingitud debconf andmestikus olevast viitest füüsilisele kettale

root@xteev6:~# egrep -r CT250MX500SSD1_2023E2AA04BF /var/ | grep -v '/var/log'
/var/cache/debconf/config.dat:Value: /dev/disk/by-id/ata-CT250MX500SSD1_2023E2AA04BF-part1
/var/cache/debconf/config.dat:Value: /dev/disk/by-id/ata-CT250MX500SSD1_2023E2AA04BF-part1, /dev/vda1

ning

# debconf-show grub-efi-amd64-signed
...

Tundub, et selle vastu aitab debconf sissekande muutmine enne do-release-upgrade ütlemist

TODO

või midagi sellises vaimus

# echo RESET grub-efi/install_devices | debconf-communicate grub-efi-amd64-signed

Kasulikud lisamaterjalid

Equivs kasutamine

Tarvkara paigaldamiseks sobib öelda

# apt-get install equivs

'testimine' nimelise paketi tekitamiseks moodustatakse vastav seadistusfail käsuga

$ equivs-control testime

Redigeeritakse seadisusfail sobivaks

$ cat testime
### Commented entries have reasonable defaults.
### Uncomment to edit them.
# Source: <source package name; defaults to package name>
Section: misc
Priority: optional
# Homepage: <enter URL here; no default>
Standards-Version: 3.9.2

Package: testime
# Version: <enter version here; defaults to 1.0>
Maintainer: Imre <imre@auul.pri.ee>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Multi-Arch: <one of: foreign|same|allowed>
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
# Files: <pair of space-separated paths; First is file to include, second is destination>
#  <more pairs, if there's more than one file to include. Notice the starting space>
Description: testime
 Testime 
 .
 Testime 2

Moodustada pakett

$ equivs-build testime

Tulemusena on käesolevasse kataloogi tekkinud fail

testime_1.0_all.deb

Seda saab käsitleda nagu tavalist .deb paketti, nt paigaldada

# dpkg -i testime_1.0_all.deb

Pakett paigaldab minimaalse

 
# dpkg -L testime 
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/testime
/usr/share/doc/testime/README.Debian
/usr/share/doc/testime/changelog.gz
/usr/share/doc/testime/copyright

dpkg-sig kasutamine

Esmalt on vajalik genereerida kasutaja gpg võti, nt

TODO

Seejärel on tarvis .deb paketti ning signeerimiseks sobis öelda

$ dpkg-sig --sign builder ioping_0.9-2_amd64.deb
Processing ioping_0.9-2_amd64.deb...

You need a passphrase to unlock the secret key for
user: "Moraal (Moraal apt repository) <moraal@moraal.ee>"
4096-bit RSA key, ID EA573C40, created 2017-10-19 (main key ID EB2FFCFC)

gpg: gpg-agent is not available in this session
Signed deb ioping_0.9-2_amd64.deb

tulemusena re-pakendatake .deb pakett kuhu on lisatud _gpgbuilder fail

$ ar t ioping_0.9-2_amd64.deb 
debian-binary
control.tar.gz
data.tar.xz
_gpgbuilder

kusjuures _gpgbuilder faili sisu on sarnane

$ cat _gpgbuilder
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Version: 4
Signer: 
Date: Fri Oct 20 02:10:10 2017
Role: builder
Files: 
	3cf918272ffa5de195752d73f3da3e5e 7959c969e092f2a5a8604e2287807ac5b1b384ad 4 debian-binary
	27eaf152efa551b1b58d15b01b22a3b4 d63e11d7cff6db078f00a630d04b34444499792a 671 control.tar.gz
	ecc2b26cefbb1f7f112e4f6b3d523f61 f1bf638b79689aa7d969d13dcb16eaeaa3c739b2 12456 data.tar.xz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJZ6TDSAAoJEE1fXyrqVzxAl8EP/0/vo0ToYQR9+sgab7ClmJYD
gFe1KSOz5YkuB3ZjbXCZq0XKS4IxDbdzxYErWM05zuWbfaSd00IGd6+xG3bbz/SG
fOoBAw1+Yo9wZND2729xeQNzyWAxNcrQXlWBqEkmmP032pY6u4ZTFeMuK2Gh4N2i
12+mCN4P/w0kHw2C6ATr0NbcUV7RDLeAS1rSTnDcs6919ztzJGau0wAhaNcTBQb+
dJ6FLhMAUxmMuLJbhbChB9VuNkSxjB/jqukUAGfAb+melCWUbnno0ecTwgNKoL8p
SNBB/ZT9HeVnBCil/8UMTKNo8Ug2cOSru2+bjKybUUutqI0V9vEmglyCHNS5r9RC
vD7HN4dFDUHaTQro71pLKoVp1KIYlhPRBxNmWb+OYaPj7Tc9WrueM+OGKqG9vcqX
hjvVduHO/mYlyyQQ5b0qvBYCli6o+zvdxWgWA1rYBuBFH+PLLgVH2xxpgjVIZsmJ
6sAiZPZdHT4m9tkFEAtUUNWgIytbX2pNb6hzEK0Fg0KY5m+ZcA9c7ELCu5nERRnX
tnZRoAvqxnq34MdTZRB6BV7mq6v8Gu6CK7btcOOBB6H5AgGYYajLTbaor/0W4+tx
qrnAXekOUJ4BmfVy/LHySDgfTWhDmrfwYyk9rqKgDMD+YeUmGjr/MzKbFJAgNdmr
pljDbstoPLAwqEkyC9h0
=+Gr1
-----END PGP SIGNATURE-----

Signatuuri kontrollimiseks

# dpkg-sig --verify ioping_0.9-2_amd64.deb
Processing ioping_0.9-2_amd64.deb...
GOODSIG _gpgbuilder 2CDD6E83583E711248403CBF4D5F5F2AEA573C40 1508454610

Kasulikud lisamaterjalid

Mitte-vajalike pakettide haldamine

Mitte-vajalike pakettide haldamine seisneb reeglina vastavate pakettide eemaldamises. Süsteemi kasutamisel võivad põhjusel või teisel aja jooksul süsteemi koguneda nn mitte-vajalikud paketid, nt selliste tunnuste alusel (nb! need on väga erinevad kriteeriumid)

  • APT repositooriumides mitte sisalduvad paketid - pakett on paigaldatud, aga enam ei ole sellist pakette seadistatud apt repositooriumides (st neile ei saa tulla ka uuendusi)
  • ilma sõltuvusteta paketid - pakett on paigaldatud, aga temast ei sõltu mingi muu pakette; kui taoline pakett on teek ja eeldusel, et teeki otseselt ei kasutata, siis tõenäoliselt ei ole see vajalik pakett

Selline olukord võiks tekkida nt

  • operatsioonisüsteemi major versiooni uuendamisel
  • süsteemi kasutati alatest ajast kui ta oli veel Debian Testing staatuses
  • süsteemi apt seadistustesse lisati mingi repo ning paigaldati sealt tarkvara, ja seejärel kõnealune repo eemaldati (kuid tarkvara jäi alles)

APT repositooriumides mitte sisalduvad paketid

Süsteemi paigaldatud kuid süsteemis seadistatud APT repositooriumides mitte esinevate pakettide nimekirja esitamiseks sobib öelda (interaktiivselt käivitatud aptitude aknas on need paketid eraldi sektsioonis)

# aptitude search ?obsolete

ning kustutamiseks

# aptitude purge ?obsolete

Tundub, et sama nimekirja esitamiseks sobib ('apt-get install apt-show-versions' paigaldab vähem sõltuvusi kui 'apt-get install aptitude')

# apt-show-versions | grep "No available version in archive"

Taoline pakett paistab apt-cache policy jaoks sedasi (nn tavalisel juhul on seal vähemalt üks rida '500 http://ftp.ee.debian.org/debian/ jessie/main amd64 Packages' vms)

# apt-cache policy libgnutls26
libgnutls26:
  Installed: 2.12.23-12ubuntu2.8
  Candidate: 2.12.23-12ubuntu2.8
  Version table:
 *** 2.12.23-12ubuntu2.8 100
        100 /var/lib/dpkg/status

Tavaliselt tekib selline olukord nt operatsioonisüsteemi major versiooni uuendamisel ning olemas on uuem versioon sisuliselt samast tarkvarast (näide on toodud Ubuntu keskkonnast)

# dpkg -l libgnutls\*
..
ii  libgnutls26:amd64                 2.12.23-12ubuntu2.8   amd64                 GNU TLS library - runtime library
ii  libgnutls30:amd64                 3.4.10-4ubuntu1.4     amd64                 GNU TLS library - main runtime library

Ilma sõltuvusteta paketid

Vaikimisi esitab (ise ei eemalda) deborphan ilma sõltuvusteta teekide nimekirja

# deborphan

deborphan kasutamisel on risk, et eemaldatakse ka vajalikke pakette, eriti agressiivsemate võtmete kasutamisel, nt

# deborphan --guess-all

Testing muutus Buster v. 10

# apt-get update
Get:1 http://security.debian.org/debian-security buster/updates InRelease [39.1 kB]
Get:2 http://ftp.ee.debian.org/debian buster InRelease [118 kB]        
Hit:3 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease    
Reading package lists... Done                          
N: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Version' value from '' to '10'
E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://ftp.ee.debian.org/debian buster InRelease' changed its 'Version' value from '' to '10.0'
E: Repository 'http://ftp.ee.debian.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Lahenduseks sobib öelda

# apt-get update --allow-releaseinfo-change
N: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Version' value from '' to '10'
N: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'testing' to 'stable'
N: Repository 'http://ftp.ee.debian.org/debian buster InRelease' changed its 'Version' value from '' to '10.0'
N: Repository 'http://ftp.ee.debian.org/debian buster InRelease' changed its 'Suite' value from 'testing' to 'stable'

Muudatusele vastab failisüsteemis nt väärtuselt

# head -n 7 /mnt/root_20190730/var/lib/apt/lists/ftp.ee.debian.org_debian_dists_buster_InRelease 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Origin: Debian
Label: Debian
Suite: testing
Codename: buster

väärtustele

# head -n 8 /var/lib/apt/lists/ftp.ee.debian.org_debian_dists_buster_InRelease 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Origin: Debian
Label: Debian
Suite: stable
Version: 10.0
Codename: buster

Testing muutus Bullseye v. 11

# cat /etc/apt/sources.list
deb http://ftp.ee.debian.org/debian/ bullseye main contrib non-free
deb-src http://ftp.ee.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
# apt-get update
Get:1 http://security.debian.org/debian-security bullseye-security InRelease [44.1 kB]
Get:2 http://ftp.ee.debian.org/debian bullseye InRelease [113 kB]             
Get:3 http://security.debian.org/debian-security bullseye-security/main Sources [10.5 kB]
Get:4 http://security.debian.org/debian-security bullseye-security/main amd64 Packages [19.0 kB]
Get:5 http://security.debian.org/debian-security bullseye-security/main Translation-en [10.1 kB]
Fetched 196 kB in 1s (183 kB/s)           
Reading package lists... Done
N: Repository 'http://security.debian.org/debian-security bullseye-security InRelease' changed its 'Version' value from '' to '11'
N: Repository 'http://security.debian.org/debian-security bullseye-security InRelease' changed its 'Suite' value from 'testing-security' to 'stable-security'
N: Repository 'http://ftp.ee.debian.org/debian bullseye InRelease' changed its 'Version' value from '' to '11.0'
N: Repository 'http://ftp.ee.debian.org/debian bullseye InRelease' changed its 'Suite' value from 'testing' to 'stable'

Kasulikud lisamaterjalid