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à)
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.
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
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 paquet:
a href="apt:package"
Regrouper plusieurs paquets:
a href="apt:package1,package2,package3"
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.
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
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
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.)
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.
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.
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.
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' !