Возможно ли установить .deb из URL?

Есть ли способ установить пакет deb непосредственно из URL-адреса, используя оболочку? Что-то вроде

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

(я знаю, что могу использовать wget, а затем dpkg, мне просто интересно, есть ли что-то, что это делает)

63
задан 6 July 2011 в 14:11

82 ответа

lynx может вызвать dpkg (или Центр программного обеспечения, если дисплей доступен) и предложить установить для вас загруженный пакет. Например, используя:

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

И загружая один из файлов .deb, отображается следующее приглашение:

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 <ubuntu-devel-discuss@lists.ubuntu.com> 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 <pkg-zsh-devel@lists.alioth.debian.org> 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:

(Возможно, я не должен пытаться установить случайные пакеты из Интернета.)

0
ответ дан 31 July 2018 в 10:28

Я знаю, что прошло какое-то время, так как на этот вопрос был дан ответ / отправлен, но вот мой скромный вклад:

#!/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"

Как установить dpkg-get из Pastebin с помощью одной команды:

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"

Как его использовать (например, для установки 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

И это все.

Я знаю, что это не идеально, но это

Помните, что будьте осторожны с тем, что вы устанавливаете и откуда вы его загружаете.

1
ответ дан 31 July 2018 в 10:28

Это невозможно без создания временного файла. Обычно вы делаете это как

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

или, возможно,

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

, но dpkg использует mmap для доступа к файлу, поэтому не работает. Об этом сообщается об ошибке: # 367297

18
ответ дан 31 July 2018 в 10:28
  • 1
    Это полезный ответ, но способ его структурирования заставляет казаться, что ответ «да, вот два способа сделать это». – bonh 15 December 2015 в 21:55
  • 2
    Ред. Обратите внимание, что dpkg 1.17.7+ принимает аргументы stdin для некоторых из своих команд , но не для установки. – Tgr 16 December 2015 в 02:45
  • 3
    HA HA! Я попробовал оба из них до Googling. Спасибо, что создали этот ответ, чтобы рассказать как единомышленники, «вы не сумасшедшие». – Bruno Bronosky 29 September 2017 в 19:30

Этот однострочный шрифт, основанный на ответе SO, работал для меня на Ubuntu 15.04, чтобы идентифицировать последнюю версию Atom на github для моей среды (64-разрядный Ubuntu), а затем установить его:

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))

Если вы сделаете это в каталоге tmp, файл deb будет очищен всякий раз, когда вы очистите свою папку tmp. В противном случае вы можете вручную удалить пакет deb, если вам нужно место на диске.

9
ответ дан 2 August 2018 в 03:14
  • 1
    Просто примечание: AptUrl не работает для программного обеспечения, которое не находится в репозитории пользователей – sergio91pt 5 July 2011 в 16:11
  • 2
    Это приятно, спасибо! В любом случае, я ищу что-то, что будет работать из командной строки, я отредактировал вопрос. К сожалению, apturl ожидает запуск X: / – Joril 6 July 2011 в 14:12

Просто подумал, что я дам свои два цента на это. Вы можете установить пакет из URL, используя следующую команду:

wget insert_url_here

После того, как он был загружен, вам нужно запустить команду dpkg в качестве суперпользователя: sudo dpkg -i insert_file_name_here

Затем следуйте инструкциям, которые будут представлены в терминале.

0
ответ дан 2 August 2018 в 03:14
  • 1
    Да, конечно, как указано в вопросе, между круглыми скобками :) – Joril 7 June 2018 в 12:56

Вы можете попробовать с помощью curl.

Чтобы загрузить файл в текущую папку и установить из локального файла:

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

или загрузить в /var/cache/apt/archives/ и установите оттуда:

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
3
ответ дан 2 August 2018 в 03:14
  • 1
    с использованием ошибки зависания: --install needs at least one package archive file argument – itsazzad 27 May 2015 в 12:34
  • 2
    используя ошибку получения dpkg: dpkg-deb: error: / dev / fd / 63 'не является архивом формата debian` – itsazzad 27 May 2015 в 12:36
  • 3
    используя последний завиток: dpkg: error processing archive puppetlabs-release-precise.deb (--install): – itsazzad 27 May 2015 в 12:41
  • 4
    Пытался установить wkhtmltopdf – itsazzad 27 May 2015 в 12:41
  • 5
    Подтверждение: все варианты не работают в Debian Jessie с dpkg 1.17.27 – Envek 4 September 2016 в 16:07

