Luettelo käytettävissä olevista päivityksistä, mutta älä asenna niitä.

Haluan, että cron-run-raportointikomentojeni ilmoittaa minulle, jos paketteihini on päivityksiä. Onko tapa saada apt-get antaa minulle luettelo saatavilla olevista päivityksistä, mutta älä tee mitään muuta?

Vastaa

apt

Moderneissa versioissa apt on oma kytkin tähän:

apt list --upgradable

apt-get

Vanhalle apt-get -komennolle -u -kytkin näyttää luettelon päivitettävistä paketeista:

# apt-get -u upgrade --assume-no

Kohdasta apt-get man-sivu :

-u
– näytä- päivitetty
  Näytä päivitetyt paketit; Tulosta luettelo kaikista päivitettävistä paketeista. Määrityskohde: APT :: Get :: Näytä-päivitetty.
–assume-no   Automaattinen ”ei” kaikille kehotteille. & lt == Estä sitä aloittamasta

Kommentit

  • Toivoin, että tämä voidaan tehdä ilman juuria
  • Jos kirjoitat ” Y ” ja painat Enter, tämä komento asentaa päivitykset. Suosittelen ehdottomasti lisäämään ” -s ”, muuten tämä vastaus on harhaanjohtava
  • Tämä on erittäin väärä vastaus, koska (ilman lisäasetuksia) komento odottaa syötettä ja jos käyttäjä syöttää väärän syötteen, paketti asennetaan, joka muuttaa järjestelmää mikä ei ole mikä OP haluaa (tapahtui juuri järjestelmässäni)
  • Ja btw: -u on oletusasetus apt-get
  • @ThorSummoner ’ -s ’ tekee mitä haluat & toimii ilman juurta

Vastaa

apt-get --just-print upgrade 

Ei lueta niin helposti Alla on perl one liner apt-get ”-lähdön jäsentämiseksi:

apt-get --just-print upgrade 2>&1 | perl -ne "if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}" 

Tämän pitäisi tuottaa jotain:

PROGRAM: grub-pc INSTALLED: 1.99-21ubuntu3.1 AVAILABLE: 1.99-21ubuntu3.9 

Toivottavasti se auttaa joku muu,

Kommentit

  • j kaipaa naurua: apt-get -s päivitys | awk -F ’ [] [()] + ’ ’ / ^ Inst / {printf ” Oikeus:% s \ tcur:% s \ tavail:% s \ n ”, $ 2, $ 3, $ 4} ’
  • Se voi myös olla paljon mukavamman näköinen, jos käyttää column näin: apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
  • @AntonioK Näyttää hyvältä!
  • Pelkään, että tämä Perl-koodi hakkeroi koneeni. ..

