RPM-Konventionen - ein moderner Turm von Babel

Ähnliche Dokumente
MySQL-Auswahl auch gegen die Distribution

MySQL-Server im Teamwork - Replikation und Galera Cluster

Benutzer und Rechte Teil 2, Paketverwaltung

Linux-Camp: Linux als Server am Beispiel LAMP

Benutzer und Rechte Teil 1, Paketverwaltung

Neues von Grid Control. Ralf Durben Oracle Deutschland B.V. & Co. KG Business Unit Datenbank DBTec

am besten erst den ganzen Abschnitt lesen, besonders das mit dem patch!

Paketverwaltung und wichtige FOSS-Anwendungen

Benutzer und Rechte Teil 1, Paketverwaltung, SSH

Schulfilter Plus Installationsanleitung CentOS 7

APEX Office Print - Einfach Druck machen! Daniel Hochleitner Freelance APEX Developer, FOEX GmbH

Linux Prinzipien und Programmierung

Installation von Zope, Plone, exam auf OSS

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: installcentos.odt

TSM-Client unter RedHat/CentOS-Linux einrichten

APEX OOS TOOLS & HELFER

Startup, Shutdown und Reboot eines Raspberry Pi über die HomeMatic CCU

Play with Ansible - Provisioning von Weblogic mit Ansible

Oracle 10g Einführung

1.1 Datenbankprogramm Oracle für MCIS MDA

Schulfilter Plus Installationsanleitung Debian 8

CONTINOUS DEPLOYMENT MIT OPSI UND PIPELINES

Installationsanleitung für die netzbasierte Variante Ab Version 3.6. KnoWau, Allgemeine Bedienhinweise Seite 1

Perforce Installation mit SSL

ixhash, ein eher unbekanntes SpamAssassin- Plugin

Merkblatt System-C Installation Linux

Neue Features Oracle Database 12.2 Wann denn endlich?

Brownbag Zieht den Helm auf

Katello / Pulp / Candlepin

Free IPA (Identity Policy - Audit)

Management von grossen IT Umgebungen mit Open Source Tools

Arbeiten mit Delphi und Linux

Einführung in Ansible

Build Management Tool

Einleitung und Vorstellung Was ist opsi? Motivation Continous Deployment Neue Testumgebung QA

Industrielle Herausforderungen in Embedded Systems

Die Überwachung lokaler Server Parameter durch den Local Check erfordert die Installation eines Monitoring Agents auf dem überwachten Server.

Virtuelle Entwicklungsarbeitsplätze und Linux

Unternehmensdokumente mit dem XML Publisher erzeugen

Migration Howto. Inhaltsverzeichnis

Oracle ACFS / CloudFS zuverlässig nutzbar?

MySQL-Server im Teamwork - Replikation und Cluster

MySQL Cluster mit Galera

In diesem Beispiel verwende ich einen Raspberry Pi 3 (wg. Ethernetanschluss) mit einem MMDVM Hat Klon.

Continuous Integration mit TravisCI u.a. Jan Steemann

Schulfilter Plus Installationsanleitung Ubuntu 12.04

Perceptive Document Composition

SCHRITT 0 ( Nur falls Java noch nicht installiert ist! )

XML Publisher die universelle Lösung für Geschäftsdokumente

Continuous Integration mit GitLab CI Christine Koppelt Open-Source-Treffen, 26. Januar 2018

MySQL Replikation Neue Features in 5.5 und 5.6

<Insert Picture Here> RAC Architektur und Installation

BTWin 6.1 Installation und Einrichtung

Einfaches Bauen von RPM-Paketen

MySQL/MariaDB für. nicht-mysql DBAs

EleLa - Elektronik Lagerverwaltung. Hilfe. Installation auf einem Raspberry Pi

Embedded Linux Portierung auf mobiles Datenerfassungsterminal. Ole Reinhardt