Вы можете добавить его к /etc/bash.bashrc, как следует (это обновление от сценария Чена):

'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 }

Хотя я не понимаю, почему я получаю эту ошибку при вызове ее следующим образом:

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
ответ дан 2 August 2018 в 03:14

На самом деле у меня есть скрипт, который делает что-то подобное:

Просто скопируйте и вставьте этот скрипт в ~/bin (создайте эту папку, если она не существует):

#!/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

Затем добавьте это к последней строке в ~/.bashrc

PATH="~/bin:$PATH"

. Сценарий является всего лишь оберткой для dpkg. Строка в файле ~/.bashrc сообщает bash, что всякий раз, когда вы вводите dpkg, она будет запускать ~/bin/dpkg (сценарий), а не /usr/bin/dpkg.

Скрипт просто пройдет аргументы dpkg, если URL не указан. Сценарий также поддерживает несколько URL-адресов. Вот несколько примеров, которые будут работать:

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
ответ дан 2 August 2018 в 03:14
  • 1
    Пожалуйста, дайте мне знать, есть ли проблемы со сценарием. Я не на своем компьютере Ubuntu, поэтому я записал это с моей памяти. – Andrew Gunnerson 6 July 2011 в 02:46
  • 2
    Какая память! – enzotib 6 July 2011 в 20:27
  • 3
    @enzotib: ха-ха! С количеством повторных попыток я делаю, моя память более полезна, чем мои резервные копии :) – Andrew Gunnerson 6 July 2011 в 20:34

lynx может вызвать dpkg (или Центр программного обеспечения, если дисплей доступен) и предложить установить для вас загруженный пакет. Например, используя:

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

И загружая один из файлов .deb, отображается следующее приглашение:

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 <ubuntu-devel-discuss@lists.ubuntu.com> 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 <pkg-zsh-devel@lists.alioth.debian.org> 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:

(Возможно, я не должен пытаться установить случайные пакеты из Интернета.)

0
ответ дан 2 August 2018 в 03:14

Я знаю, что прошло какое-то время, так как на этот вопрос был дан ответ / отправлен, но вот мой скромный вклад:

#!/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"

Как установить dpkg-get из Pastebin с помощью одной команды:

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"

Как его использовать (например, для установки 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

И это все.

Я знаю, что это не идеально, но это

Помните, что будьте осторожны с тем, что вы устанавливаете и откуда вы его загружаете.

1
ответ дан 2 August 2018 в 03:14

Это невозможно без создания временного файла. Обычно вы делаете это как

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

или, возможно,

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

, но dpkg использует mmap для доступа к файлу, поэтому не работает. Об этом сообщается об ошибке: # 367297

18
ответ дан 2 August 2018 в 03:14
  • 1
    Это полезный ответ, но способ его структурирования заставляет казаться, что ответ «да, вот два способа сделать это». – bonh 15 December 2015 в 21:55
  • 2
    Ред. Обратите внимание, что dpkg 1.17.7+ принимает аргументы stdin для некоторых из своих команд , но не для установки. – Tgr 16 December 2015 в 02:45
  • 3
    HA HA! Я попробовал оба из них до Googling. Спасибо, что создали этот ответ, чтобы рассказать как единомышленники, «вы не сумасшедшие». – Bruno Bronosky 29 September 2017 в 19:30

Этот однострочный шрифт, основанный на ответе SO, работал для меня на Ubuntu 15.04, чтобы идентифицировать последнюю версию Atom на github для моей среды (64-разрядный Ubuntu), а затем установить его:

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))

Если вы сделаете это в каталоге tmp, файл deb будет очищен всякий раз, когда вы очистите свою папку tmp. В противном случае вы можете вручную удалить пакет deb, если вам нужно место на диске.

9
ответ дан 4 August 2018 в 19:08
  • 1
    Просто примечание: AptUrl не работает для программного обеспечения, которое не находится в репозитории пользователей – sergio91pt 5 July 2011 в 16:11
  • 2
    Это приятно, спасибо! В любом случае, я ищу что-то, что будет работать из командной строки, я отредактировал вопрос. К сожалению, apturl ожидает запуск X: / – Joril 6 July 2011 в 14:12

