Topic 102 - Linux-Installation und Paket-Management

Topic 102.1 - Design hard disk layout

⇒ Seite 57

ZIEL: Linux-Server stabil betreiben, ohne dass die Festplatten voll laufen können.

Wir haben bei der Installation bereits Vorsorge getroffen, die veränderlichen Daten liegen auf separaten Partitionen:

df -h  /home
df -h  /var
df -h  /tmp

FRAGE 1: Welche Problem kann es mit '/boot' geben?

  • Durch veraltete BIOS-Versionen konnte der Bootloader u.U. nicht über die Grenze von 1024-Zylinders zugreifen (ca. 8GB), wenn dabei

  • LILO als Bootmanager zum Einsatz kam.

  • Deshalb musste dann eine separate, kleine /boot-Partition am Anfang der Festplatte angelegt werden.

FRAGE 2: Welche Verzeichnisse müssen auf der Wurzel-Partition verbleiben (Systemrelevant)?

  • /dev, /proc/, /sys, /etc, /bin, /sbin, /lib, …​ (Siehe auch Screenshot)

Was sollte der Admin auslagern (Nutzer können dort schreiben!):

  • /tmp, /var, /home

Partitionierung

  1. Part.: Größe 300 MB ⇒ Primär ⇒ Anfang ⇒ Dateisystem: ext4 ⇒ Einbindungspunkt: /boot [/dev/sda1]

  2. Part.: Größe 30 GB ⇒ Logisch ⇒ Anfang ⇒ Dateisystem: btrfs ⇒ Einbindungspunkt: / ⇒ (Name: root) [/dev/sda5]

  3. Part.: Größe 1 GB ⇒ Logisch ⇒ Anfang ⇒ Dateisystem: btrfs, ⇒ Einbindungspunkt: /tmp [/dev/sda6]

  4. Part.: Größe 3 GB ⇒ Logisch ⇒ Anfang ⇒ Dateisystem: btrfs, ⇒ Einbindungspunkt: /var [/dev/sda7]

  5. Part.: Größe 5 GB ⇒ Logisch ⇒ Anfang ⇒ Dateisystem: xfs, ⇒ Einbindungspunkt: /home [/dev/sda8]

  6. Part.: Größe 2 GB (Doppelte RAM-Größe) ⇒ Benutzen als: Swap (kein Einbindungspunkt) [/dev/sda9]

