web-dev-qa-db-fra.com

Programme d'installation DEB - Contrôles de dépendance

À l'aide d'un outil de génération d'installation tiers, j'ai créé un package .deb pour mon application.

Plusieurs dépendances doivent être présentes sur le système d'exploitation Linux de l'utilisateur pour que mon application fonctionne correctement. Plus précisément, "make" et plusieurs bibliothèques ".so", comme libgcc.so, libc.so etc.

Tous nos utilisateurs d'Ubuntu peuvent ne pas avoir installé les dépendances requises avant d'exécuter mon programme d'installation de package.

Cet outil d'installation tiers que j'ai utilisé génère un package DEB, mais n'inclut pas les vérifications de dépendance.

En tant que membres de la communauté Ubuntu, pourriez-vous nous dire comment un package .DEB personnalisé sans vérification des dépendances peut être reçu par les utilisateurs de Linux-Ubuntu?

Est-il suffisamment acceptable pour fournir .deb pour une application personnalisée qui ne vérifie pas les dépendances? Ou est-ce assez rare pour "irriter" les utilisateurs de Linux?

3
user98662

Avertissement: Ceci est presque identique à mon autre réponse .

Étant donné que votre programme ne générera pas d'informations de dépendance, nous les ajouterons en nous-mêmes. Par exemple, vous devrez modifier la ligne commençant par Depends: au format:

 Depends: package1, package2|package3

si vous avez besoin d'un package, et l'un du package 2 OR package 3 .

Ouvrez gedit ou nano et collez:

#!/bin/bash

if [[ -z "$1" ]]; then
  echo "Syntax: $0 debfile"
  exit 1
fi

DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb

if [[ -e "$OUTPUT" ]]; then
  echo "$OUTPUT exists."
  rm -r "$TMPDIR"
  exit 1
fi

dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN

if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
  echo DEBIAN/control not found.

  rm -r "$TMPDIR"
  exit 1
fi

CONTROL="$TMPDIR"/DEBIAN/control

MOD=`stat -c "%y" "$CONTROL"`
vi "$CONTROL"

if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
  echo Not modfied.
else
  echo Building new deb...
  dpkg -b "$TMPDIR" "$OUTPUT"
fi

rm -r "$TMPDIR"

Identique au fichier comme debedit.sh, et le rendre exécutable avec chmod +x debedit.sh.

Ensuite, exécutez debedit.sh deb_file_output.deb pour le fichier et modifiez la ligne correcte (ou ajoutez-la). Enregistrez, puis utilisez votre fichier .deb nouvellement créé pour distribuer.

Source: http://ubuntuforums.org/showthread.php?t=636724

1
hexafraction

Une réponse vous indique déjà comment ajouter des dépendances, j'essaierai de répondre à votre question sur la perception des DEB sans vérification des dépendances:

Il y a deux raisons pour les fichiers DEB (dans ce contexte et comme je le vois):

  1. Fournissez une combinaison de "tar", "make" et "make install". J'entends par là que le logiciel est livré dans un seul fichier, comme d'autres logiciels sont livrés dans une archive tar et peuvent être installés avec une seule commande, comme les autres logiciels, qui viennent souvent avec un script d'installation. Donc aunpack <packagename>.tar.gz; cd <packagename>; make; make install peut être remplacé par dpkg -i <packagename>.deb.
  2. Assurez-vous, via les dépendances et les tests précédents avec la version du système d'exploitation pour laquelle il est fourni, que tout fonctionne correctement et que tout peut être géré (installé, désinstallé) sans problème.

Alors que la commande en 1) est légèrement plus courte que son alternative, elle ne vaut pas la peine de mon point de vue et seul le point 2) rend un paquet deb utile.

SO: si vous voulez créer un package DEB, vous devez vous occuper des deux: vérifications de dépendances et tests avec la version OS. Si vous n'incluez pas de vérifications ou de tests de dépendances, vos utilisateurs (Ubuntu ou Debian) seront très déçus. Créer un package DEB sans vérification des dépendances, c'est comme tricher, ce qui fait croire à l'utilisateur que vous avez fait quelque chose pour lui que vous n'avez pas fait.

Mon conseil serait: si vous ne voulez pas ajouter les chèques à la main, ne générez pas du tout un paquet DEB. Fournissez une courte ligne d'informations qui dit quelque chose comme "Installer le logiciel en exécutant install.sh.". Les utilisateurs savent alors à quoi s'attendre.

0
xubuntix