ubuntuusers.de

Entweder oder in apt-get install

Status: Ungelöst | Ubuntu-Version: Ubuntu 15.04 (Vivid Vervet)
Antworten |

saigkill

Avatar von saigkill

Anmeldungsdatum:
28. Dezember 2010

Beiträge: 85

Wohnort: Mayen

Hallo Forum,

aktuell schreibe ich ein Setup für ein kleines eigenes Programm. Darin installiere ich Ubuntu-Pakete nach. Wäre so etwas möglich: sudo apt-get install ffmpeg || libav-tools. Also installiere entweder ffmpeg oder libav-tools?

Viele Grüße Sascha

Moderiert von rklm:

Verschoben. Das passt wohl besser in das Forum "Paketbau".

apt-ghetto

Anmeldungsdatum:
3. Juni 2014

Beiträge: 2943

saigkill schrieb:

Wäre so etwas möglich: sudo apt-get install ffmpeg || libav-tools. Also installiere entweder ffmpeg oder libav-tools?

So, wie du es geschrieben hast, funktioniert das nicht. Du müsstest allerdings noch dazu schreiben, nach welchen Kriterien du entscheidest, ob ffmpeg oder libav-tools installiert werden sollen.

saigkill

(Themenstarter)
Avatar von saigkill

Anmeldungsdatum:
28. Dezember 2010

Beiträge: 85

Wohnort: Mayen

Hallo Gerry,

bis zu einer gewissen Ubuntu-Version stand ffmpeg zur Verfügung und wurde dann entfernt. Seit Vivid steht ffmpg wieder in den Repos zur Verfügung. Mein Ziel wäre es vielleicht zu testen, ob ffmpg installiert werden kann, und wenn nicht, sollte libav-tools installiert werden.

Gruß Sascha

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Warum baust du nicht ein Debian-Paket für dein Programm? Da kann man prima alternative Abhängigkeiten hinterlegen: https://www.debian.org/doc/debian-policy/ch-relationships.html

saigkill

(Themenstarter)
Avatar von saigkill

Anmeldungsdatum:
28. Dezember 2010

Beiträge: 85

Wohnort: Mayen

Das wäre auch eine Option. Mal schaun. Vielen Dank erstmal.

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Ein Debian-Paket für Ubuntu selbst zu schreiben, ist nicht ganz trivial und schränkt das Programm (oder zumindest das automatische Setup) dann auch auf Ubuntu-Systeme ein. Der üblichere Weg ist es, zu prüfen, welche Programme vorhanden sind und dem Anwender dann mitzuteilen, was noch fehlt. Für die Installation fehlender Libs oder Tools ist dann entsprechend der Anwender zuständig.

saigkill schrieb:

bis zu einer gewissen Ubuntu-Version stand ffmpeg zur Verfügung und wurde dann entfernt. Seit Vivid steht ffmpg wieder in den Repos zur Verfügung. Mein Ziel wäre es vielleicht zu testen, ob ffmpg installiert werden kann, und wenn nicht, sollte libav-tools installiert werden.

Alternativ könntest du mittels lsb_release abfragen, welche Ubuntu-Version installiert ist und entsprechend darauf reagieren.

ExcitedSpoon

Avatar von ExcitedSpoon

Anmeldungsdatum:
17. Juli 2010

Beiträge: 226

Wohnort: /home/berlin

Wenn apt-get install ffmpeg fehlschlägt, weil das Paket evtl. nicht vorhanden/kompatibel ist, dann beendet es sich mit einem exit code ungleich 0. d.h. man kann das wunderbar in einem script machen:

Automatisiert ginge das ungefähr so:

1
2
3
4
5
6
7
if apt-get -y install ffmpeg; then
  echo "ffmeg installiert"
elif apt-get -y install libav-tools; then
  echo "libav-tools installiert"
else
  echo "mist, beides nicht geklappt"
fi

Vorsicht: die Option -y bei apt-get führt dazu dass die entsprechenden Pakete ohne User-Bestätigung installiert werden.

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

@ExcitedSpoon: Dir ist aber schon klar, dass apt-get auch andere Fehler meldet? Es könnte z.B. Probleme mit der Internetverbindung geben oder es könnte noch eine andere dpkg-Instanz (etwa als GUI) offen sein. In diesen Fällen probiert dein Skript stumpf das zweite Paket aus und beendet sich dann. Hälst du das für ein sinnvolles Verhalten?

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

Mit equivs kann man ganz leicht Metapakete erstellen:

Folgenden Code in eine Datei kopieren (z.B. ffmpeg-oder-libav.equivs)

Section: misc
Priority: optional
Standards-Version: 3.9.2

Package: ffmpeg-oder-libav-tools
Depends: ffmpeg | libav-tools
Description: ffmpeg oder libav-tools
 long description and info

und dann das Paket bauen mit:

equivs-build ffmpeg-oder-libav.equivs

Ungetestet, sollte aber funktionieren.

Mit equivs-control Dateiname kann man eine Vorlage für so eine equivs-control-Datei erstellen, da sind dann auskommentiert noch ein paar Felder drin, die man verwenden kann, z.B. Version, Maintainer, …

ExcitedSpoon

Avatar von ExcitedSpoon

Anmeldungsdatum:
17. Juli 2010

Beiträge: 226

Wohnort: /home/berlin

snafu1 schrieb:

@ExcitedSpoon: Dir ist aber schon klar, dass apt-get auch andere Fehler meldet? Es könnte z.B. Probleme mit der Internetverbindung geben oder es könnte noch eine andere dpkg-Instanz (etwa als GUI) offen sein. In diesen Fällen probiert dein Skript stumpf das zweite Paket aus und beendet sich dann. Hälst du das für ein sinnvolles Verhalten?

Das hatte ich jetzt garnicht bedacht. Konnte jetzt in Ermanglung an einem System, was ich temporär vom Netz trennen könnte (hab hier nur Ubuntu-Server, privat Arch Linux) nicht testen, ob apt-get bei z.B. fehlender Internetverbindung einen anderen return code zurückgibt als für nicht gefundene Pakete (was 100 wäre). Ansonsten müsste man eben explizit auf dem error-code prüfen. barcc's Variante über equivs scheint mir da aber doch eleganter, falls das funktioniert.

Antworten |