Abschluss der Installation, weitere Schritte:

  • Alles bestätigen

  • Auf zweite Konsole schalten: STRG + ALT + F2

    • Disk free, human readeable: df -h (/target ist temporärer Mountpunkt, nach Booten wird daraus root)

    • RAM free: free

  • Netzwerkspiegel verwenden: Ja, bitte einen Server in Ihrer Nähe wählen

  • Grub-Bootloader in den MBR installieren

  • MBR-Ort per Cursur-nach-unten auswählen: /dev/sda (keine Partitionsnummer!!)

  • Installation abschließen, Neustart (Bitte

Software aktualisieren, Gasterweiterungen installieren:

  • Im Terminal als root: apt-get update && apt-get -y upgrade

  • Neustart (reboot, oder shutdown -r now)

  • Gasterweiterungen installieren:

    • Geräte ⇒ Medium mit Gasterweiterungen einlegen

    • CD mounten: mount /dev/sr0 /mnt

    • Auf CD wechseln: cd /mnt

    • Erweiterungen installieren: ./VBoxLinuxAdditions.run

    • X-Server (gewaltsam) neu starten: killall Xorg

  • Gast-Maschine exportieren:

    • Gast herunterfahren als root mit shutdown -h now

    • Im VirtualBox-Hauptfenster den Export-Assistenten ausführen: 'DATEI / APPLIANCE EXPORTIEREN …​'

Logical Volume Manager

Was ist das?

Aus einer LPI-Püfung:

What can the Logical Volume Manager (LVM) be used for? (Choose THREE correct answers.)

  1. To create RAID 9 arrays.

  2. To dynamically change the size of logical volumes.

  3. To encrypt logical volumes.

  4. To create snapshots.

  5. To dynamically create or delete logical volumes.

Richtige Antworten: B, D, E

Im Experiment:

Eine zweite Festplatte einbauen (VBox: Massenspeicher / Controller SATA markieren, '+' anklicken…​)

root@deb8:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk
├─sda1   8:1    0  8,4G  0 part /
├─sda2   8:2    0    1K  0 part
├─sda5   8:5    0  2,8G  0 part /var
├─sda6   8:6    0  3,4G  0 part [SWAP]
├─sda7   8:7    0  380M  0 part /tmp
└─sda8   8:8    0   35G  0 part /home
sdb      8:16   0    8G  0 disk
sr0     11:0    1 55,5M  0 rom  /media/cdrom0
root@deb8:~#

Installation und Einrichtung:

apt-get install lvm2


# Physische Kennung für LVM erzeugen
root@deb8:~# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
root@deb8:~#


# Volumengroup erzeugen
root@deb8:~# vgcreate backup /dev/sdb
  Volume group "backup" successfully created
root@deb8:~#


# Volumes erzeugen
root@deb8:~# lvcreate -n doc -L 3G backup
  Logical volume "doc" created
root@deb8:~#
root@deb8:~# lvcreate -n app -L 2G backup
  Logical volume "app" created
root@deb8:~#


# Kontrolle
root@deb8:~# pvs
  PV         VG     Fmt  Attr PSize PFree
  /dev/sdb   backup lvm2 a--  8,00g 3,00g
root@deb8:~#
root@deb8:~# vgs
  VG     #PV #LV #SN Attr   VSize VFree
  backup   1   2   0 wz--n- 8,00g 3,00g
root@deb8:~#
root@deb8:~# lvs
  LV   VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  app  backup -wi-a----- 2,00g
  doc  backup -wi-a----- 3,00g
root@deb8:~#

# Dateisystem aufbringen
root@deb8:~# mke2fs /dev/backup/doc
mke2fs 1.42.12 (29-Aug-2014)
Ein Dateisystems mit 786432 (4k) Blöcken und 196608 Inodes wird erzeugt.
UUID des Dateisystems: 7b7adc78-9537-4197-88b4-efbcd8dacc33
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

root@deb8:~#
# Mounten und kontrollieren
root@deb8:~# mount /dev/backup/doc /mnt
root@deb8:~#
root@deb8:~# ls -l /mnt/
insgesamt 16
drwx------ 2 root root 16384 Mai 12 16:47 lost+found
root@deb8:~#
root@deb8:~# df -h /mnt/
Dateisystem            Größe Benutzt Verf. Verw% Eingehängt auf
/dev/mapper/backup-doc  3,0G    4,5M  2,8G    1% /mnt
root@deb8:~#
root@deb8:~# mount | tail -1
/dev/mapper/backup-doc on /mnt type ext2 (rw,relatime)
root@deb8:~#

Bitte nicht gesamten Platz für Volumes aufbrauchen, da sonst keine LVM-Snapshots angelegt werden können.

Man nutzt u.a. gern Snapshots, um das Wurzeldateisystem überhaupt mit 'fsck' prüfen zu können.

Topic 102.2 - Install a boot manager

⇒ Seite 60 ff

Bootloader für Linux

a) LILO (veraltet, 1024-Zylinder-Problem)

b) GRUB (neu, zwei Versionen)

Unterschiede zwischen GRUB 1 und GRUB 2

Der veraltete (legacy) GRUB 1

  • Konfigurationsdatei: /boot/grub/menu.lst

    • Schlüsselwort für die Kernel-Zeile (Übergabe von Bootparametern): 'kernel'

      z.B.:     kernel  /boot/vmlinuz-3.2.4 root=/dev/sda1
  • Interaktive GRUB-Shell vorhanden (S. 62): Kommando: 'grub'

  • Bezeicher für /boot-Partition z.B. für 1. Festplatte, 1. Partition: hd0,0

    • Beispiel: root (hd0,0)

    • ACHTUNG: HIER BEGANN MAN BEI DEN PARTITIONEN UNGEWÖHLICHERWEISE MIT NULL ZU ZÄHLEN AN!

Der neue GRUB 2

  • Konfigurationsdatei: /boot/grub/grub.cfg

    • Schlüsselwort für die Kernel-Zeile (Übergabe von Bootparametern): 'linux'

      z.B.:     linux  /boot/vmlinuz-3.2.4 root=/dev/sda1
  • Interaktive GRUB-Shell NICHT mehr vorhanden

  • Bezeicher für /boot-Partition z.B. für 1. Festplatte, 1. Partition: hd0,1

    • Beispiel: root (hd0,1)

