• Keine Ergebnisse gefunden

Software unter Linux 2 Software unter Linux 1 Inhalt Software/Paketverwaltung

N/A
N/A
Protected

Academic year: 2021

Aktie "Software unter Linux 2 Software unter Linux 1 Inhalt Software/Paketverwaltung"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Foliensatz 3

Software/Paketverwaltung

Inhalt

• Software unter Linux

• Geschichtliches

• Softwarepaketverwaltung

• Repositories und Pakete

• Befehle

• Paketverwaltung mit Puppet

Software unter Linux 1

Unter Linux gibt es eine andere Herangehensweise an Software als unter Microsoft Windows oder Apple Mac OS X.

Während in den letzteren zwei Betriebssystem die Dateien einer Applikation zumeist in einem einzigen Verzeichnis zu finden sind, sind die Dateien einer Applikation unter Linux auf mehrere Verzeichnisse aufgeteilt:

• /bin/ → Hier liegen die ausführbaren Dateien, wenn sie für den Systembetrieb wichtig sind.

• /usr/bin/ → Hier liegen alle sonstigen ausführbaren Dateien.

• /usr/lib/ → Hier liegen die benötigten Bibliotheken.

• /usr/share/APP_NAME/ → Hier liegen Datendateien (z.B. Bilder).

• /usr/share/doc/PAKET_NAME → Hier findet man die Dokumentation zum Paket.

• /usr/share/man/ → In diesem Verzeichnisbaum werden die Manpages abgelegt.

• /sbin/ und /usr/sbin/ → Ausführbare Dateien für den Administrator

Software unter Linux 2

• Unter Windows installieren alle Applikationen alle benötigten Bibliotheken, die nicht auf dem System installiert sind, entweder in das System- oder das Applikationsverzeichnis.

• Im Gegensatz dazu wird unter Linux eine Bibliothek nur einmal separat von den Applikationen installiert (in /usr/lib/) und alle Applikationen können darauf zugreifen. Durch die standardisierten Bibliotheksnamen und die Verwendung symbolischer Links ist es auch möglich, mehrere Versionen ein und derselben Bibliothek auf einem System installiert zu haben.

• Das System von Linux hat mehrere Vorteile:

• Es ist bekannt, wo sich alle Bibliotheken befinden und welche installiert sind.

• Weniger Speicherplatz wird gebraucht.

• Bei Sicherheitsproblemen muss man die Bibliothek nur an einer Stelle austauschen.

• Das hat aber auch zur Folge, dass man sicherstellen muss, dass alle benötigten Komponenten für

(2)

eine Applikation installiert sind. Hier kommt die Softwarepaketverwaltung von Linux ins Spiel.

Geschichtliches

• Fast alle Softwarepakete, die für Linux verfügbar sind, können gratis benutzt werden (z.B. jede GNU Software). Alleine bei einer Basisinstallation werden hunderte wichtige Pakete installiert. Ohne diesen Grundgedanken der freien Software wäre Linux nicht das, was es jetzt ist!

• Als der Linux Kernel noch sehr jung war (Anfang der 90er Jahre), haben die Softwareentwickler in der Linux-Community rasch festgestellt, dass es zwar gut ist, frei verfügbare Software zu haben, aber dass man es den meisten Benutzern nicht zumuten kann, diese selbst zu kompilieren. Neben dem Kernel braucht man ja noch jede Menge anderer Software (Shell, C-Bibliothek, …), um ein funktionierendes System zu erhalten.

• Das Ergebnis war, dass man den Linux-Kernel und die nötige Software im Binärformat in Softwarepaketen in einer sogenannten Distribution zur Verfügung stellte. Gab es ganz am Anfang nur sehr primitive Mittel, um den Linux-Kernel und die Software mittels so einer Distributionen zu installieren, ging die Entwicklung rasch voran und schon 1993 gab es die ersten Distributionen auf Basis von dpkg (Debian) und rpm (Red Hat).

Softwareverzeichnisse

• Die meisten Open Source Projekte können nicht wie Firmen durch Marketing auf sich aufmerksam machen, da sie einfach nicht das Geld dafür haben. Viele Entwickler haben nicht einmal selbst einen Webserver, um die Software zu publizieren.

• Dadurch gab es schon sehr früh Dienste, die es Entwicklern ermöglichte, Softwareprojekte einfach durchzuführen. Dazu stellen diese Dienste Webspace, Issue Tracker, Versionskontrollsysteme und einiges mehr bereit.

• Das hat nicht nur für die Entwickler Vorteile, sondern auch Anwender haben eine (oder mehrere Anlaufstellen), wo sie nach Software suchen können.

