Есть ли способ установить пакет deb непосредственно из URL-адреса, используя оболочку? Что-то вроде
dpkg -i http://domain.com/path/to/package.deb
(я знаю, что могу использовать wget, а затем dpkg, мне просто интересно, есть ли что-то, что это делает)
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет увеличения времени):
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что в этом есть технические проблемы и проблемы с безопасностью (вы не получаете автоматических обновлений, можно ли доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет более длительного) делает:
TEMP_DEB = "$ (mktemp)" & amp; & amp; & amp; & amp; & amp; wget -O "$ TEMP_DEB" 'http://path.to/my.deb' & amp; & amp; & amp; sudo dpkg -i "$ TEMP_DEB" rm -f "$ TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что это связано с техническими проблемами и проблемами безопасности (вы не получаете автоматических обновлений, можно доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
Редактировать: я не видел вашего предыдущего заявления о том, что вы можете wget, так что это немного неудобно ... Я оставлю это здесь для всех, кто хочет знать, как это сделать. Кроме того, предыдущая версия моего ответа не сработала, но эта версия (за счет более длительного) делает:
TEMP_DEB = "$ (mktemp)" & amp; & amp; & amp; & amp; & amp; wget -O "$ TEMP_DEB" 'http://path.to/my.deb' & amp; & amp; & amp; sudo dpkg -i "$ TEMP_DEB" rm -f "$ TEMP_DEB"
Вам просто нужно изменить URL-адрес в начале. Это может быть псевдонимом или написано как функция bash.
Я понимаю, что это связано с техническими проблемами и проблемами безопасности (вы не получаете автоматических обновлений, можно доверять источнику и т. Д.), Но на чисто can-I-do-it, это может сработать.
dpkg -skip-same-version -i $ FILE
, если он будет запущен из скриптов. Подробнее здесь - manpages.debian.org/unstable/dpkg/dpkg.1.en.html
– Vadim Kotov
20 March 2017 в 13:56
Это невозможно без создания временного файла. Обычно вы делаете это как
### 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
Самый быстрый способ выглядит так. Нажмите, чтобы начать установку затвора.
URL-адреса, используемые для нажатия на имя:
http://packages.ubuntu.com/shutter
... и для щелчка по значку:
http://apt.ubuntu.com/p/shutter
И да, вам нужно, чтобы Ubuntu Software Center завершил установку .DEB. В противном случае вам придется выполнить установку из Nautilus или командной строки.
Полный текст, используемый для этого, предназначен только для Ask Ubuntu, поэтому вам нужно переформатировать это в якорь:
[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://hostmar.co/software-small)](http://apt.ubuntu.com/p/shutter)
[d8 ] Более подробную информацию можно найти на shutter : 1 Пакет: a href="apt:package"
Объединение нескольких пакетов: a href="apt:package1,package2,package3"
Включение репозиториев: apturl apt:freevial?section=universe
Поэтому, если программное обеспечение не находится в репозитории, включенном по умолчанию, вы должны добавить ему «section =». В противном случае вы не сможете использовать этот метод и вам нужно загрузить его и установить самостоятельно.
На самом деле у меня есть скрипт, который делает что-то подобное:
Просто скопируйте и вставьте этот скрипт в ~/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
Вы можете попробовать с помощью 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
Я знаю, что прошло какое-то время, так как на этот вопрос был дан ответ / отправлен, но вот мой скромный вклад:
#!/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 с помощью одной команды: [!d2 ]
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
И это все.
Я знаю, что это не идеально, но это
Помните, что будьте осторожны с тем, что вы устанавливаете и откуда вы его загружаете.
Этот однострочный шрифт, основанный на ответе 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, если вам нужно место на диске.
Вы можете добавить его к /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' !
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:
(Возможно, я не должен пытаться установить случайные пакеты из Интернета.)
Этот однострочный шрифт, основанный на ответе 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, если вам нужно место на диске.
Просто подумал, что я дам свои два цента на это. Вы можете установить пакет из URL, используя следующую команду:
wget insert_url_here
После того, как он был загружен, вам нужно запустить команду dpkg в качестве суперпользователя: sudo dpkg -i insert_file_name_here
Затем следуйте инструкциям, которые будут представлены в терминале.
Вы можете попробовать с помощью 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
Вы можете добавить его к /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' !
На самом деле у меня есть скрипт, который делает что-то подобное:
Просто скопируйте и вставьте этот скрипт в ~/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
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:
(Возможно, я не должен пытаться установить случайные пакеты из Интернета.)
Я знаю, что прошло какое-то время, так как на этот вопрос был дан ответ / отправлен, но вот мой скромный вклад:
#!/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
И это все.
Я знаю, что это не идеально, но это
Помните, что будьте осторожны с тем, что вы устанавливаете и откуда вы его загружаете.
Это невозможно без создания временного файла. Обычно вы делаете это как
### 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
Этот однострочный шрифт, основанный на ответе 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, если вам нужно место на диске.
Просто подумал, что я дам свои два цента на это. Вы можете установить пакет из URL, используя следующую команду:
wget insert_url_here
После того, как он был загружен, вам нужно запустить команду dpkg в качестве суперпользователя: sudo dpkg -i insert_file_name_here
Затем следуйте инструкциям, которые будут представлены в терминале.
Вы можете попробовать с помощью 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
Вы можете добавить его к /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' !
На самом деле у меня есть скрипт, который делает что-то подобное:
Просто скопируйте и вставьте этот скрипт в ~/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