.;)

  • @AntonioK Kuinka lajitellaan ohjelmien nimet aakkosjärjestykseen?
  • Vastaa

    Toinen vaihtoehto, enzotibin innoittamana:

    aptitude search "~U" | wc -l

    Tämä komento käyttää aptitude-ohjelmaa uusien pakettien ja wc: n tulostamiseen laskea vain viivat.

    Eräässä sivuhuomautuksessa havaitsin, että entsotibin ratkaisu ilman yksittäisiä lainauksia ~U -tekniikan ympärillä ei toiminut minulle. (Wheezy, ZSH, kyky 0.6.8.2)

    Päivitys:

    Uuden apt: n avulla voit tehdä seuraavaa:

    apt list --upgradeable

    Kommentit

    • Kiitos tästä, apt list -komento oli juuri sitä, mitä halusin.
    • Hienoa tässä ratkaisussa on, että et tarvitse sudo / rootia.

    Vastaa

    Helpoin tapa on:

    apt list --upgradeable

    kommentit

    • ei toimi rahapajan kanssa.
    • Se ’ on häpeällistä, että tämä ei ’ t palauta erilaisia poistumiskoodeja sen mukaan, onko päivityksiä saatavilla vai ei. Olisi ollut kiva käyttää tätä komentosarjassa.

    Vastaa

    Voit suorittaa

    aptitude -F%p --disable-columns search ~U 

    tai dokumentoimaton

    /usr/lib/update-notifier/apt-check -p; echo 

    Toinen menetelmä, joka käyttää apt-get simulointi:

    apt-get -s dist-upgrade | awk "/^Inst/ { print $2 }" 

    kommentit

    • Tämä aptitude-komento toimi minulle hyvin ja toimi ei vaadi root-sovellusta
    • apt-get -s dist-upgrade toimii myös hyvin ja sillä on sama tulos, kun syötät sen läpi tämän haasteen
    • kiitos! tämä pääsi melkoisen riippuvuuden helvetistä. yritti dist-upgrade, mutta ei menettänyt joitain paketteja, joita niin tarvitaan aptitude käyttämiseen. aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }') teki tempun!

    vastaus

    Katso paketti ”apticron”:

    apticron – yksinkertainen työkalu postitse odottavista pakettipäivityksistä

    Apticron on yksinkertainen komentosarja, joka lähettää päivittäin sähköposteja odottavista pakettipäivityksistä, kuten tietoturvapäivityksistä, molempien pidossa olevien pakettien asianmukaisesta käsittelystä dselectin ja soveltuvuuden perusteella.

    https://packages.debian.org/buster/apticron

    Kommentit

    • Linkkisi on rikki …

    Vastaa

    apt-get update && apt-get -s upgrade 

    näyttää käytettävissä olevat päivitykset asentamatta sitä.

    Ensimmäinen komento päivittää pakettihakemistotiedostot ennen simuloitua (eli -s) päivitystä tehty. ”-s” suorittaa simuloidun päivityksen, joka näyttää asennetut paketit, mutta ei asenna mitään.

    Päinvastoin ”-u” ”-s”: n sijaan asennettaisiin vahvistuksen jälkeen.

    Kommentit

    • Simulointivaihtoehto voidaan laukaista millä tahansa -s, --simulate, --just-print, --dry-run, --recon, --no-act -kohdasta, uudelleenkäynnistys ja kuivakäynti ovat minun henkilökohtaiset suosikit.

    Vastaa

    Tarvitsin täydellisiä versiotietoja mahdollisista päivityksistä, joten käytin muunnosta jasonwryaniin ”s vastaus:

    apt-get -V -u upgrade 

    Se on yksinkertainen ja IMO: n muotoiltu lähtö kohtuullisesti.

    Vastaa

    Suodata vain

    apt-get update && apt-get -s -V -u upgrade 

    tulos, jotta lokissasi on vain ensisijaiset tiedot.

    Todennäköisesti tarvitset kauniin osan rivin jälkeen.

    Seuraavat paketit päivitetään:

    jossa on vähän välilyöntejä alussa.

    Kommentit

    • Hei ja tervetuloa sivustolle. Nykyisessä vastauksessasi on pohjimmiltaan olemassa olevien vastauksia, joten se ei lisää mitään uutta. Voit parantaa sitä selittämällä esimerkiksi tuotoksen suodattamisen, lisäämällä selityksen siitä, mitä eri kytkimet tekevät.

    Vastaa

    apt-get update > /dev/null && apt-get --just-print upgrade | grep "Inst " 

    on yksinkertaisin cron-sähköposteille; käyttäjän iteraatiota ei ole, ja jos päivityksiä ei ole, tulos ei ole.

    Vastaa

    Jet toinen linjaliikenne, innoittamana tämä vastaus :

     function a { read input;dpkg -l ${input} | grep " ${input} " | awk "{$1=$2=$3=$4="";print $0}" | sed "s/^ *//";unset input;};{ apt-get --just-print upgrade 2>&1 | perl -ne "if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}";} | while read -r line; do echo -en "$line $(echo $line | awk "{print $1}" | a )\n"; done;  

    Tulos näyttää tältä (värillinen):

    locales (2.13-38+deb7u7 -> 2.13-38+deb7u8) Embedded GNU C Library: National Language (locale) data [support] linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Header files for Linux 3.2.0-4-amd64 linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Common header files for Linux 3.2.0-4 sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2) Provide limited super user privileges to specific users 

    Jos et halua lyhyt kuvaus, käytä tätä:

     { apt-get --just-print upgrade 2>&1 | perl -ne "if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}";} | while read -r line; do echo -en "$line\n"; done;  

    Tulos:

    locales (2.13-38+deb7u7 -> 2.13-38+deb7u8) linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2) 

    Kommentit

    • Yksi linja on loistava, paitsi että se ’ ei tuota joidenkin pakettien kuvausta.

    Vastaus

    apt-check on todennäköisesti tehokkain komentosarjatapa.

    /usr/lib/update-notifier/apt-check 2>&1 | cut -d ";" -f 1 

    Hyvin pieni muutos näyttää vain tietoturvapäivitykset.

    /usr/lib/update-notifier/apt-check 2>&1 | cut -d ";" -f 2 

    Vastaus

    Kirjoitettuani varoituksen käyttäjän @jasonwryan vastaukseen haluan tarjota oman ratkaisuni:

    apt-get dist-upgrade --assume-no 

    Valitettavasti tämä ei toimi debian wheezyn kanssa ja jouduin tarkistamaan joitain lxc-kontteja, joita ei ole vielä päivitetty. Tämä lomake toimii aina:

    apt-get dist-upgrade </dev/null 

    Halusin lopuksi myös muotoilla tuloksen uudelleen. Päätin vaihtaa puhelun uudelleen (käyttämällä --dry-run mutta jättämällä huomioimatta kaikki lisälähdöt), koska se tuntuu turvallisemmalta:

    apt-get --dry-run dist-upgrade | awk " BEGIN{p=0} /^The/{p=1;t=$0} /no longer required/{p=0} #optional: /been kept back/{p=0} p && t{print t;t=""} /^ / && p{print $0} " 

    Palauttaa:

    The following packages have been kept back: iproute The following packages will be upgraded: unzip 

    Vastaa

    Haluan käyttää tätä:

    apt-get -qq update && apt-get -qq -s upgrade 

    Saat tällaisen tuloksen:

    Inst linux-base [3.5] (4.5~deb8u1 Debian-Security:8/oldstable [all]) Conf linux-base (4.5~deb8u1 Debian-Security:8/oldstable [all]) 

    jos saatavilla on päivityksiä , eikä mikään, jos ei ole ”t”. Tällä tavalla voit yksinkertaisesti yhdistää sen valvontaratkaisuun.

    Vastaa

    A muunnelma Käytän seuraavaa:

    apt-get -V -s dist-upgrade \ |grep -E "^ .*=>.*" \ |awk "BEGIN { ul=sprintf("%*s",40,""); gsub(/ /,"-",ul); printf "%-30s %-30s %-30s\n", "Package", "Installed", "Available"; printf "%-30.30s %-30.30s %-30.30s\n", ul, ul, ul; } { printf "%-30s %-30s %-30s\n", $1, substr($2,2), substr($4,1,length($4)-1) }" 

    Kiinnitä se komentosarjaan nimeltä apt-updates ja voit sitten soittaa apt-updates saadaksesi luettelon kaikista päivityksistä käyttäjästä riippumatta.

    Sinun on silti soitettava apt-get update, jolla on etuoikeutettu käyttöoikeus.

    Kommentit

    • tuotos näyttää vain paketin nimen (ensimmäinen sarake), toinen sarake tulostaa aina = ” ja kolmas sarake on aina tyhjä.

    m Mintissa.

    Vastaa

    Siellä ” s apt-show-versions -työkalu. Näytä käytettävissä olevat päivitykset:

    apt-show-versions -u 

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *