Câu trả lời:
Chỉnh sửa: Tôi không thấy tuyên bố trước đây của bạn về việc biết bạn có thể quên nên điều này hơi khó xử ... Tôi sẽ để lại đây cho bất kỳ ai muốn biết cách làm điều này. Ngoài ra, phiên bản trước của câu trả lời của tôi không hoạt động nhưng phiên bản này (với chi phí dài hơn một chút) thì có:
TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"
Bạn chỉ cần thay đổi URL lúc đầu. Điều này có thể được đặt bí danh hoặc được viết dưới dạng hàm bash.
Tôi nhận thấy có các vấn đề kỹ thuật và bảo mật xung quanh vấn đề này (bạn không nhận được cập nhật tự động, nguồn có thể được tin cậy, v.v.), nhưng trên cơ sở hoàn toàn có thể, tôi có thể làm việc này.
Không thể không tạo một tập tin tạm thời. Thông thường bạn sẽ làm điều này như thế
### Does not work
wget --quiet --output-document=- http://example.com/path/to/package.deb | dpkg --install -
hoặc có thể
### Does not work
dpkg --install <(wget --quiet --output-document=- http://example.com/path/to/package.deb)
nhưng dpkg sử dụng mmap để truy cập tệp nên không hoạt động. Có một báo cáo lỗi về điều này: # 367297
Phương pháp nhanh nhất là như thế này. Nhấn vào đây để bắt đầu cài đặt màn trập .
URL được sử dụng để nhấp vào tên:
http://packages.ubuntu.com/shutter
... Và để nhấp vào biểu tượng:
http://apt.ubuntu.com/p/shutter
Và có, bạn cần Trung tâm phần mềm Ubuntu để hoàn tất cài đặt .DEB. Nếu không, bạn sẽ phải thực hiện cài đặt từ Nautilus hoặc dòng lệnh.
Toàn bộ văn bản được sử dụng cho mục đích này chỉ dành cho Hỏi Ubuntu vì vậy bạn cần định dạng lại nội dung này thành một neo:
[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://i.stack.imgur.com/HjNGK.png)](http://apt.ubuntu.com/p/shutter)
Thông tin thêm có thể được tìm thấy trên trang wiki apturl :
1 gói hàng:
a href="apt:package"
Gói một số gói:
a href="apt:package1,package2,package3"
Kích hoạt kho:
apturl apt:freevial?section=universe
Vì vậy, nếu phần mềm không có trong kho lưu trữ được bật mặc định, bạn nên thêm 'phần =' vào phần mềm. Nếu không, bạn không thể sử dụng phương pháp này và cần người dùng tải xuống và tự cài đặt.
Bạn có thể thử với curl
.
Để tải tệp xuống thư mục hiện tại và cài đặt từ tệp cục bộ:
curl -sLO https://apt.puppetlabs.com/puppetlabs-release-precise.deb && sudo dpkg -i puppetlabs-release-precise.deb
hoặc tải xuống /var/cache/apt/archives/
và cài đặt từ đó:
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:
/ dev / fd / 63 'không phải là kho lưu trữ định dạng debian`
dpkg: error processing archive puppetlabs-release-precise.deb (--install):
Tôi thực sự có một kịch bản làm một cái gì đó tương tự:
Chỉ cần sao chép và dán tập lệnh này vào ~/bin
(tạo thư mục này nếu nó không tồn tại):
#!/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
Sau đó thêm nó vào dòng cuối cùng trong ~/.bashrc
PATH="~/bin:$PATH"
Kịch bản chỉ là một trình bao bọc cho dpkg
. Dòng trong ~/.bashrc
tệp cho biết bash
rằng bất cứ khi nào bạn nhập dpkg
, nó sẽ chạy ~/bin/dpkg
(tập lệnh), chứ không phải /usr/bin/dpkg
.
Tập lệnh sẽ chuyển các đối số sang dpkg
nếu không có URL nào được đưa ra. Kịch bản cũng hỗ trợ nhiều URL. Dưới đây là một số ví dụ sẽ hoạt động:
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
có thể gọi dpkg
(hoặc Trung tâm phần mềm, nếu có sẵn màn hình) và đề nghị cài đặt gói đã tải xuống cho bạn. Ví dụ: sử dụng:
lynx http://archive.ubuntu.com/ubuntu/pool/main/z/zsh/
Và tải xuống một trong các .deb
tệp, lời nhắc sau đây được hiển thị:
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:
(Có lẽ tôi không nên cố gắng cài đặt các gói ngẫu nhiên trên internet.)
Tôi biết rằng đã được một lúc kể từ khi câu hỏi này được trả lời / đăng, nhưng đây là đóng góp khiêm tốn của tôi :
#!/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"
Cách cài đặt dpkg-get
từ Pastebin bằng một lệnh duy nhất:
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"
Cách sử dụng (ví dụ để cài đặt 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
Và đó là tất cả.
Tôi biết nó không hoàn hảo, nhưng nó đơn giản và nó hoạt động.
Hãy nhớ cẩn thận với những gì bạn cài đặt và từ nơi bạn tải xuống.
Điều này dựa trên câu trả lời SO đã làm việc với tôi trên Ubuntu 15.04 để xác định bản phát hành nguyên tử mới nhất trên github cho môi trường của tôi (Ubuntu 64 bit) và sau đó cài đặt nó:
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))
Nếu bạn làm điều này trong một tmp dir, tệp deb sẽ được dọn sạch bất cứ khi nào bạn làm trống thư mục tmp của bạn. Nếu không, bạn có thể xóa gói deb theo cách thủ công nếu bạn cần dung lượng đĩa.
Bạn có thể nối nó vào /etc/bash.bashrc
như sau (đây là bản nâng cấp từ tập lệnh của 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
}
Mặc dù tôi không thấy lý do tại sao tôi gặp lỗi này khi gọi nó như sau:
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' !
Chỉ cần nghĩ rằng tôi sẽ đưa ra hai xu của riêng tôi về điều này. Bạn có thể cài đặt gói từ URL bằng lệnh sau:
wget insert_url_here
Khi nó đã được tải xuống, bạn cần chạy lệnh dpkg dưới dạng siêu người dùng:
sudo dpkg -i insert_file_name_here
Sau đó, chỉ cần làm theo các hướng dẫn được trình bày trong thiết bị đầu cuối.
dpkg --skip-same-version -i $FILE
nếu nó sẽ được chạy từ các tập lệnh. Thêm thông tin ở đây - manpages.debian.org/unurdy/dpkg/dpkg.1.en.html