Gemeinsamkeiten der beiden GRUB-Versionen:

  • Zweistufig

    • Stage 1: /boot mounten, Kernel + Initrd in den RAM bringen

    • Stage 2: sysVinit bzw. Systemd starten, den Rest mounten (siehe /etc/fstab)

  • Installation von Stage 1 (Bootcode im MBR, 444 Byte von insgesamt 512 Byte)

    • BEISPIEL: mount /dev/sda1 /mnt grub-install --root-directory=/mnt /dev/sda

      FRAGE DAZU: Wo befindet sich in dem Falle, wenn wir die Wurzelpartition unter /mnt gemountet haben, das Verzeichnis namens 'grub'? ANTWORT: Unter /mnt/boot (Gesamter Verzeichnispfad: /mnt/boot/grub)

  • Eine weitere Gemeinsamkeit ist die Art, wie eine neue Konfigurationsdatei erzeugt wird:

    • Allgemein mit dem Kommando 'grub-mkconfig'

An dieser Stelle leiten wir nur mal in eine temoräre Datei um:

root@deb8:~# grub-mkconfig  > /tmp/grub.cfg
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Linux-Abbild gefunden: /boot/vmlinuz-3.16.0-4-amd64
initrd-Abbild gefunden: /boot/initrd.img-3.16.0-4-amd64
Found memtest86+ image: /boot/memtest86+.bin
Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
erledigt
root@deb8:~#

Viele Distributionen haben allerding ihre eigenen Tools, bei Debian ist das 'update-grub':

root@deb8:~# update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Linux-Abbild gefunden: /boot/vmlinuz-3.16.0-4-amd64
initrd-Abbild gefunden: /boot/initrd.img-3.16.0-4-amd64
Found memtest86+ image: /boot/memtest86+.bin
Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
erledigt
root@deb8:~#
root@deb8:~# find /boot/ -cmin 1
/boot/grub
/boot/grub/grub.cfg
root@deb8:~#

Weitere Tipps und Dokumentation zu diesem Thema unter http://pemmann.de/doc/lpi1/101/2016-01-08/whlg-lvm-grub.html

Topic 102.3 - Manage shared libraries

Siehe Seite 64 ff

Zum Einstieg:

  • Parallele zu Windows? ⇒ dll-Dateien

  • 'whatis ld' - The GNU linker (= das Hauptwerkzeug)

  • Was ist der Vorteil? ⇒ Schlankere Anwendungen (sie greifen auf gemeinsame Funktionsbibliotheken zurück)

  • Ist das sicherer als bei statisch gelinkten Programmen? NEIN! Ein Fehler in der Library und alle Apps haben ihn sofort auch.

  • Gibt es Programme, die keine shared Libs benötigen? Ja, früher z.B. Opera-Browser, Stichwort: portable Apps)

Abhängigkeiten ausgeben mit ldd

Gegeben sei ein Programm: 'grep' (Searching with regulary ExPressions)

  • Zuerst ermitteln wir, wo es im Dateisystem liegt (über den Suchpfad der Shell hinweg auch gern mittels 'which')

  • Danach lassen wir uns mit 'ldd' die Abhängigkeiten ausgeben

tux@deb8-2:~$ type grep
grep ist /bin/grep
tux@deb8-2:~$
tux@deb8-2:~$ ldd /bin/grep
        linux-vdso.so.1 (0x00007ffe8cf8a000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2b4836e000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2b4816a000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2b47dc1000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2b47ba4000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2b4880f000)
tux@deb8-2:~$

Am Beispiel unserer vermeintlich portablen App 'iron':

tux@deb8:~$ tar zxf iron-linux-64.tar.gz
tux@deb8:~$
tux@deb8:~$ cd iron-linux-64/
tux@deb8:~/iron-linux-64$
tux@deb8:~/iron-linux-64$ file iron
iron: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter
  /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.26, BuildID[sha1]=caa29fe2e, not stripped
tux@deb8:~/iron-linux-64$
tux@deb8:~/iron-linux-64$ du -sh .
219M        .
tux@deb8:~/iron-linux-64$ ldd iron
        linux-vdso.so.1 (0x00007ffc19fda000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f39580fc000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3957ef8000)
        ...

Wir sehen hier deutlich, dass nach Shared Libraries auf dem vorliegenden Linux-System gesucht wird.

Testweise das Programm natürlich auch mal starten: ./iron &