• Einer der ältesten solcher Dienste ist SourceForge. Die Software dahinter kann man selbst kostenlos verwenden und es gibt einige Webseiten im Stil von Source Forge, die sich auf spezielle Software beschränken.

• Einige andere Dienste sind Github (derzeit der populärste), Google Code und Microsoft CodePlex.

Auf der Webseite FreeCode werden Neuigkeiten zu vielen Open Source Projekten zusätzlich bekanntgegeben.

Softwarepaketverwaltung - Repositories

• Einer der wichtigsten Unterschiede zwischen den verschiedenen Linux-Distribution ist diese Softwarepaketverwaltung.

• Die zwei verbreitetsten Paketformate sind deb („Debian package“; von Debian, Ubuntu und anderen Debian-Derivaten verwendet) und rpm („RPM Package Manager“; z.B. von Red Hat und openSUSE verwendet). In der Vorlesung werden wir nur Ubuntu und das deb-Format betrachten.

• Die Softwarepakete werden über ein sogenanntes Repository zur Verfügung gestellt, welches spezifisch für jede Distribution ist. Es umfasst jeden Typ von Software (Kernel, Administration, Anwendung) und zusätzlich auch Dokumentation sowie Default-Konfigurationen.

(3)

• Das Ubuntu Package Repository bietet einen Überblick über alle Pakete, die man in Ubuntu direkt über die eingebaute Paketverwaltung installieren kann.

Softwarepaketverwaltung - Pakete

• Die Softwarepakete unter Ubuntu beinhalten unter anderem folgende Komponenten (genaue Informationen dazu sind im Debian FAQ zu finden):

• Programmdateien, Konfigurationsdateien, sonstige Daten

• Skripte, die bei der (De)Installation benötigt werden

• Meta-Information (Name, Version, Beschreibung, Abhängigkeiten, …)

• Signatur (zur Sicherstellung, dass niemand das Paket verändert hat)

• Ein ganz wichtiger Punkt ist, dass zwischen diesen Paketen Abhängigkeiten definiert sind. Das heißt in der Praxis, dass ein Paket zusätzlich die Anwesenheit von weiteren Paketen benötigen kann.

So wird zum Beispiel sichergestellt, dass bei der Installation eines Audio-Players die nötigen Audio- Codecs installiert werden.

Abhängigkeiten des Pakets coreutils

Das Programm apt-rdepends erleichtert die Analyse von Paketabhängigkeiten, z.B. durch das Erstellen solcher Grafiken.

apt-rdepends -d coreutils | dot -Tpng >coreutils.png

Softwarepaketverwaltung - Werkzeuge

Unter Ubuntu gibt es zwei primäre Werkzeuge, die für die Verwaltung von Paketen und Repositories verwendet werden:

dpkg → Dieses Werkzeug arbeitet auf der untersten Ebene, also direkt mit den Paketen. Es wird

(4)

benutzt um einzelne Pakete zu installieren, zu entfernen bzw. um allgemein Pakete zu verwalten.

apt → Die Abkürzung für Advanced Packaging Tool bezeichnet eine Familie von Programmen, die auf dpkg aufbauen und für die eigentliche Paketverwaltung benutzt werden. Es besitzt unter anderem eingebaute Funktionalitäten zum Verwalten von Repositories, Herunterladen von Paketen und zum automatischen Installieren von Abhängigkeiten.

Paketverwaltung mit dpkg

dpkg - Verwaltet deb-Softwarepakete

» Optionen: -i Package.deb → installieren eines Pakets, -l → auflisten aller installierten Pakete, -r Paketname → entfernen eines Pakets, -L Paketname → Dateien des Pakets auflisten, -S Pfad → Paket suchen, in dem der Pfad vorkommt.

» $ dpkg -l | grep dpkg

ii dpkg 1.16.7ubuntu6 amd64 Debian package management system

ii dpkg-dev 1.16.7ubuntu6 all Debian package development tools

ii libdpkg-perl 1.16.7ubuntu6 all Dpkg perl modules

$ dpkg -S /usr/bin/dpkg dpkg: /usr/bin/dpkg

Paketintegrität mit debsums überprüfen

Für jede Datei in einem Paket wird ein kryptographischer Hashwert erstellt (ein MD5-Hashwert).

Dadurch kann man später überprüfen, ob eine Datei seit der Installation verändert worden ist.

Falls man ein verändertes Paket findet, kann man dieses mit apt-get install --reinstall Paket neu installieren.

