Paketinhallinta
Linux-jakeluissa on useita erilaisia pakettienhallintatyökaluja, joista apt ja yum ovat varmasti yleisimmät Debian ja Red Hat -pohjaisten järjestelmin suosion myötä. apt:n ja yumin lisäksi on tekstipohjaisia ja graafisia työkaluja, sekä alemman tason pakettienhallintaan dpkg ja rpm. Ylemmäntason työkalujen tehtävä on lähinnä pakettilähteiden hallinta ja järjestelmätason pakettihallinta. Alemmantason työkalut sopivat yksittäisten pakettien hallintaan. Pakettienhallinnan lisäksi lopussa käydään läpi muutamia komentoja ohjelmistojen ja kirjastojen riippuvuussuhteiden selvittämiseksi.
APT
Advanced Package Tool on muun muassa Debian-pohjaisten Linuxien pakettienhallintatyökalu.
# apt-get install autossh // Asentaa paketin # apt-get install autossh=1.4d-1 // Asentaa tietyn version # apt-get -y update // Päivittää paketit, y -optiolla asennus ei kysele varmistusta # apt-get -y upgrade // Päivittää paketit uudempaan versioon # apt-get install autossh --only-upgrade // Päivittää paketin, mutta ei asenna uusia # apt-get install autossh --no-upgrade // Estää olemassa olevien pakettien päivityksen # apt-get remove autossh // Poistaa paketin # apt-get purge autossh // Poistaa paketin ja sen konfiguraatio-tiedostot # apt-get download autossh // Lataa paketin nykyiseen hakemistoon # apt-get source autossh // Lataa paketin lähdekoodin ja purkaa sen hakemistoon # apt-get --download-only source autossh // Lataa paketin lähdekoodin nykyiseen hakemistoon # apt-get changelog autossh // Lataa paketin muutoslogin # apt-get check // Tarkastaa hajonneet riippuvuudet # apt-get clean // Poistaa paketit cachesta # apt-get autoclean // Poistaa paketit archivesta
Toisin kuin remove, autoremove poistaa myös paketin riippuvuudet.
# apt-get remove tftpd ... The following packages will be REMOVED: tftpd ... # apt-get autoremove tftpd ... The following packages will be REMOVED: libfile-copy-recursive-perl openbsd-inetd tftpd update-inetd ...
apt-cachea voidaan käyttää pakettien etsimiseen. search optiolla voidaan etsiä hakusanalla, show näyttää paketin tiedot, showpkg riippuvuudet ja pkgnames näyttää paketit jotka sisältävät hakusanan.
# apt-cache search autossh autossh - Automatically restart SSH sessions and tunnels # apt-cache show autossh Package: autossh Version: 1.4d-1 Installed-Size: 119 ... # apt-cache pkgnames tftp tftpd-hpa tftp tftp-hpa-dbg tftp-hpa tftpd # apt-cache showpkg tftp ... Reverse Depends: tftp-hpa,tftp debian-edu-config,tftp Dependencies: 0.17-18 - netbase (0 (null)) libc6 (2 2.3) netstd (0 (null)) ...
dpkg
dpkg on alemmantason työkalu pakettien hallintaan. dpkg ei osaa hakea riippuvuuksia automaattisesti. Osa optioista vaatii paketin tiedostonimen.
# dpkg -i tftpd_0.17-18_amd64.deb // Asentaa paketin dpkg: dependency problems prevent configuration of tftpd: tftpd depends on openbsd-inetd | inet-superserver; however: Package openbsd-inetd is not installed. Package inet-superserver is not installed. Package openbsd-inetd which provides inet-superserver is not installed. # dpkg -r tftpd // Poistaa paketin # dpkg -p tftpd // Poistaa paketin ja konfiguraatio-tiedostot # dpkg -l tftpd // Listaa asennetut paketit tai optiolla tietyn paketin # dpkg -s tftpd // Näyttää onko paketti asennettu ja paketin tiedot # dpkg -L tftpd // Listaa asennetun paketin tiedostot # dpkg -c tftpd_0.17-18_amd64.deb // Listaa paketin sisällön ... drwxr-xr-x root/root 0 2010-09-24 19:52 ./usr/sbin/ -rwxr-xr-x root/root 15784 2010-09-24 19:52 ./usr/sbin/in.tftpd drwxr-xr-x root/root 0 2010-09-24 19:52 ./usr/share/ drwxr-xr-x root/root 0 2010-09-24 19:52 ./usr/share/man/ ... # dpkg -R --install hakemisto/ // Asentaa kaikki deb-paketit tietystä hakemistosta # dpkg --unpack tftpd_0.17-18_amd64.deb // Purkaa paketin sisällön, mutta ei asenna # dpkg --configure tftpd // Konfiguroi puretun paketin
YUM
Yellowdog Updater Modified on Red Hat-pohjaisten Linuxien pakettienhallintatyökalu.
# yum install openssh // Asentaa paketin # yum install openssh --downloadonly // Lataa paketin # yum install openssh --downloadonly --downloaddir=. // Lataa paketin nykyiseen hakemistoon # yum install openssh --skip-broken // Ohittaa hajonneet riippuvuudet # yum reinstall openssh // Uudelleenasentaa paketin # yum downgrade openssh // Plaa paketin aiempaan versioon # yum check update // Tarkastaa saatavilla olevat päivitykset # yum -y update // Päivittää paketit, y -optiolla ei kysele varmistusta # yum update openssh // Päivittää paketin ja asentaa riippuvuudet # yum remove openssh // Poistaa paketin # yum list openssh // Etsii tietyn paketin # yum list installed // Listaa asennetut paketit # yum search openssh // Etsii paketi(t)n hakusanan perusteella # yum info openssh // Näyttää tiedot paketista # yum provides /etc/ssh/sshd_config // Näyttää mille paketille tietty tiedosto kuuluu ... openssh-server-7.4p1-11.el7.x86_64 : An open source SSH server daemon Repo : base Matched from: Filename : /etc/ssh/sshd_config ... # yum grouplist // Listaa ryhmäpaketit ... Available Environment Groups: Minimal Install Compute Node Infrastructure Server ... # yum groupinstall 'Compute Node' // Asentaa ryhmäpaketin # yum groupupdate 'Compute Node' // Päivittää ryhmäpaketin # yum groupremove 'Compute Node' // Poistaa ryhmäpaketin # yum repolist // Listaa pakettilähteet # yum repolist all // Listaa pakettilähteet käytössä olevat ja listatut # yum --enablerepo=centosplus install perf // Asentaa paketin tietystä pakettilähteestä # yum history // Listaa yumin historian Loaded plugins: fastestmirror ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 10 | root| 2017-11-28 18:44 | Update | 3 9 | root | 2017-11-22 10:28 | Install | 23 ...
yum-utils -paketti sisältää työkaluja yumin ja pakettilähteiden hallintaan.
# yum install -y yum-utils # yum-config-manager --enable centosplus // Aktivoi pakettilähteen # yum-config-manager --disable centosplus // Deaktivoi pakettilähteen # yum-config-manager --add-repo=REPO // Lisää pakettilähteen tietystä osoitteesta tai tiedostosta
RPM
Red Hat Package Manager on alemman tason pakettienhallintatyökalu. v -optiolla saa yleensä enemmän irti komennosta.
# rpm -i tftp-5.2-13.el7.x86_64.rpm // Asentaa paketin # rpm -ivh tftp-5.2-13.el7.x86_64.rpm // Asentaa paketin, tulostaa infon Preparing... ################################# [100%] Updating / installing... 1:tftp-5.2-13.el7 ################################# [100%] # rpm -U tftp-5.2-13.el7.x86_64.rpm // Päivittää paketin # rpm -e tftp // Poistaa paketin # rpm -Va // Tarkastaa mahdolliseseti puuttuvat paketit # rpm -qip tftp-5.2-13.el7.x86_64.rpm // Listaa paketin tiedot # rpm -qlpv tftp-5.2-13.el7.x86_64.rpm // Listaa paketin tiedostot -rwxr-xr-x 1 root root 32632 Nov 5 2016 /usr/bin/tftp drwxr-xr-x 2 root root 0 Nov 5 2016 /usr/share/doc/tftp-5.2 -rw-r--r-- 1 root root 10445 Dec 12 2011 /usr/share/doc/tftp-5.2/CHANGES -rw-r--r-- 1 root root 903 Dec 12 2011 /usr/share/doc/tftp-5.2/README -rw-r--r-- 1 root root 2628 Nov 5 2016 /usr/share/doc/tftp-5.2/README.security -rw-r--r-- 1 root root 2686 Nov 5 2016 /usr/share/man/man1/tftp.1.gz # rpm -ql tftp // Listaa asennetun paketit tiedot # rpm -qil tftp // Listaa paketin asentamat tiedostot /usr/bin/tftp /usr/share/doc/tftp-5.2 /usr/share/doc/tftp-5.2/CHANGES /usr/share/doc/tftp-5.2/README /usr/share/doc/tftp-5.2/README.security /usr/share/man/man1/tftp.1.gz # rpm -qf /usr/bin/passwd // Kertoo mihin pakettiin tiedosto sisältyy passwd-0.79-4.el7.x86_64 # rpm2cpio tftp-5.2-13.el7.x86_64.rpm | cpio -idmv // Purkaa paketin sisällön nykyiseen hakemistoon
Ohjelmien ja kirjastojen riippuvuuksien selvittäminen
Joskus vastaan voi tulla tilanne, että ympäristö vaatii kirjastojen ja ohjelman riippuvuuksien selvittämistä. ldd-komento kertoo tietyn ohjelman riippuvuudet. ldd voi joissakin tapauksissa kutsua itse ohjelmaa, mikä ei kolmannen osapuolen ohjelmistojen yhteydessä ole tietoturvan kannalta suotavaa. objdump on toinen vaihtoehto kaivettaessa tietoa tiedostoista.
# ldd /usr/bin/tftp linux-vdso.so.1 => (0x00007fffaa170000) libreadline.so.6 => /lib64/libreadline.so.6 (0x00007fe7facad000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fe7faa83000) libc.so.6 => /lib64/libc.so.6 (0x00007fe7fa6bf000) /lib64/ld-linux-x86-64.so.2 (0x000055f490611000) # objdump -p /usr/bin/tftp |grep NEEDED NEEDED libreadline.so.6 NEEDED libtinfo.so.5 NEEDED libc.so.6
Ajossa olevien prosessien riippuvuuksia voidaan tutkia pldd -komennolla antamalla kommennolle pid.
# pldd 2284 2284: /usr/bin/tftp linux-vdso.so.1 /lib64/libreadline.so.6 /lib64/libtinfo.so.5 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 /lib64/libnss_files.so.2