Eine wichtige Fragestellung, die mit 'ldd' beantwortet werden kann ist außerdem: "Kann der SSH-Server mittels dem 'tcpd' (/etc/hosts.allow bzw. /etc/hosts.deny) abgesichert werden?" Ja, wenn er gegen die 'libwrap' gelinkt ist. Und das ist hier der Fall:

root@deb8:~# ldd `which sshd` | grep --color wrap
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f695be0e000)
root@deb8:~#

HINWEIS für die LPI-Prüfung: Es lassen sich auch Bibliotheken abfragen:

root@deb8:~# ldd /lib/x86_64-linux-gnu/libresolv-2.19.so
        linux-vdso.so.1 (0x00007ffce804e000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007feca408e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007feca4650000)
root@deb8:~#

Den Cache erzeugen mit ldconfig

  • 'whatis ldconfig' - configure dynamic linker run-time bindings

    • Erzeugt nach Änderungen in den Configs (i.d.R. '/etc/ld.so.conf') einen neuen Cache

  • Die Datenbank-Cachedatei: '/etc/ld.so.cache'

Im Experiment:

root@deb8:~# ldconfig
root@deb8:~#
root@deb8:~# find /etc/ -cmin 1
/etc/
/etc/ld.so.cache
root@deb8:~#

root@deb8:~# file /etc/ld.so.cache
/etc/ld.so.cache: data
root@deb8:~#

root@deb8:~# strings /etc/ld.so.cache | head -7
ld.so-1.7.0
glibc-ld.so.cache1.1
libzzipwrap-0.so.13
/usr/lib/x86_64-linux-gnu/libzzipwrap-0.so.13
libzzipmmapped-0.so.13
/usr/lib/x86_64-linux-gnu/libzzipmmapped-0.so.13
libzzipfseeko-0.so.13
root@deb8:~#

Konfiguration der Suchpfade für Libraries

Dank des mit 'ldconfig' zu erzeugenden Caches ist ein schnelles Auffinden der einzelnen Bibliotheken kein Problem. Es gibt keine Textdateien, in denen alle Libs vermerkt sind, sondern eine zu bildende Datenbankdatei, die '/etc/ld.so.cache' heißt.

Konfiguration: In der Datei '/etc/ld.so.conf' können die einzelnen Pfade direkt hinterlegt werden, in denen dann 'ldconfig' nach den .so-Dateien sucht (Shared Objects) und den Cache daraus baut.

Neuerstellen des Caches und Prüfen des Inhaltes

Nach Installation oder Einbindung neuer Bibliotheken muss wie bereits erwähnt ldconfig ausgeführt werden. (zur Konrolle Zeitstempel vergleichen: ls -ld /etc/ld.so.c*)

Wichtig ist es für die LPI-Prüfung außerdem zu wissen, wie man den Inhalt des Caches ausgeben (= printing) kann: ldconfig -p

Einfaches Bereitstellen von Libraries via Variable

  • Ein einfacher Nutzer kann sich seinen Lib-Pfad selbst konfigurieren

  • Libs liegen angenommen unter '~/mylibs'

  • Variable erstellen und zugleich exportieren: ‘export LD_LIBRARY_PATH="~/mylibs"’

Fragen - ???

Topic 102.4 - User Debian package management

Seite 66 ff

Das Debian Backend dpkg

Der "Debian Packager" ist das eigentliche Werkzeug, welches das Entpacken und Ausrollen von Debian Paketen (Datei-Suffix: .deb) durchführt.

Welches Archivformat liegt hierbei vor? 'ar' (archiver). Das Paket 'dos2unix' im Experiment lediglich herunterladen und entpacken:

root@deb8:~# apt-get -d install dos2unix
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
  libgssapi3-heimdal libheimntlm0-heimdal
Verwenden Sie »apt-get autoremove«, um sie zu entfernen.
Die folgenden NEUEN Pakete werden installiert:
  dos2unix
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen 77,8 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 314 kB Plattenplatz zusätzlich benutzt.
Holen: 1 http://ftp.tu-chemnitz.de/pub/linux/debian/debian/ jessie/main dos2unix amd64 6.0.4-1 [77,8 kB]
Es wurden 77,8 kB in 0 s geholt (733 kB/s).
Herunterladen abgeschlossen; Nur-Herunterladen-Modus aktiv
root@deb8:~#
root@deb8:~#
root@deb8:~# mkdir dos2unix
root@deb8:~#
root@deb8:~# cd dos2unix/
root@deb8:~/dos2unix#
root@deb8:~/dos2unix# ar x /var/cache/apt/archives/dos2unix_6.0.4-1_amd64.deb
root@deb8:~/dos2unix#
root@deb8:~/dos2unix# ls -l
insgesamt 84
-rw-r--r-- 1 root root  1391 Mai 19 16:17 control.tar.gz
-rw-r--r-- 1 root root 76184 Mai 19 16:17 data.tar.xz
-rw-r--r-- 1 root root     4 Mai 19 16:17 debian-binary
root@deb8:~/dos2unix#