debsums - Überprüft MD5-Werte von installierten Paketen

» Optionen: -s → Nur Fehler ausgeben, -c → Veränderte Dateien ausgeben.

» $ debsums -s curl

$ echo test > /usr/bin/curl

$ debsums curl

/usr/bin/curl FAILED /usr/share/doc/curl/MANUAL.gz OK /usr/share/doc/curl/TheArtOfHttpScripting.gz OK /usr/share/doc/curl/copyright OK /usr/share/man/man1/curl.1.gz OK

$ apt-get install --reinstall curl ...

$ debsums -s curl

$

Verwalten von Repositories

• Repositories werden über die APT-Familie von Werkzeugen verwaltet. Die Konfigurationsdateien liegen in /etc/apt/:

• sources.list → Definiert die Hauptrepositories, die das System verwenden soll.

• sources.list.d/*.list → Zusätzliche Repositories, die verwendet werden sollen.

• apt.conf.d/* → Konfigurationsdateien

• trusted.gpg → GnuPG Schlüsseldatei.

(5)

• Repositories sind über HTTP oder FTP freigegeben Verzeichnisse, die einer bestimmten Struktur folgen. In dieser Struktur gibt es neben den eigentlichen Paketdateien (mit der Endung .deb) auch Dateien mit Informationen über alle verfügbaren Pakete des Repositories.

• Die Liste der Paketdaten eines Repositories wird (ähnlich wie Pakete) mit Hilfe einer Signatur vor Fälschung geschützt. Die dafür benötigten Schlüssel werden in der oben angegeben Datei verwaltet.

Verwalten von Repositories - apt-key

apt-key - Verwaltet Repository-Schlüssel

» Befehle: list → Auflisten aller Schlüssel, add Datei → Hinzufügen eines Schlüssel aus einer Datei, del KeyID → Löschen eines Schlüssels.

» $ apt-key list | head -n 11 /etc/apt/trusted.gpg

---

pub 1024D/437D05B5 2004-09-12

uid Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>

sub 2048g/79164387 2004-09-12 pub 1024D/FBB75451 2004-12-30

uid Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>

pub 1024D/3E5C1192 2010-09-20

uid Ubuntu Extras Archive Automatic Signing Key

<ftpmaster@ubuntu.com>

Verwalten von Repositories - apt-get

apt-get - APT Paketverwaltungstool

» Bietet extrem viele Unterbefehle und Optionen (und hat sogar Super-Kuh-Fähigkeiten…).

» Die wichtigsten Befehle:

• update → Paketquellen von Repositories herunterladen und überprüfen, ob Updates vorhanden sind

• upgrade → Alle Pakete auf den neuesten Stand bringen (zuvor ein update machen)

• install Paket... → Installiert die Pakete und eventuell benötigte Abhängigkeiten

• remove Paket/purge Paket → Entfernen das Paket (und im zweiten Fall auch die Konfigurationsdateien)

Verwalten von Repositories - apt-cache

apt-cache - Durchsucht den APT-Cache

» Nach einem apt-get update liegen die Paketquellen lokal am Rechner und können mit Hilfe dieses Programms durchsucht werden.

» Befehle: show → Informationen zu einem Paket anzeigen, search → Mit Hilfe eines Regexps die Paketquellen durchsuchen

» $ apt-cache search kramdown

ruby-kramdown - Fast, pure-Ruby Markdown-superset converter

$ apt-cache show kramdown | head -n 10 Package: ruby-kramdown

Priority: optional Section: universe/ruby Installed-Size: 1349

(6)

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>

Original-Maintainer: Debian Ruby Extras Maintainers <pkg-ruby-extras- maintainers@lists.alioth.debian.org>

Architecture: all Version: 0.13.7-2

Depends: ruby | ruby-interpreter, ruby-coderay, libjs-jquery

Filename: pool/universe/r/ruby-kramdown/ruby-kramdown_0.13.7-2_all.deb

Automatisches Update - unattended-upgrades

Um Sicherheitsupdates automatisch einspielen zu lassen, gibt es einige Möglichkeiten (z.B. cron-apt und unattended-upgrades).

Für die Verwendung von unattended-upgrades das gleichnamige Paket installieren und die Konfiguration anpassen:

• Das Programm durch Setzen der folgenden Optionen in /etc/apt/apt.conf.d/10periodic aktiveren:

APT::Periodic::Update-Package-Lists "1";

APT::Periodic::Unattended-Upgrade "1";

Die erste Option stellt sicher, dass die Repository-Daten aktuell sind und die zweite aktiviert die automatischen Updates mittels unattended-upgrades.

• In der Datei /etc/apt/apt.conf.d/50unattended-upgrades sollte man zusätzlich zumindest noch einstellen, welche Repositories für Updates herangezogen werden sollen, wenn man mit den Standardeinstellungen nicht zufrieden ist (Option Unattended-Upgrade::Allowed-Origins).

Das Programm wird dann regelmäßig durch den Cron-Job /etc/cron.daily/apt ausgeführt.

Paketverwaltung mit Puppet

• Pakete werden in Puppet über die Ressource package verwaltet.

• Unter Ubuntu wird standardmäßig der Provider apt verwendet, alternativ dazu gäbe es noch aptitude und dpkg.

• Wichtige Attribute:

name: Der Name des Pakets (falls nicht angegeben, wird der Titel verwendet).

ensure: Der gewünschte Zustand (present oder installed, absent, purged, held, latest oder eine Versionsnummer; falls nicht angegeben wird der Wert installed genommen).

responsefile: Eine Datei mit den benötigten Antworten, die von dem Paket abgefragt werden.

Paketverwaltung mit Puppet - Beispiele

• Installation von OpenSSH-Server und -Client:

package {'openssh-client':

  ensure => latest }

package {'openssh-server': }

(7)

• Sicherstellen, dass das Paket ntp nicht installiert ist:

package {'ntp':

  ensure => purged }

Dateiverwaltung mit Puppet

• Dateien werden in Puppet über die Ressource file verwaltet.

• Unter Ubuntu wird standardmäßig der Provider posix verwendet.

• Wichtige Attribute:

path: Der absolute Pfad der Datei (falls nicht angegeben, wird der Titel verwendet).

ensure: Der gewünschte Zustand (present, absent, file, directory oder link)

backup: Spezifiziert, ob und wie ein Backup gemacht werden soll (false, Zeichenkette beginnend mit Punkt oder sonstige Zeichenkette)

content: Der Inhalt der Datei (nicht gleichzeitig mit source verwendbar).

source: Eine URI, deren Inhalt verwendet werden soll (lokale Datei oder vom Puppetserver).

target: Linkziel.

owner: Der Besitzer der Datei.

group: Der Gruppenbesitzer der Datei.

mode: Die Rechte der Datei.

Dateiverwaltung mit Puppet - Beispiele

• Anlegen eines Verzeichnisses:

file {'/var/local': ensure => directory}

• Erstellen eines symbolischen Links:

file {'/var/local/test':

  ensure => link,

  target => '/etc/modules' }

• Erstellen einer Datei mit einem bestimmten Inhalt:

file {'/etc/my.secret':

  owner => root,   group => root,   mode => 600,

  content => 'My secret secret' }

• Kopieren einer Datei von der Dateisektion ‚common‘ vom Puppetserver:

file {'/etc/ssh/sshd_config':

  ensure => present,   owner => root,   group => root,   mode => 644,

  source => ["puppet:///common/sshd_config.$fqdn", 'puppet:///common/sshd_config'] }

(8)

Copyright und Lizenz

• Copyright: Thomas Leitner thomas.leitner@univie.ac.at

• Lizenz: Creative Commons CC BY-NC-SA

„Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Österreich.“ - http://creativecommons.org/licenses/by-nc-sa/3.0/at/

Referenzen

ÄHNLICHE DOKUMENTE

Sockets in C unter Linux Headerdateien für

ISO Image von CD oder DVD unter Linux erstellen Zertifikat für Emby Server erneuern.. Fixing forwarding request failed on channel 0 on a Linux/Unix based server Problem bei

● Keine einfache Nachinstallation von Treibern = Problem, falls DVB-Device nicht unterstützt wird.. ● Nachinstallation von

The host ethernet is configured through standard Solaris means — the hostname.hme0 file specifies a hostname which matches an IP address in /etc/hosts, and further

Mit der Version WebTransactions for openUTM (Linux Systeme) V7.5C10 wird UPIC V5.1 nicht länger unterstützt. Dafür wird die UPIC Version V7.0 neu unter- stützt. 3.6

Mit Mailprogrammen können Nachrichten oder sonstige Daten über elektronische Wege weltweit über das Internet verteilt werden. Mit Mailprogrammen können Nachrichten oder sonstige

Oriolus_Englisch_Grundschule_Intensiv_DVD Englisch_Grundsch ule_Intensiv_DVD_4 2.08. Oriolus_Englisch_Grundschule_Standard_DVD

Poseidon Linux is composed of free, and open source software (with some rare exceptions), that mean that the users are assured of the four principles of GNU General Public License