NCP Secure Enterprise Management (für Windows-Betriebssysteme) Neue Features Version 1.03 bis 2.04

Migration und Betrieb unter SLES9/Steeleye Cluster auf XFS und NetApp

2. Voraussetzung und Grundsätzliches

Opentext Business Intelligence. edocs DM. Brava! Exceed TurboX Remotedesktop. Roadshow April, 2018 Helmut Reimann

sudo apt-get install hplip hpijs foomatic-filters-ppds cupsys-driver-gutenprint

MySQL Backup und Restore

Installationsbeschreibung. Flottenmanager. Versionen 8.0

Update Handbuch. (Datenbank, Applikation und Zolldaten)

Linux Mint Die Neuerungen

Transkript:

RPM-Konventionen - ein moderner Turm von Babel Chemnitzer Linux-Tage 2016 Jörg Brühe Senior Support Engineer, FromDual GmbH joerg.bruehe@fromdual.com 1 / 40

FromDual GmbH Support Beratung remote-dba Schulung 2 / 40

Zur Person Entwicklung verteiltes SQL-DBMS: Unix-Portierung, SQL-Standardisierung (X/Open), Anschluss Archivierungs-Tools (ADSM, NetWorker) MySQL Build Team: Release-Builds inkl. Tests, Paketierung, Skripte,... DBA: MySQL für eine Web-Plattform (typisch: MySQL in Master-Master-Replikation) Support-Ingenieur (FromDual): Support + Remote-DBA für MySQL / MariaDB / Percona mit oder ohne Galera Cluster 3 / 40

Motivation (1): Support-Ende [joerg@cent66 ori ~]$ cat /etc/redhat release CentOS release 6.6 (Final) [joerg@cent66 ori ~]$ rpm qa grep i 'mysql' mysql 5.1.73 3.el6_5.x86_64 MySQL python 1.2.3 0.3.c1.1.el6.x86_64 mysql libs 5.1.73 3.el6_5.x86_64 perl DBD MySQL 4.013 3.el6.x86_64 mysql server 5.1.73 3.el6_5.x86_64 mysql connector odbc 5.1.5r1144 7.el6.x86_64 4 / 40

