Bir URL'den .deb yüklemek mümkün mü?

61

Bir URL'den doğrudan bir borç paketi yüklemenin bir yolu var mı, bir kabuk kullanarak ?

gibi bir şey
dpkg -i http://domain.com/path/to/package.deb

(Ben wget'i kullanabileceğimi biliyorum ve sonra dpkg, sadece bunu yapan bir şey olup olmadığını merak ediyorum)

    
sordu Joril 05.07.2011 12:28

10 cevap

39

Düzenleme: Önceki cildinizi bildiğini bilemediğini görmedim, bu yüzden bu biraz garip ... Bunu nasıl yapacağını bilmek isteyen herkes için buradan ayrılacağım. Ayrıca, cevabımın önceki sürümü çalışmadı, ancak bu sürüm (biraz daha uzun olma pahasına):

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

Sadece URL'yi başlangıçta değiştirmeniz gerekiyor. Bu, bir bash işlevi olarak yazılabilir veya yazılabilir.

Bunu çevreleyen teknik ve güvenlik sorunları olduğunun farkındayım (otomatik güncellemeler almazsınız, kaynağa güvenilebilir, vb.), ancak tamamen yapabilirim, bu işe yarayabilir.

    
verilen cevap Oli 05.07.2011 13:48
19

Geçici bir dosya oluşturmadan mümkün değil . Normalde böyle yaparsın

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

veya belki

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

ancak dpkg dosyaya erişmek için mmap komutunu kullanır; Bununla ilgili bir hata raporu var: # 367297

    
verilen cevap Tgr 31.07.2012 15:43
9

En hızlı yöntem böyle. Enstantane kurulumunu başlatmak için tıklayın.

Adın tıklanması için kullanılan URL'ler:

http://packages.ubuntu.com/shutter

... ve simgeye tıklama için:

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

Ve evet, bir .DEB kurulumunu bitirmek için Ubuntu Yazılım Merkezine ihtiyacınız var. Aksi halde, yüklemeyi Nautilus veya komut satırından yürütmeniz gerekir.

Bunun için kullanılan tam metin, yalnızca Ubuntu'ya sormanız içindir. Bu nedenle, bunu bir çapa halinde yeniden biçimlendirmeniz gerekir:

[shutter](http://packages.ubuntu.com/shutter) [![Install shutter]
(https://hostmar.co/software-small)](http://apt.ubuntu.com/p/shutter)

Daha fazla bilgi apturl viki sayfasında bulunabilir:

  1. 1 Paket:

    a href="apt:package"
    
  2. Birkaç paketin paketlenmesi:

    a href="apt:package1,package2,package3"
    
  3. Depoları etkinleştirme:

    apturl apt:freevial?section=universe
    

Eğer yazılım varsayılan olarak etkin bir depoda değilse, ona 'section =' eklemelisiniz. Aksi takdirde, bu yöntemi kullanamazsınız ve indirmek ve yüklemek için kullanıcıya ihtiyaç duyarsınız.

    
verilen cevap Rinzwind 05.07.2011 12:41
3

curl ile deneyebilirsiniz.

Dosyayı geçerli klasöre indirmek ve yerel dosyadan yüklemek için:

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

veya /var/cache/apt/archives/ dosyasına indirin ve buradan yükleyin:

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
    
verilen cevap kenorb 17.09.2014 23:27
3

Aslında benzer bir şey yapan bir komut dosyası var:

Bu komut dosyasını kopyalayıp ~/bin dosyasına yapıştırın (mevcut değilse bu klasörü oluşturun):

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

Ardından bunu ~/.bashrc

içindeki son satıra ekleyin.
PATH="~/bin:$PATH"

Komut dosyası, dpkg için bir paketleyicidir. % Co_de% dosyasındaki satır, ~/.bashrc yazdığınızda bash yerine dpkg (betik), ~/bin/dpkg çalıştıracağını belirtir.

Komut dosyası, URL’ler belirtilmediyse argümanları /usr/bin/dpkg değerine aktarır. Komut ayrıca birden çok URL'yi de destekler. İşte çalışacak bazı örnekler:

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
    
verilen cevap Andrew Gunnerson 05.07.2011 23:40
1

lynx , dpkg öğesini (veya bir ekran mevcutsa Yazılım Merkezi) arayabilir ve sizin için indirilmiş bir paket yüklemeyi önerebilir. Örneğin, kullanarak:

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

Ve .deb dosyasından birini indirerek, aşağıdaki komut istemi gösterilir:

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: 

(Belki de internetten rastgele paketler yüklememeliyim.)

    
verilen cevap muru 19.03.2016 12:36
1

Bu sorunun yanıtlandığından / gönderildiğinden bir süre geçtiğini biliyorum, ancak burada alçak gönüllü katkım :

#!/bin/bash
dir="/tmp/dpkg-get"
url=""
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'den dpkg-get nasıl tek bir komut ile yüklenir:

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"

Nasıl kullanılır (örneğin PowerShell 6 alpha yüklemek için):

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

Ve hepsi bu.

Mükemmel olmadığını biliyorum, ama basit ve işe yarıyor.

Ne yüklediğinize ve indirdiğiniz yere dikkat etmeyi unutmayın.

    
verilen cevap ruverav 13.10.2016 13:08
0

bir SO cevabına dayanan bu tek linkin, en son atom ortamım için github'da (64 bit Ubuntu) yayınladıktan sonra yükleyin:

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

Bunu bir tmp dizininde yaparsanız, tmp klasörünüzü her boşaltdığınızda deb dosyası temizlenecektir. Aksi takdirde, disk alanına ihtiyacınız varsa, borç paketini el ile silebilirsiniz.

    
verilen cevap hobs 31.05.2015 21:38
0

Bunu, aşağıdaki gibi /etc/bash.bashrc dosyasına ekleyebilirsiniz (Chen'in komut dosyasından bir yükseltme):

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

Ancak, aşağıdaki gibi çağırırken neden bu hatayı aldığımı görmüyorum ama

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' !
    
verilen cevap Cypher2 27.10.2012 22:36
0

Sadece kendi iki sentlerimi ona vereceğimi düşündüm. Aşağıdaki komutu kullanarak bir URL'den bir paket yükleyebilirsiniz:

wget insert_url_here

İndirildikten sonra, dpkg komutunu süper kullanıcı olarak çalıştırmanız gerekir: % Co_de%

Ardından terminalde sunulan talimatları takip edin.

    
verilen cevap Johnathan Brown 06.06.2018 13:20

Etiketlerdeki diğer soruları oku