Odpowiedzi:
Edycja: Nie widziałem twojego poprzedniego oświadczenia o tym, że możesz się założyć, więc jest to trochę niezręczne ... Zostawię to tutaj każdemu, kto chce wiedzieć, jak to zrobić. Dodatkowo poprzednia wersja mojej odpowiedzi nie działała, ale ta wersja (kosztem nieco dłuższego) działa:
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Musisz tylko zmienić adres URL na początku. Może to być alias lub zapisany jako funkcja bash.
Zdaję sobie sprawę z tego, że są związane z tym problemy techniczne i związane z bezpieczeństwem (nie otrzymujesz automatycznych aktualizacji, czy można zaufać źródłu itp.), Ale na zasadzie, że mogę zrobić, może to działać.
Nie jest to możliwe bez utworzenia pliku tymczasowego. Normalnie zrobiłbyś to tak
### Does not work
wget --quiet --output-document=- http://example.com/path/to/package.deb | dpkg --install -
albo może
### Does not work
dpkg --install <(wget --quiet --output-document=- http://example.com/path/to/package.deb)
ale dpkg używa mmap do uzyskania dostępu do pliku, więc żadne z nich nie działa. Istnieje raport o błędzie na ten temat: # 367297
Najszybsza metoda jest taka. Kliknij, aby rozpocząć instalację migawki .
Adresy URL używane do klikania nazwy:
http://packages.ubuntu.com/shutter
... i kliknij ikonę:
http://apt.ubuntu.com/p/shutter
I tak, potrzebujesz Centrum Oprogramowania Ubuntu, aby zakończyć instalację .DEB. W przeciwnym razie będziesz musiał przeprowadzić instalację z Nautilus lub wiersza poleceń.
Pełny tekst użyty do tego jest tylko dla Ask Ubuntu, więc musisz sformatować to w kotwicę:
[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://i.stack.imgur.com/HjNGK.png)](http://apt.ubuntu.com/p/shutter)
Więcej informacji można znaleźć na stronie wiki apturl :
1 opakowanie:
a href="apt:package"
Pakowanie kilku pakietów:
a href="apt:package1,package2,package3"
Włączanie repozytoriów:
apturl apt:freevial?section=universe
Więc jeśli oprogramowanie nie znajduje się w domyślnie włączonym repozytorium, należy dodać do niego „section =”. W przeciwnym razie nie będziesz mógł użyć tej metody i musisz pobrać ją i zainstalować samodzielnie.
Możesz spróbować curl
.
Aby pobrać plik do bieżącego folderu i zainstalować z pliku lokalnego:
curl -sLO https://apt.puppetlabs.com/puppetlabs-release-precise.deb && sudo dpkg -i puppetlabs-release-precise.deb
lub pobierz /var/cache/apt/archives/
i zainstaluj stamtąd:
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
--install needs at least one package archive file argument
dpkg-deb: error:
pojawia się błąd: / dev / fd / 63 'nie jest archiwum formatu Debian`
dpkg: error processing archive puppetlabs-release-precise.deb (--install):
Mam skrypt, który robi coś podobnego:
Po prostu skopiuj i wklej ten skrypt do ~/bin
(utwórz ten folder, jeśli nie istnieje):
#!/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
Następnie dodaj to do ostatniego wiersza w ~/.bashrc
PATH="~/bin:$PATH"
Skrypt jest tylko opakowaniem dpkg
. Wiersz w ~/.bashrc
pliku informuje, bash
że za każdym razem, gdy wpiszesz dpkg
, uruchomi się ~/bin/dpkg
(skrypt), a nie /usr/bin/dpkg
.
Skrypt po prostu przekaże argumenty, dpkg
jeśli nie podano adresu URL. Skrypt obsługuje również wiele adresów URL. Oto kilka przykładów, które będą działać:
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
może zadzwonić dpkg
(lub do Centrum oprogramowania, jeśli dostępny jest wyświetlacz) i zaoferować zainstalowanie pobranego pakietu. Na przykład za pomocą:
lynx http://archive.ubuntu.com/ubuntu/pool/main/z/zsh/
Po pobraniu jednego z .deb
plików wyświetlany jest następujący monit:
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:
(Może nie powinienem próbować instalować losowych pakietów z Internetu.)
Wiem, że minęło trochę czasu, odkąd na to pytanie udzielono odpowiedzi / opublikowano, ale oto mój skromny wkład :
#!/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"
Jak zainstalować dpkg-get
z Pastebin za pomocą jednego polecenia:
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"
Jak go używać (na przykład, aby zainstalować 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
I to wszystko.
Wiem, że to nie jest idealne, ale jest proste i działa.
Pamiętaj, aby uważać na to, co instalujesz i skąd go pobierasz.
Ten jednowierszowy, oparty na odpowiedzi SO, działał dla mnie na Ubuntu 15.04 w celu zidentyfikowania najnowszej wersji atomu na github dla mojego środowiska (64-bitowe Ubuntu), a następnie zainstalowania go:
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))
Jeśli zrobisz to w katalogu tmp, plik deb zostanie wyczyszczony po każdym opróżnieniu folderu tmp. W przeciwnym razie możesz ręcznie usunąć pakiet deb, jeśli potrzebujesz miejsca na dysku.
Możesz dołączyć go /etc/bash.bashrc
w następujący sposób (jest to ulepszenie ze skryptu Chena):
'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
}
Chociaż nie rozumiem, dlaczego pojawia się ten błąd podczas wywoływania go w następujący sposób:
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' !
Pomyślałem, że dam za to dwa centy. Możesz zainstalować pakiet z adresu URL za pomocą następującego polecenia:
wget insert_url_here
Po pobraniu należy uruchomić polecenie dpkg jako administrator:
sudo dpkg -i insert_file_name_here
Następnie postępuj zgodnie z instrukcjami wyświetlanymi w terminalu.
dpkg --skip-same-version -i $FILE
jeśli będzie uruchamiany ze skryptów. Więcej informacji tutaj - manpages.debian.org/unstable/dpkg/dpkg.1.en.html