Motivation (2): Neue Pakete [joerg@cent66 ori ~]$ ls /media/dl/*5.5.45*rpm /media/dl/mysql client 5.5.45 1.el6.x86_64.rpm /media/dl/mysql devel 5.5.45 1.el6.x86_64.rpm /media/dl/mysql embedded 5.5.45 1.el6.x86_64.rpm /media/dl/mysql server 5.5.45 1.el6.x86_64.rpm /media/dl/mysql shared 5.5.45 1.el6.x86_64.rpm /media/dl/mysql shared compat 5.5.45 1.el6.x86_64.rpm /media/dl/mysql test 5.5.45 1.el6.x86_64.rpm 5 / 40

Motivation (3): Paket-Kollision [joerg@cent66 ori ~]$ sudo rpm i /media/dl/mysql {client,server} 5.5.45 1.el6.x86_64.rpm Warnung: /media/dl/mysql client 5.5.45 1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, Schlüssel ID 5072e1f5: NOKEY Fehler: Fehlgeschlagende Abhängigkeiten: MySQL server kollidiert mit mysql server 5.1.73 3.el6_5.x86_64 6 / 40

Motivation (4): File-Kollision [joerg@cent66 ori ~]$ sudo rpm U /media/dl/mysql {client,server} 5.5.45 1.el6.x86_64.rpm Warnung:... NOKEY Datei /usr/share/mysql/charsets/index.xml aus der Installation von MySQL server 5.5.45 1.el6.x86_64 kollidiert mit der Datei aus dem Paket mysql libs 5.1.73 3.el6_5.x86_64... ((46 weitere)) 7 / 40

Motivation (5): Das Problem In einer Default-Installation von CentOS 6.6 (ebenso Scientific Linux oder RedHat) kann das vorinstallierte MySQL 5.1 (Client + Server, Pakete der Distribution) nicht durch MySQL 5.5 Client + Server (Oracle- Download, für RedHat 6) ersetzt werden, weil vorhandene Dateien überschrieben werden sollen. 8 / 40

Nur Beispiele sind...... die Komponente MySQL... das Paketformat RPM... die Plattform RedHat Jede Software kann in jedem Format auf jeder Plattform vergleichbare Probleme haben, wenn verschiedene Anbieter ihre Pakete unabhängig voneinander erstellen -... Open Source macht das aber möglich! 9 / 40

Inhalt Ziele des Paket-Managements (Unter)Paket-Namen Unterpakete und Abhängigkeiten Aktionen bei Installation und Deinstallation Zurück zum Upgrade-Problem Über Kompatibilitäts-Pakete Zusammenfassung 10 / 40

Ziele des Paket-Managements Sinnvoller Name zur Identifikation Zusammengehörige Dateien bündeln Komplexe Funktionen in (optionale?) Unter-Pakete aufteilen Dateien gleichzeitig installieren bzw. löschen (De)Installations-Aktionen ausführen Umstellung auf neuere Version unterstützen Funktionale Abhängigkeiten und Konflikte dokumentieren und behandeln Wiederholbaren Bau-Prozess definieren 11 / 40

(Unter)Paket-Namen Name: z.b. MySQL oder mysql Unter-Pakete: RedHat (5.1) MySQL Sun Oracle (5.6) Oracle (5.5) für yum mysql MySQL-client mysql-community-client mysql-bench mysql-community-bench mysql-community-common mysql-devel MySQL-devel mysql-community-devel mysql-embedded MySQL-embedded mysql-community-embedded mysql-embedded-devel mysql-community-embedded-devel mysql-libs MySQL-shared mysql-community-libs mysql-server MySQL-server mysql-community-server mysql-test MySQL-test mysql-community-test 12 / 40

Unterpakete und Abhängigkeiten 13 / 40

Unterpakete Funktionen bzw. Feature-Gruppen für gezielte Installation voneinander trennen Basis-Dateien in eigenes Paket, um Konflikt (durch Mehrfach-Installation) zu vermeiden MySQL: /usr/share/mysql/charsets/* mit Server und mit Client-Lib (für ODBC) RedHat: charsets/* in libs, Oracle: charsets/* separat in common Oracle: Client ist statisch gelinkt, braucht libs nicht (RedHat: dynamisch) 14 / 40

Abhängigkeiten (1) MySQL (MySQL AB, Sun, Oracle bis 5.6): Server: Client: Anwendung: MySQL-server MySQL-client MySQL-shared Jedes dieser drei Pakete ist eigenständig, zwischen ihnen gibt es keine Abhängigkeiten (aber teilweise zwischen den anderen, z.b. MySQL-test -> MySQL-client ). 15 / 40

Abhängigkeiten (2) mysql (RedHat, MySQL 5.1.73 auf RH 6): Server: Client: Anwendung: mysql-server mysql mysql-libs mysql-libs mysql-libs Sowohl das Server- als auch das Client-Paket hängen von libs ab. RedHat linkt den Client dynamisch, auch zwei Client-Tools im Server-Paket. 16 / 40

Abhängigkeiten (3) mysql (Oracle, MySQL 5.5.48 für RH 6): Server: Client: Anwendung: mysql-community-server mysql-community-client mysql-community-client mysql-community-libs mysql-community-libs mysql-community-libs mysql-community-common mysql-community-common mysql-community-common server verlangt client und common, client verlangt libs (technisch fragwürdig), libs braucht common. 17 / 40

Aktionen bei Installation und De-Installation 18 / 40

Typische Installations-Aktionen Gruppe und User anlegen Soll Login möglich sein? Datei-Eigentümer und -Rechte setzen Server-Upgrade abhängig vom Vendor? Was sonst bei verschiedenen Konventionen? Server-Upgrade: Läuft der alte Server? Falls ja: Neuen Server sofort starten. Autostart konfigurieren (Server)? Achtung beim nächsten Reboot! 19 / 40

Produkt-Wechsel Crossgrade Produkt = Software und Paketierung Datei-Namen und -Pfade sind produktspezifisch Bisherige Konfiguration wird nach Wechsel auf anderes Produkt evtl. ignoriert rpm, apt-get,... können die nötige Anpassung nicht machen Paketierer scheuen davor zurück => Crossgrade ist Admin-Arbeit 20 / 40

Server-Start wann? Typischer Benutzer des Paket-Erstellers: Hobby? Entwickler? Enterprise? Hobby: Server nach Installation sofort starten ( Ease of Use ) => Alte MySQL-Versionen Entwickler: ähnlich Enterprise: nur auf Admin-Entscheidung => RedHat chkconfig add, immer off Kompromiss: Install chkconfig add, Upgrade mit Start wenn vorher gelaufen 21 / 40

Zurück zum Upgrade-Problem 22 / 40

Fehlermeldung [joerg@cent66 ori ~]$ sudo rpm U /media/dl/mysql {client,server} 5.5.45 1.el6.x86_64.rpm Warnung:... NOKEY Datei /usr/share/mysql/charsets/index.xml aus der Installation von MySQL server 5.5.45 1.el6.x86_64 kollidiert mit der Datei aus dem Paket mysql libs 5.1.73 3.el6_5.x86_64... ((46 weitere)) 23 / 40

Einfach löschen geht nicht [joerg@cent66 ori ~]$ sudo rpm e mysql libs Fehler: Fehlgeschlagende Abhängigkeiten: libmysqlclient.so.16()(64bit) wird benötigt von... mysql libs = 5.1.73 3.el6_5 wird benötigt von (installiert) mysql 5.1.73 3.el6_5.x86_64 mysql libs wird benötigt von (installiert) postfix 2:2.6.6 6.el6_5.x86_64 24 / 40

MySQL-shared 5.5 hat es nicht [joerg@cent66 ori ~]$ rpm qp provides /media/dl/mysql shared 5.5.45 1.el6.x86_64.rpm libmysqlclient.so.18()(64bit) MySQL shared = 5.5.45 1.el6 MySQL shared(x86 64) = 5.5.45 1.el6 Weder libmysqlclient.so.16 noch mysql-libs 25 / 40

Kompatibilität! [joerg@cent66 ori ~]$ rpm qp provides /media/dl/mysql shared compat 5.5.45 1.el6.x86_64.rpm... libmysqlclient.so.16()(64bit)... mysql libs MySQL shared compat = 5.5.45 1.el6 MySQL shared compat(x86 64) = 5.5.45 1.el6 26 / 40

Neuer Versuch... [joerg@cent66 ori ~]$ sudo rpm U /media/dl/mysql {client,server, shared compat} 5.5.45 1.el6.x86_64.rpm A MySQL server package (mysql server 5.1.73 3.el6_5.x86_64) is installed. The current MySQL server package is provided by a different vendor (CentOS) than MySQL AB, Sun Microsystems, Inc., or Oracle and/or its affiliates.... Fehler: install: %pre Scriptlet fehlgeschlagen (2), überspringe MySQL server 5.5.45 1.el6 27 / 40

Zustand? [joerg@cent66 ori ~]$ rpm qa fgrep i mysql MySQL python 1.2.3 0.3.c1.1.el6.x86_64 perl DBD MySQL 4.013 3.el6.x86_64 MySQL shared compat 5.5.45 1.el6.x86_64 mysql server 5.1.73 3.el6_5.x86_64 MySQL client 5.5.45 1.el6.x86_64 mysql connector odbc 5.1.5r1144 7.el6.x86_64 28 / 40

In Einzelschritten... [joerg@cent66 ori ~]$ sudo rpm e mysql server [joerg@cent66 ori ~]$ sudo rpm i /media/dl/mysql server 5.5.45 1.el6.x86_64.rpm [joerg@cent66 ori ~]$ rpm qa fgrep i mysql MySQL python 1.2.3 0.3.c1.1.el6.x86_64 perl DBD MySQL 4.013 3.el6.x86_64 MySQL server 5.5.45 1.el6.x86_64 MySQL shared compat 5.5.45 1.el6.x86_64 MySQL client 5.5.45 1.el6.x86_64 mysql connector odbc 5.1.5r1144 7.el6.x86_64 29 / 40

Fazit Beim Wechsel der Release-Familie ist ein compat -Paket für die alte Distro nötig. Das compat -Paket stellt die API der alten Release-Familie bereit (SO-Version der client-seitigen Bibliotheken). Wenn Upgrade scheitert, kann Löschen und Neu-Installation ein Ausweg sein. Evtl. fehlen dann Upgrade-Aktionen oder -Checks... 30 / 40

Über Kompatibilitäts-Pakete 31 / 40

Wer macht sie warum? Distribution: Nein Distribution umfasst eine stabile Kombination von zueinander passenden Paketen Nach Selbstverständnis: vollständig Hersteller / Entwickler: Ja Will die Verfügbarkeit und Benutzung der neuesten Version (Bugfixes!) Will die Migration von Alt-Installationen Muss Zugriff durch Alt-Software unterstützen 32 / 40

MySQL-shared-compat Paketierer: MySQL AB -> Sun -> Oracle Grundsätzlich: libmysqlclient.so* für schon vorhandene Anwendungen Bis MySQL 5.1: Alte + aktuelle Versionen => Konflikt mit shared, entweder/oder Ab MySQL 5.5: Nur alte Versionen Bibliotheken aus alten shared extrahiert und neu verpackt Unabhängig von allen anderen Unterpaketen 33 / 40

mysql-libs-compat Paketierer: Oracle, für RHEL / OEL /... Grundsätzlich: libmysqlclient.so* für die benutzte Distribution Neu seit MySQL 5.6 Alte Quellen neu übersetzt, daraus nur die Bibliotheken verpackt Requires: mysql common CURRENT wegen /usr/share/mysql/charsets/* 34 / 40

Konsequenzen Zugriff auf charsets/* nur bei wenigen Aufrufen (ODBC?) Aktuelles common auch nötig für server Upgrade gekoppelt von server über common zu libs-compat Was, wenn charsets/* -Format anders? 35 / 40

Meine Alternative Patch der alten Quellen: /usr/share/mysql/charsets > /usr/share/mysql/charsets VERSION charsets/* mit in libs-compat, Installation an Pfad mit Versionsnummer Keine Abhängigkeit zwischen libs-compat und einem anderen Unterpaket So in mysql-wsrep-libs-compat (MySQL für Galera Cluster) 36 / 40

Zusammenfassung 37 / 40

Warum Wirrwarr? Jedes Paketierer-Team entscheidet selbst Grundlage: Firmen- bzw. Team-Interessen sowie Vorstellungen vom Benutzer Distributionen und Entwickler haben unterschiedliche Interessen! Features und Patches können differieren (z.b. bei MySQL: weitere Table-Handler) 38 / 40

Admin-Maßnahmen RTFM (Upgrade-Instruktionen) Blogs lesen, Netz-Suche Im Zweifel: Testen! Cross-Grade: Testen! Use the source : Source-RPM, spec-file, rpm q scripts p PAKET.rpm Blogs schreiben, um anderen zu helfen Fehler melden! 39 / 40

Q & A Fragen? Diskussion? Wir haben Zeit für ein persönliches Gespräch... FromDual bietet neutral und unabhängig für MySQL, Percona und MariaDB, auch mit Galera Cluster: Beratung Remote-DBA Support Schulung /presentations 40 / 40