it-swarm.dev

Je možné nainstalovat .deb z adresy URL?

Existuje způsob, jak nainstalovat deb balíček přímo z URL, pomocí Shell ? Něco jako

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

(Vím, že bych mohl použít wget a pak dpkg, já jsem jen přemýšlel, jestli existuje něco, co už to dělá)

80
Joril

Edit: Neviděl jsem vaše předchozí prohlášení o tom, že víte, že byste se mohli probudit, takže je to trochu trapné ... nechám to tady pro každého, kdo chce vědět, jak to udělat. Předchozí verze mé odpovědi navíc nefungovala, ale tato verze (na úkor poněkud delší):

TEMP_DEB="$(mktemp)" &&
wget -O "$TEMP_DEB" 'http://path.to/my.deb' &&
Sudo dpkg -i "$TEMP_DEB"
rm -f "$TEMP_DEB"

Stačí pouze změnit URL na začátku. Toto by mohlo být aliasováno nebo psáno jako bash funkce.

Uvědomuji si, že se to týká technických a bezpečnostních problémů (nedostáváte automatické aktualizace, může být zdroj důvěryhodný atd.), Ale na čistě principu „do-it-it-it“ by to mohlo fungovat.

52
Oli

Bez vytvoření dočasného souboru není možné . Normálně byste to udělali takto

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

nebo možná

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

ale dpkg používá k přístupu k souboru mmap, takže ani nefunguje. O tom je hlášení o chybě: # 367297

29
Tgr

Nejrychlejší metoda je taková. Klepnutím spustíte instalaci závěrka .

URL použité pro kliknutí na jméno:

http://packages.ubuntu.com/shutter

... a kliknutím na ikonu:

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

A ano, pro dokončení instalace .DEB potřebujete Ubuntu Software Center. V opačném případě budete muset provést instalaci z Nautilus nebo příkazového řádku.

Kompletní text použitý pro toto je pouze pro Ask Ubuntu, takže jej musíte přeformátovat do kotvy:

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

Více informací najdete na stránka apturl wiki :

  1. 1 balení:

    a href="apt:package"
    
  2. Balíček několika balíčků:

    a href="apt:package1,package2,package3"
    
  3. Povolení úložišť:

    apturl apt:freevial?section=universe
    

Pokud tedy software není ve výchozím povoleném úložišti, měli byste do něj přidat 'section ='. Jinak nemůžete použít tuto metodu a potřebujete, aby si ji uživatel stáhl a nainstaloval sám.

9
Rinzwind

Můžete zkusit s curl.

Stažení souboru do aktuální složky a instalace z lokálního souboru:

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

nebo stáhnout do /var/cache/apt/archives/ a nainstalujte odtamtud:

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

Vlastně mám skript, který dělá něco podobného:

Stačí zkopírovat a vložit tento skript do ~/bin (vytvořte tuto složku, pokud neexistuje):

#!/bin/bash
# ~/bin/dpkg
COUNT=0
for i in [email protected]; 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

Pak to přidejte na poslední řádek v ~/.bashrc

PATH="~/bin:$PATH"

Skript je pouze obálka pro dpkg. Řádek v ~/.bashrc file říká bash, že kdykoli zadáte dpkg, spustí se ~/bin/dpkg (skript), spíše než /usr/bin/dpkg.

Skript pouze předá argumenty dpkg, pokud není zadána žádná URL. Skript také podporuje více adres URL. Zde je několik příkladů, které budou fungovat:

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

lynx může volat dpkg (nebo Softwarové centrum, pokud je k dispozici obrazovka) a nabídnout instalaci staženého balíčku pro vás. Například pomocí:

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

A stáhnete si jeden z .deb soubory, zobrazí se následující výzva:

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: 

(Možná bych se neměl pokusit nainstalovat náhodné balíčky z internetu.)

2
muru

Vím, že je to už nějakou dobu, co byla tato otázka zodpovězena/zveřejněna, ale zde je můj skromný příspěvek :

#!/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 nainstalovat dpkg-get z Pastebinu jediným příkazem:

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 ji používat (například k instalaci 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

A to je vše.

Vím, že to není dokonalé, ale je to jednoduché a funguje to.

Nezapomeňte být opatrní, co instalujete a odkud jej stahujete.

1
ruverav

Jen jsem si myslel, že na to dám své dva centy. Balíček můžete nainstalovat z adresy URL pomocí následujícího příkazu:

wget insert_url_here

Po stažení je třeba spustit příkaz dpkg jako superuživatel: Sudo dpkg -i insert_file_name_here

Poté postupujte podle pokynů uvedených v terminálu.

1
Johnathan Brown

Tento jednosměrný leták založený na an SO odpověď pracoval pro mě na Ubuntu 15.04, aby identifikoval nejnovější atom uvolnění na githubu pro mé prostředí ( 64bitový Ubuntu) a poté jej nainstalujte:

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

Pokud tak učiníte v adresáři tmp, bude soubor deb odstraněn při každém vyprázdnění složky tmp. Jinak můžete ručně odstranit deb balíček, pokud potřebujete místo na disku.

0
hobs

Právě jsem zabalený Oli'sodpověď do bash funkce, kterou lze přidat k vašemu .<Shell>rc file:

function dpkg_r() {
  local tmp_deb="$(mktemp)"
  local src_url=$1
  local args=${@:2}

  wget -O $tmp_deb $src_url &&
  Sudo dpkg -i $tmp_deb $args &&
  { rm -f $tmp_deb; true; } || # commands above succeeded, remove tmp file
  { rm -f $tmp_deb; false; }   # commands above failed, remove tmp file anyway
}

Pojmenujte ji, jak chcete. Pojmenoval jsem to jako dpkg_r kde r znamená vzdálené tam

0
Hirurg103

Můžete jej připojit k /etc/bash.bashrc jak to vypadá (jedná se o upgrade z Chenova skriptu):

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

I když nevidím důvod, proč se mi tato chyba při volání následující:

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
nathanel.titane