Просто подумал, что я дам свои два цента на это. Вы можете установить пакет из URL, используя следующую команду:

wget insert_url_here

После того, как он был загружен, вам нужно запустить команду dpkg в качестве суперпользователя: sudo dpkg -i insert_file_name_here

Затем следуйте инструкциям, которые будут представлены в терминале.

0
ответ дан 4 August 2018 в 19:08
  • 1
    Да, конечно, как указано в вопросе, между круглыми скобками :) – Joril 7 June 2018 в 12:56

Вы можете попробовать с помощью curl.

Чтобы загрузить файл в текущую папку и установить из локального файла:

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

или загрузить в /var/cache/apt/archives/ и установите оттуда:

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
3
ответ дан 4 August 2018 в 19:08
  • 1
    с использованием ошибки зависания: --install needs at least one package archive file argument – itsazzad 27 May 2015 в 12:34
  • 2
    используя ошибку получения dpkg: dpkg-deb: error: / dev / fd / 63 'не является архивом формата debian` – itsazzad 27 May 2015 в 12:36
  • 3
    используя последний завиток: dpkg: error processing archive puppetlabs-release-precise.deb (--install): – itsazzad 27 May 2015 в 12:41
  • 4
    Пытался установить wkhtmltopdf – itsazzad 27 May 2015 в 12:41
  • 5
    Подтверждение: все варианты не работают в Debian Jessie с dpkg 1.17.27 – Envek 4 September 2016 в 16:07

Вы можете добавить его к /etc/bash.bashrc, как следует (это обновление от сценария Чена):

'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 }

Хотя я не понимаю, почему я получаю эту ошибку при вызове ее следующим образом:

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
ответ дан 4 August 2018 в 19:08

На самом деле у меня есть скрипт, который делает что-то подобное:

Просто скопируйте и вставьте этот скрипт в ~/bin (создайте эту папку, если она не существует):

#!/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

Затем добавьте это к последней строке в ~/.bashrc

PATH="~/bin:$PATH"

. Сценарий является всего лишь оберткой для dpkg. Строка в файле ~/.bashrc сообщает bash, что всякий раз, когда вы вводите dpkg, она будет запускать ~/bin/dpkg (сценарий), а не /usr/bin/dpkg.

Скрипт просто пройдет аргументы dpkg, если URL не указан. Сценарий также поддерживает несколько URL-адресов. Вот несколько примеров, которые будут работать:

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
ответ дан 4 August 2018 в 19:08
  • 1
    Пожалуйста, дайте мне знать, есть ли проблемы со сценарием. Я не на своем компьютере Ubuntu, поэтому я записал это с моей памяти. – Andrew Gunnerson 6 July 2011 в 02:46
  • 2
    Какая память! – enzotib 6 July 2011 в 20:27
  • 3
    @enzotib: ха-ха! С количеством повторных попыток я делаю, моя память более полезна, чем мои резервные копии :) – Andrew Gunnerson 6 July 2011 в 20:34

lynx может вызвать dpkg (или Центр программного обеспечения, если дисплей доступен) и предложить установить для вас загруженный пакет. Например, используя:

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

И загружая один из файлов .deb, отображается следующее приглашение:

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 <ubuntu-devel-discuss@lists.ubuntu.com> 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 <pkg-zsh-devel@lists.alioth.debian.org> 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:

(Возможно, я не должен пытаться установить случайные пакеты из Интернета.)

0
ответ дан 4 August 2018 в 19:08

Я знаю, что прошло какое-то время, так как на этот вопрос был дан ответ / отправлен, но вот мой скромный вклад:

#!/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"

Как установить dpkg-get из Pastebin с помощью одной команды:

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"

