web-dev-qa-db-fra.com

Est-il possible d'installer un fichier .deb à partir d'une URL?

Est-il possible d’installer un paquet deb directement à partir d’une URL, à l’aide d’un shell ? Quelque chose comme

dpkg -i http://domain.com/path/to/package.deb

(Je sais que je pourrais utiliser wget puis dpkg, je me demande juste s'il y a quelque chose qui le fait déjà)

73
Joril

Edit: Je n’avais pas vu votre déclaration précédente selon laquelle vous saviez que vous pouviez aller, c’est donc un peu gênant ... Je laisse cela ici pour tous ceux qui veulent savoir comment faire cela. De plus, la version précédente de ma réponse ne fonctionnait pas mais cette version (au prix d'un peu plus long) fait:

TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
Sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"

Il vous suffit de modifier l'URL au début. Cela pourrait être aliasé ou écrit comme une fonction bash.

Je me rends compte que des problèmes techniques et de sécurité l’entourent (vous n’obtenez pas de mises à jour automatiques, vous pouvez faire confiance à la source, etc.), mais sur une base purement can-i-do-it, cela pourrait fonctionner.

49
Oli

Ce n'est pas possible sans créer un fichier temporaire. Normalement, vous feriez comme ceci

### Does not work
wget --quiet --output-document=- http://example.com/path/to/package.deb | dpkg --install -

ou peut-être

### Does not work
dpkg --install <(wget --quiet --output-document=- http://example.com/path/to/package.deb)

mais dpkg utilise mmap pour accéder au fichier et ne fonctionne donc pas. Il y a un rapport de bogue à ce sujet: # 367297

26
Tgr

La méthode la plus rapide est comme ça. Cliquez pour commencer l'installation shutter .

URL utilisées pour cliquer sur le nom:

http://packages.ubuntu.com/shutter

... et pour le clic sur l'icône:

http://apt.ubuntu.com/p/shutter

Et oui, vous avez besoin du Centre de logiciel Ubuntu pour terminer l'installation d'un .DEB. Sinon, vous devrez exécuter l'installation à partir de Nautilus ou en ligne de commande.

Le texte complet utilisé pour cela concerne Ask Ubuntu uniquement; vous devez donc le reformater en une ancre:

[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://i.stack.imgur.com/HjNGK.png)](http://apt.ubuntu.com/p/shutter)

Plus d'informations peuvent être trouvées sur le page d'apturl wiki :

  1. 1 paquet:

    a href="apt:package"
    
  2. Regrouper plusieurs paquets:

    a href="apt:package1,package2,package3"
    
  3. Activation des référentiels:

    apturl apt:freevial?section=universe
    

Ainsi, si le logiciel ne se trouve pas dans un référentiel activé par défaut, vous devez lui ajouter une "section =". Sinon, vous ne pouvez pas utiliser cette méthode et avez besoin de l'utilisateur pour le télécharger et l'installer.

9
Rinzwind

Vous pouvez essayer avec curl.

Pour télécharger le fichier dans le dossier actuel et l'installer à partir du fichier local:

curl -sLO https://apt.puppetlabs.com/puppetlabs-release-precise.deb && Sudo dpkg -i puppetlabs-release-precise.deb

ou téléchargez dans /var/cache/apt/archives/ et installez à partir de là:

curl -sL -o/var/cache/apt/archives/puppetlabs-release-precise.deb https://apt.puppetlabs.com/puppetlabs-release-precise.deb && Sudo dpkg -i /var/cache/apt/archives/puppetlabs-release-precise.deb
6
kenorb

J'ai en fait un script qui fait quelque chose de similaire:

Il suffit de copier et coller ce script dans ~/bin (créer ce dossier s'il n'existe pas):

#!/bin/bash
# ~/bin/dpkg
COUNT=0
for i in $@; do
        echo $i | grep http 2>&1 > /dev/null
        if [ $? == 0 ]; then
                URL="$URL $i"
                continue
        fi
        PASSTODPKG="$PASSTODPKG $i"
done

#Remove beginning and trailing space
URL=$(echo $URL | sed -e 's/^ //g' -e 's/ $//g')

if [ ! -z $URL ]; then
        mkdir /tmp/debs
        cd /tmp/debs
        for i in $URL; do
                wget "$i"
        done
        dpkg $PASSTODPKG /tmp/debs/*.deb
else
        dpkg $PASSTODPKG
fi

Ajoutez ensuite ceci à la dernière ligne de ~/.bashrc

PATH="~/bin:$PATH"

Le script est juste un wrapper pour dpkg. La ligne dans le fichier ~/.bashrc indique à bash que chaque fois que vous tapez dpkg, il exécutera ~/bin/dpkg (le script) plutôt que /usr/bin/dpkg.

Le script passera simplement les arguments à dpkg s'il n'y a pas d'URL fournie. Le script prend également en charge plusieurs URL. Voici quelques exemples qui fonctionneront:

Sudo dpkg -i http://www.example.com/file1.deb
Sudo dpkg -i http://www.example.com/file1.deb http://www.example.com/file2.deb
Sudo dpkg -i http://www.example.com/file1.deb existing.deb http://www.example.com/file2.deb
Sudo dpkg -i existing.deb
3
Andrew Gunnerson

lynx peut appeler dpkg (ou le Centre logiciel, si un écran est disponible) et vous propose d'installer un package téléchargé à votre place. Par exemple, en utilisant:

lynx http://archive.ubuntu.com/ubuntu/pool/main/z/zsh/

Et en téléchargeant l'un des fichiers .deb, l'invite suivante s'affiche:

Info for debian package '/tmp/user/1000/L11127-6774TMP.udeb':
 new debian package, version 2.0.
 size 2545218 bytes: control archive=5830 bytes.
     857 bytes,    21 lines      control              
   14682 bytes,   169 lines      md5sums              
     225 bytes,    20 lines   *  postinst             #!/bin/sh
 Package: zsh-doc
 Source: zsh
 Version: 5.1.1-1ubuntu1
 Architecture: all
 Maintainer: Ubuntu Developers <[email protected]>
 Installed-Size: 5291
 Depends: zsh-common (= 5.1.1-1ubuntu1)
 Section: doc
 Priority: optional
 Homepage: http://www.zsh.org/
 Description: zsh documentation - info/HTML format
  Zsh is a UNIX command interpreter (Shell) usable as an
  interactive login Shell and as a Shell script command
  processor. Of the standard shells, zsh most closely resembles
  ksh but includes many enhancements. Zsh has command-line editing,
  built-in spelling correction, programmable command completion,
  Shell functions (with autoloading), a history mechanism, and a
  Host of other features.
  .
  This contains the documentation in GNU info and HTML formats.
 Original-Maintainer: Debian Zsh Maintainers <[email protected]>

Do you wish to:
 - I)nstall the package now,
 - S)ave it to a file, or
 - Q)uit now
Your choice (I/S/Q)? I
Installation of Debian packages needs to be done as root.
Enter command used to become root (default=Sudo): 

Installing package...
[Sudo] password for bro3886: 
(Reading database ... 756955 files and directories currently installed.)
Preparing to unpack .../user/1000/L11127-6774TMP.udeb ...
Unpacking zsh-doc (5.1.1-1ubuntu1) over (5.0.5-4ubuntu1~ubuntu14.04.1) ...
dpkg: dependency problems prevent configuration of zsh-doc:
 zsh-doc depends on zsh-common (= 5.1.1-1ubuntu1); however:
  Version of zsh-common on system is 5.0.5-4ubuntu1~ubuntu14.04.1.

dpkg: error processing package zsh-doc (--install):
 dependency problems - leaving unconfigured
Processing triggers for doc-base (0.10.5) ...
Processing 1 changed doc-base file...
Processing triggers for install-info (5.2.0.dfsg.1-2) ...
Errors were encountered while processing:
 zsh-doc

Done.  Press <return> to continue: 

(Peut-être que je ne devrais pas essayer d'installer des paquets aléatoires sur Internet.)

1
muru

Je sais que cela fait longtemps que cette question n'a pas été répondue/posée, mais voici mon humble contribution :

#!/bin/bash
dir="/tmp/dpkg-get"
url="$1"
file="${url##*/}"

if [ "$EUID" -ne 0 ]
then
echo "Please run as root"
exit
fi

[ -d $dir ] || mkdir $dir
wget -q --show-progress -O "$dir/$file" $url && \
dpkg -i "$dir/$file"

Comment installer dpkg-get à partir de Pastebin avec une seule commande:

Sudo bash -c "wget http://Pastebin.com/raw/GWu7qLwK -O- | tr -d '\r' > /usr/local/bin/dpkg-get && \
chmod a+x /usr/local/bin/dpkg-get"

Comment l'utiliser (par exemple pour installer PowerShell 6 alpha):

Sudo dpkg-get https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.10/powershell_6.0.0-alpha.10-1ubuntu1.16.04.1_AMD64.deb

Et c'est tout.

Je sais que ce n'est pas parfait, mais c'est simple et ça marche.

N'oubliez pas de faire attention à ce que vous installez et à l'endroit où vous le téléchargez.

1
ruverav

Ce one-liner basé sur ne SO réponse a fonctionné pour moi sur Ubuntu 15.04 pour identifier la dernière version de atome sur github pour mon environnement (Ubuntu 64 bits) puis installez-le:

Sudo dpkg -i $(curl -w "%{filename_effective}" -LO $(curl -s https://api.github.com/repos/atom/atom/releases | grep browser_download_url | grep '64[.]deb' | head -n 1 | cut -d '"' -f 4))

Si vous faites cela dans un répertoire tmp, le fichier deb sera nettoyé chaque fois que vous videz votre dossier tmp. Sinon, vous pouvez supprimer manuellement le paquet deb si vous avez besoin d’espace disque.

0
hobs

Je pensais que je donnerais mes propres deux centimes à ce sujet. Vous pouvez installer un package à partir d'une URL à l'aide de la commande suivante:

wget insert_url_here

Une fois le téléchargement terminé, vous devez exécuter la commande dpkg en tant que superutilisateur: Sudo dpkg -i insert_file_name_here

Il suffit ensuite de suivre les instructions présentées dans le terminal.

0
Johnathan Brown

Vous pouvez l'ajouter à /etc/bash.bashrc comme suit (il s'agit d'une mise à niveau du script de Chen):

'dpkg-url'() {

COUNT=0

for package in "${urls[@]}"; do
    if [[ $package = *http* ]]; then 
    urls+=("$package")
    fi

    dpkg_url="$dpkg_url "$package""
done

# Remove beginning and trailing spaces #

url=$(echo "$url" | sed -e 's/^ //g' -e 's/ $//g')

if [[ ! -z "$url" ]]; then
    directory=$(mktemp -d);
        trap 'rm -rf "$directory"' EXIT

    cd "$directory" || exit
        for package in "$url"; do
            wget ""$package""
        done
    dpkg $dpkg_url "$directory"/*.deb
else
    dpkg $dpkg_url
fi
}

Bien que je ne vois pas pourquoi je reçois cette erreur lorsque je l’appelle comme suit:

dpkg-url -i http://downloads.sourceforge.net/ldview/ldview-4.2-beta1.x64.deb
dpkg: error: need an action option

Type dpkg --help for help about installing and deinstalling packages [*];
Use `dselect' or `aptitude' for user-friendly package management;
Type dpkg -Dhelp for a list of dpkg debug flag values;
Type dpkg --force-help for a list of forcing options;
Type dpkg-deb --help for help about manipulating *.deb files;

Options marked [*] produce a lot of output - pipe it through `less' or `more' !
0
Cypher2