Der Packager 'dpkg' ist ein sehr intelligentes Werkzeug, das alles kann außer:

  • Downloads via Netzwerk durchführen

  • Paketabhängigkeiten selbständig auflösen (In begrenztem Maße dank Wildcard '*': dpkg -i *.deb)

Beispiele:

  • Installation eines Paketes: dpkg -i /var/cache/apt/archives/dos2unix_6.0.4-1_amd64.deb (Anwendung, z.B. unix2dos mytextfile.txt)

  • Auflisten aller installierten Pakete: dpkg -l oder ausführlich dpkg --list (listing, Filtern: dpkg -l | grep smb)

  • Auflisten aller Dateien, zum installierten Paket gehören: dpkg -L bash oder ausführlich dpkg --listfiles bash
    (Nach config-files suchen: dpkg -L bash | grep rc ⇒ bei der bash mit "rc" = run command oder ressource control)

  • Nach dem Paketnamen suchen, aus dem eine vorgefundene Datei stammt: -S bzw. --search

    root@deb8:~# dpkg -S /usr/bin/unix2mac
    dos2unix: /usr/bin/unix2mac
    root@deb8:~#
  • Ausgeben von Informationen: dpkg -s bash oder alternativ: dpkg --status bash (Für die Prüfung: nicht --info merken!!)

  • Ausgeben, welche Pakete nur teilweise installiert sind (and suggest how to get them correctly installed): dpkg -C oder alternativ: dpkg --audit

  • Selections vornehmen: 'echo "fglrx-driver hold" | dpkg –set-selections' Siehe auch http://debiananwenderhandbuch.de/dpkg.html

  • Entfernen eines einzelnen Paketes (Config-files verbleiben im System): dpkg -r fortune-mod

  • Komplettes entfernen eines einzelnen Paketes (Config-files werden ebenfalls gelöscht): dpkg -P fortune oder mit langer Option`--purge`

  • Paket neu konfigurieren (Starten eines Assistenten): dpkg-reconfigure keyboard-configuration

    • Installation von 'fortune' unter Debian

  • Vorbereitung mit Option "download only": apt-get -d install fortune, dabei wird automatisch das Paket
    'fortune-mod' ausgewählt und mitsamt Abgängigkeiten nach '/var/cache/apt/archives' heruntergeladen

  • Wegen den Abhängigkeiten erfolgt die Installation dann so:

    • Ins Downloadverzeichnis wechseln: cd /var/cache/apt/archives

    • Nachsehen, was soeben heruntergeladen wurde (zeitlich sortiert): ls -ltrc

    • Die betreffenden Pakete alle zusammen angeben (Dateijoker: ): dpkg -i fortune.deb librecode0_3.6-21_amd64.deb

Frontends für Debian

Frontends sorgen dafür, dass die dpkg-Paketdatenbank komfortabel durchsucht und neue Pakete mitsamt Abhängigkeiten via Netzwerk leicht nachinstalliert werden können.

Wichtige Frontends sind:

  • dselect (veraltet)

  • apt-Tools (apt-get, apt-cache, apt-key, …​, apt)

  • aptitude (neu, als preudografisches GUI und als Cmdline-Tool verwendbar)

    • Verwendet eine andere Datenbank als "apt-get"!

    • Das Feature, in Abhängigkeit mit installierte Pakete automatisch zu entfernen, beherrscht heute 'apt-get' ('apt-get autoremove', s.u.)

  • dselect

  • synaptic (GUI-Werkzeug für X-Window)

Konfiguration der apt-Repositories

Im Prinzip kann man alle Quellen in einer Datei hinterlegen, der /etc/apt/sources.list. Das unten notierte Beispiel beinhaltet die klassischen drei Zeilen für die aktuelle, stabile Distribution 'jessie'. Die Komponenten "contrib" und "non-free" (Zeile 1) fehlen bei einer standardmäßigen Installation, können aber jederzeit nachgetragen werden. So werden z.B. oft die Pakete

  • 'flashplugin-nonfree' (Flash-Player für Firefox)

  • 'firmware-iwlwifi' (Binary firmware for Intel Wireless cards)