Как его использовать (например, для установки 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

И это все.

Я знаю, что это не идеально, но это

Помните, что будьте осторожны с тем, что вы устанавливаете и откуда вы его загружаете.

1
ответ дан 4 August 2018 в 19:08

Это невозможно без создания временного файла. Обычно вы делаете это как

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

или, возможно,

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

, но dpkg использует mmap для доступа к файлу, поэтому не работает. Об этом сообщается об ошибке: # 367297

18
ответ дан 4 August 2018 в 19:08
  • 1
    Это полезный ответ, но способ его структурирования заставляет казаться, что ответ «да, вот два способа сделать это». – bonh 15 December 2015 в 21:55
  • 2
    Ред. Обратите внимание, что dpkg 1.17.7+ принимает аргументы stdin для некоторых из своих команд , но не для установки. – Tgr 16 December 2015 в 02:45
  • 3
    HA HA! Я попробовал оба из них до Googling. Спасибо, что создали этот ответ, чтобы рассказать как единомышленники, «вы не сумасшедшие». – Bruno Bronosky 29 September 2017 в 19:30

Этот однострочный шрифт, основанный на ответе SO, работал для меня на Ubuntu 15.04, чтобы идентифицировать последнюю версию Atom на github для моей среды (64-разрядный Ubuntu), а затем установить его:

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))

Если вы сделаете это в каталоге tmp, файл deb будет очищен всякий раз, когда вы очистите свою папку tmp. В противном случае вы можете вручную удалить пакет deb, если вам нужно место на диске.

9
ответ дан 6 August 2018 в 03:25
  • 1
    Просто примечание: AptUrl не работает для программного обеспечения, которое не находится в репозитории пользователей – sergio91pt 5 July 2011 в 16:11
  • 2
    Это приятно, спасибо! В любом случае, я ищу что-то, что будет работать из командной строки, я отредактировал вопрос. К сожалению, apturl ожидает запуск X: / – Joril 6 July 2011 в 14:12

Просто подумал, что я дам свои два цента на это. Вы можете установить пакет из URL, используя следующую команду:

wget insert_url_here

После того, как он был загружен, вам нужно запустить команду dpkg в качестве суперпользователя: sudo dpkg -i insert_file_name_here

Затем следуйте инструкциям, которые будут представлены в терминале.

0
ответ дан 6 August 2018 в 03:25
  • 1
    Да, конечно, как указано в вопросе, между круглыми скобками :) – Joril 7 June 2018 в 12:56

Вы можете попробовать с помощью curl.

Чтобы загрузить файл в текущую папку и установить из локального файла:

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

или загрузить в /var/cache/apt/archives/ и установите оттуда:

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
3
ответ дан 6 August 2018 в 03:25
  • 1
    с использованием ошибки зависания: --install needs at least one package archive file argument – itsazzad 27 May 2015 в 12:34
  • 2
    используя ошибку получения dpkg: dpkg-deb: error: / dev / fd / 63 'не является архивом формата debian` – itsazzad 27 May 2015 в 12:36
  • 3
    используя последний завиток: dpkg: error processing archive puppetlabs-release-precise.deb (--install): – itsazzad 27 May 2015 в 12:41
  • 4
    Пытался установить wkhtmltopdf – itsazzad 27 May 2015 в 12:41
  • 5
    Подтверждение: все варианты не работают в Debian Jessie с dpkg 1.17.27 – Envek 4 September 2016 в 16:07

Вы можете добавить его к /etc/bash.bashrc, как следует (это обновление от сценария Чена):

'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 }

Хотя я не понимаю, почему я получаю эту ошибку при вызове ее следующим образом:

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
ответ дан 6 August 2018 в 03:25

На самом деле у меня есть скрипт, который делает что-то подобное:

Просто скопируйте и вставьте этот скрипт в ~/bin (создайте эту папку, если она не существует):

#!/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

Затем добавьте это к последней строке в ~/.bashrc

PATH="~/bin:$PATH"

. Сценарий является всего лишь оберткой для dpkg. Строка в файле ~/.bashrc сообщает bash, что всякий раз, когда вы вводите dpkg, она будет запускать ~/bin/dpkg (сценарий), а не /usr/bin/dpkg.

Скрипт просто пройдет аргументы dpkg, если URL не указан. Сценарий также поддерживает несколько URL-адресов. Вот несколько примеров, которые будут работать:

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
ответ дан 6 August 2018 в 03:25
  • 1
    Пожалуйста, дайте мне знать, есть ли проблемы со сценарием. Я не на своем компьютере Ubuntu, поэтому я записал это с моей памяти. – Andrew Gunnerson 6 July 2011 в 02:46
  • 2
    Какая память! – enzotib 6 July 2011 в 20:27
  • 3
    @enzotib: ха-ха! С количеством повторных попыток я делаю, моя память более полезна, чем мои резервные копии :) – Andrew Gunnerson 6 July 2011 в 20:34

