web-dev-qa-db-ja.com

URLから.debをインストールすることはできますか?

Debパッケージをインストールする方法はありますか直接 URLから、Shellを使用して?何かのようなもの

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

(wgetを使用してからdpkgを使用できることはわかっていますが、既にそれを行うものがあるかどうか疑問に思っています)

73
Joril

編集:私はあなたが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ベースで、これはうまくいくかもしれません。

49
Oli

一時ファイルを作成しないと、不可能です。通常は次のようにします

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

26
Tgr

最も速い方法はこのようなものです。クリックしてインストールを開始します shutter

名前をクリックするために使用されるURL:

http://packages.ubuntu.com/shutter

...そして、アイコンをクリックします:

http://apt.ubuntu.com/p/shutter

そして、はい。DEBのインストールを完了するにはUbuntu Software Centerが必要です。それ以外の場合は、Nautilusまたはコマンドラインからインストールを実行する必要があります。

これに使用される完全なテキストは、Ask Ubuntu専用であるため、これをアンカーに再フォーマットする必要があります。

[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://i.stack.imgur.com/HjNGK.png)](http://apt.ubuntu.com/p/shutter)

詳細は apturl wikiページ で見つけることができます:

  1. 1パッケージ:

    a href="apt:package"
    
  2. いくつかのパッケージのバンドル:

    a href="apt:package1,package2,package3"
    
  3. リポジトリの有効化:

    apturl apt:freevial?section=universe
    

したがって、ソフトウェアがデフォルトで有効になっているリポジトリにない場合は、「section =」を追加する必要があります。そうしないと、この方法を使用できず、ユーザーにダウンロードして自分でインストールする必要があります。

9
Rinzwind

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
6
kenorb

私は実際に似たようなことをするスクリプトを持っています:

このスクリプトをコピーして~/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を入力するたびに、~/bin/dpkgではなく/usr/bin/dpkg(スクリプト)を実行することをdpkgに伝えます。

URLが指定されていない場合、スクリプトは引数をdpkgに渡すだけです。このスクリプトは複数の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

lynxdpkg(またはディスプレイが利用可能な場合はソフトウェアセンター)を呼び出し、ダウンロードしたパッケージのインストールを提案できます。たとえば、次を使用します。

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

.debファイルの1つをダウンロードすると、次のプロンプトが表示されます。

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: 

(たぶん、インターネットからランダムなパッケージをインストールしようとするべきではありません。)

1
muru

この質問が回答/投稿されてからしばらく経ちましたが、ここに 私の謙虚な貢献 があります:

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

単一のコマンドでPastebinからdpkg-getをインストールする方法:

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
ruverav

an SO answer に基づくこのワンライナーは、Ubuntu 15.04で私の環境のgithubでの最新の atom リリースを識別するために働きました(64-bit 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ディレクトリーで実行すると、tmpフォルダーを空にするたびにdebファイルがクリーンアップされます。それ以外の場合、ディスク容量が必要な場合は、debパッケージを手動で削除できます。

0
hobs

私はこれに自分の2セントを与えると思った。次のコマンドを使用して、URLからパッケージをインストールできます。

wget insert_url_here

ダウンロードしたら、スーパーユーザーとしてdpkgコマンドを実行する必要があります:Sudo dpkg -i insert_file_name_here

次に、ターミナルに表示される指示に従ってください。

0
Johnathan Brown

次のように/etc/bash.bashrcに追加できます(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
}

次のように呼び出すと、このエラーが発生する理由がわかりませんが:

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
Cypher2