benötigt. Wir lassen uns mit der folgenden Zeile den aktiven Inhalt der Datei ausgeben:

=> grep -v ^# /etc/apt/sources.list
deb http://ftp.tu-chemnitz.de/pub/linux/debian/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main
deb http://ftp.tu-chemnitz.de/pub/linux/debian/debian/ jessie-updates main

Nach Änderungen in dieser Datei bitte immer zuerst die aktuellen Paketlisten herunterladen:

=> apt-get update           # Im Vergleich: 'zypper refresh' (SuSE), 'yum check-update' (RedHat)

Weitere Hinweise zur Konfiguration der Quellen siehe auch:

Eine darüber hinaus gern genutzte Konfigurationsdatei ist die /etc/apt/apt.conf, wenn es darum geht, einen evl. erforderlichen Proxy-Server anzugeben:

Acquire::http::Proxy "http://10.0.0.1:3128";

Nun geht es los - wir suchen nach Paketen und installieren verschiedene:

=> apt-cache search geany   # Suchen nach der Zeichenkette 'geany', = IDE / Editor
=> apt-cache show geany     # Ausführliche Infos ausgeben
=> apt-cache policy nmap    # Versionen ausgeben bei verschiedenen Quellen, Siehe auch 'apt-Pinning'
=> apt-get install geany    # In Abhängigkeit wird 'geany-common' mitinstalliert
=> apt-get remove geany     # Entfernt nur das angegebene Paket, wobei die Configs auf dem System
                            # verbleiben siehe 'dpkg -l geany'
=> apt-get autoremove       # Deinstallieren von überflüssigen, in Abhängigkeit mit installierten Paketen
=> apt-get purge geany      # Entfernt das Paket komplett

Beispiel Installation u. Rekonfiguration des LDAP-Servers

=> apt-get install slapd
=> dpkg-reconfigure slapd

Topic 102.5 - Use RPM and YUM package management

Bereitstellen einer VM für Praxisübungen

  1. Download durchführen

  2. Entpacken…​

  3. VM in Virtualbox erstellen

    => Doppelklick auf die Datei "CentOS 6.3 x86.vbox"
    => VM starten...
  4. Grafischer Login als Nutzer 'centos'

    • Passwort: reverse

    • Tastaturlayout auf Deutsch stellen: 'setxkbmap de'
      (Bei Problemen mit dem Pipe-Zeichen manchmal ein Ausweg: 'setxkbmap us')

RedHat Package Manager

Voraussetzung:

=> yumdownloader dos2unix

Archiv-Format

Zuerst einmal wollen wir uns das interne Archivierungsformat anschauen. Es handelt sich um ein cpio-Archiv, an das man mittels 'rpm2cpio' herankommt:

=> rpm2cpio dos2unix-*.rpm > dos2unix.archiv
=> file dos2unix.archiv
=> rpm2cpio dos2unix-*.rpm | cpio -idm

Nicht installierte Pakete erforschen

Wichtige Option in diesem Zusammenhang: '-p' oder '--package'

Erforschen, Testen und Fragen stellen kann man nur im Query-Modus: '-q' oder '--query'

Die Konfigfiles ausgeben: '-c' oder '--configfiles'

Shell-Mitschnitt

[root@localhost ~]# yumdownloader dos2unix
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
 * base: ftp.halifax.rwth-aachen.de
 * extras: ftp.halifax.rwth-aachen.de
 * updates: centos.bio.lmu.de
dos2unix-3.1-37.el6.i686.rpm                            |  15 kB     00:00
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# file dos2unix-3.1-37.el6.i686.rpm
dos2unix-3.1-37.el6.i686.rpm: RPM v3.0 bin i386/x86_64 dos2unix-3.1-37.el6
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rpm2cpio dos2unix-3.1-37.el6.i686.rpm > dos2unix.archiv
[root@localhost ~]#
[root@localhost ~]# file dos2unix.archiv
dos2unix.archiv: ASCII cpio archive (SVR4 with no CRC)
[root@localhost ~]#