lynx может вызвать dpkg (или Центр программного обеспечения, если дисплей доступен) и предложить установить для вас загруженный пакет. Например, используя:

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

И загружая один из файлов .deb, отображается следующее приглашение:

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 <ubuntu-devel-discuss@lists.ubuntu.com> 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 <pkg-zsh-devel@lists.alioth.debian.org> 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:

(Возможно, я не должен пытаться установить случайные пакеты из Интернета.)

1
ответ дан 6 August 2018 в 03:25

Я знаю, что прошло какое-то время, так как на этот вопрос был дан ответ / отправлен, но вот мой скромный вклад:

#!/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"

Как установить dpkg-get из Pastebin с помощью одной команды:

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"

Как его использовать (например, для установки 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

И это все.

Я знаю, что это не идеально, но это

Помните, что будьте осторожны с тем, что вы устанавливаете и откуда вы его загружаете.

1
ответ дан 6 August 2018 в 03:25

Это невозможно без создания временного файла. Обычно вы делаете это как

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

или, возможно,

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

, но dpkg использует mmap для доступа к файлу, поэтому не работает. Об этом сообщается об ошибке: # 367297

19
ответ дан 6 August 2018 в 03:25
  • 1
    Это полезный ответ, но способ его структурирования заставляет казаться, что ответ «да, вот два способа сделать это». – bonh 15 December 2015 в 21:55
  • 2
    Ред. Обратите внимание, что dpkg 1.17.7+ принимает аргументы stdin для некоторых из своих команд , но не для установки. – Tgr 16 December 2015 в 02:45
  • 3
    HA HA! Я попробовал оба из них до Googling. Спасибо, что создали этот ответ, чтобы рассказать как единомышленники, «вы не сумасшедшие». – Bruno Bronosky 29 September 2017 в 19:30

Этот однострочный шрифт, основанный на ответе SO, работал для меня на Ubuntu 15.04, чтобы идентифицировать последнюю версию Atom на github для моей среды (64-разрядный Ubuntu), а затем установить его:

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))

Если вы сделаете это в каталоге tmp, файл deb будет очищен всякий раз, когда вы очистите свою папку tmp. В противном случае вы можете вручную удалить пакет deb, если вам нужно место на диске.

9
ответ дан 7 August 2018 в 21:12
  • 1
    Просто примечание: AptUrl не работает для программного обеспечения, которое не находится в репозитории пользователей – sergio91pt 5 July 2011 в 16:11
  • 2
    Это приятно, спасибо! В любом случае, я ищу что-то, что будет работать из командной строки, я отредактировал вопрос. К сожалению, apturl ожидает запуск X: / – Joril 6 July 2011 в 14:12

Просто подумал, что я дам свои два цента на это. Вы можете установить пакет из URL, используя следующую команду:

wget insert_url_here

После того, как он был загружен, вам нужно запустить команду dpkg в качестве суперпользователя: sudo dpkg -i insert_file_name_here

Затем следуйте инструкциям, которые будут представлены в терминале.

0
ответ дан 7 August 2018 в 21:12
  • 1
    Да, конечно, как указано в вопросе, между круглыми скобками :) – Joril 7 June 2018 в 12:56

Вы можете попробовать с помощью curl.

Чтобы загрузить файл в текущую папку и установить из локального файла:

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

или загрузить в /var/cache/apt/archives/ и установите оттуда:

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
3
ответ дан 7 August 2018 в 21:12
  • 1
    с использованием ошибки зависания: --install needs at least one package archive file argument – itsazzad 27 May 2015 в 12:34
  • 2
    используя ошибку получения dpkg: dpkg-deb: error: / dev / fd / 63 'не является архивом формата debian` – itsazzad 27 May 2015 в 12:36
  • 3
    используя последний завиток: dpkg: error processing archive puppetlabs-release-precise.deb (--install): – itsazzad 27 May 2015 в 12:41
  • 4
    Пытался установить wkhtmltopdf – itsazzad 27 May 2015 в 12:41
  • 5
    Подтверждение: все варианты не работают в Debian Jessie с dpkg 1.17.27 – Envek 4 September 2016 в 16:07

Другие вопросы по тегам:

Похожие вопросы: