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
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. ..
.;)
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 tarvitaanaptitude
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
-u
on oletusasetusapt-get