dos2unix.archiv: ASCII cpio archive (SVR4 with no CRC)
[root@localhost ~]#
[root@localhost ~]# rpm2cpio dos2unix-3.1-37.el6.i686.rpm | cpio -idm
37 blocks
[root@localhost ~]#
[root@localhost ~]# ls -ltr
total 60
-rw-r--r--. 1 root root 15824 Jul  3  2011 dos2unix-3.1-37.el6.i686.rpm
-rw-r--r--. 1 root root 12148 Jul  7  2012 post-install
-rw-r--r--. 1 root root   550 Jul  7  2012 post-install.log
-rw-------. 1 root root   956 Jul 10  2012 anaconda-ks.cfg
-rw-r--r--. 1 root root 18556 May 24 16:31 dos2unix.archiv
drwxr-xr-x. 4 root root  4096 May 24 16:33 usr
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rpm --package --query dos2unix-3.1-37.el6.i686.rpm
dos2unix-3.1-37.el6.i686
[root@localhost ~]#
[root@localhost ~]# rpm --query dos2unix-3.1-37.el6.i686.rpm
package dos2unix-3.1-37.el6.i686.rpm is not installed
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rpm --package --query --changelog dos2unix-3.1-37.el6.i686.rpm | head -15
* Wed Mar 03 2010 Tim Waugh <twaugh@redhat.com> 3.1-37
- Added comments for all patches.

* Mon Nov 30 2009 Dennis Gregorovic <dgregor@redhat.com> - 3.1-36.1
- Rebuilt for RHEL 6

* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1-36
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1-35
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Wed Sep 24 2008 Tim Waugh <twaugh@redhat.com> 3.1-34
- Moved 'make clean' to prep section and added comment about there
  being no upstream (bug #225706).
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rpm -q -p -c dos2unix-3.1-37.el6.i686.rpm    # Das Paket besitzt kein Config-File
[root@localhost ~]# rpm -q -p -l dos2unix-3.1-37.el6.i686.rpm
/usr/bin/dos2unix
/usr/bin/mac2unix
/usr/share/doc/dos2unix-3.1
/usr/share/doc/dos2unix-3.1/COPYRIGHT
/usr/share/man/man1/dos2unix.1.gz
/usr/share/man/man1/mac2unix.1.gz
[root@localhost ~]#
[root@localhost ~]# rpm -qpl dos2unix-3.1-37.el6.i686.rpm
/usr/bin/dos2unix
/usr/bin/mac2unix
/usr/share/doc/dos2unix-3.1
/usr/share/doc/dos2unix-3.1/COPYRIGHT
/usr/share/man/man1/dos2unix.1.gz
/usr/share/man/man1/mac2unix.1.gz
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# man rpm | grep '\-c'
       rpm {-K|--checksig} [--nosignature] [--nodigest]
        [--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
       --changelog
       -c, --configfiles
       rpm {--checksig} [--nosignature] [--nodigest]
       The --checksig option checks all the digests and  signatures  contained
       --checksig  is useful to verify all of the digests and signatures asso-
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# rpm -qp --configfiles dos2unix-3.1-37.el6.i686.rpm
[root@localhost ~]#

Kommandozeilenfrontend yum

Am besten, wir vergleichen es mit Debians Frontend 'apt':

Debian

RedHat

/etc/apt/sources.list

Dateien unter /etc/yum.repos.d

apt-get update

yum check-update

apt-get upgrade

yum update

apt-get dist-upgrade

yum upgrade (entspricht 'yum --obsoletes update')

apt-cache search BEGRIFF

yum search BEGRIFF

apt-get install PACKAGE

yum search PACKAGE

apt-get -d install PACKAGE

yumdownloader PACKAGE

apt-cache show PACKAGE

yum info PACKAGE

yum-Spezialität - Paketgruppen

Installation von Paketgruppen (Serverkomponenten, Desktop)

=> yum grouplist
=> yum groupinstall "Web Server"
=> yum groupremove "Web Server"

VBox Gasterweiterungen installieren

a) Software installieren

  • 'yum install dkms'

  • 'yum groupinstall "Development Tools"'

  • 'yum install kernel-devel'

b) Gast-Erweiterungen installieren

  • Im VBox-Gastfenster unter Geräte ⇒ Gasterweiterungen einlegen

  • Mounten der CD: 'mount /dev/sr0 /mnt'

  • Kompilieren und Installieren der Treiber: '/mnt/VBoxLinuxAddition.run'

  • Logout/Login oder Neustart…​