Sorolja fel az elérhető frissítéseket, de ne telepítse őket.

Szeretném, ha a cron futtatott jelentési szkriptem értesítene engem, ha vannak frissítések a csomagjaimhoz. Így lehet apt-get megadni az elérhető frissítések listáját, de nem teszek többet?

Válasz

apt

A apt modern verzióihoz erre külön kapcsoló van:

apt list --upgradable

apt-get

A régi apt-get parancshoz a kapcsoló megmutatja a frissítésre rendelkezésre álló csomagok listáját:

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

A apt-get man oldal :

-u
– show- frissített
  Frissített csomagok megjelenítése; Kinyomtatja az összes frissítendő csomag listáját. Konfigurációs elem: APT :: Get :: Show-Upgraded.
–assume-no   Automatikus “nem” minden felszólításra. & lt == Annak megakadályozása, hogy telepíteni kezdje

Megjegyzések

  • Reméltem, hogy ez root nélkül is megoldható
  • Ha beírja a ” Y ” parancsot, és megnyomja az Enter billentyűt, akkor ezt a parancsot telepíti a frissítéseket. Mindenképpen javasolnám a ” -s ” hozzáadását, különben ez a válasz félrevezető
  • Ez egy nagyon rossz válasz, mert (további opciók nélkül) a parancs megvárja a bevitelt, és ha a felhasználó rosszul írja be, akkor a csomag telepítve van, ami módosítja a rendszert ami nem az OP akar (csak a rendszeremen történt)
  • És a btw: -u a apt-get li alapértelmezett opciója >
  • @ThorSummoner ‘ -s ‘ megteszi, amit akar & gyökér nélkül

Válasz

apt-get --just-print upgrade 

Nem olvasható olyan könnyen Az alábbiakban egy perl one vonal található az apt-get “kimenet elemzéséhez:

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

Ennek olyasmit kell kiadnia:

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

Remélhetőleg másnak is segít,

megjegyzések

  • j kell a nevetésért: apt-get -s upgrade | awk -F ‘ [] [()] + ‘ ‘ / ^ Inst / {printf ” Prog:% s \ tcur:% s \ tavail:% s \ n “, $ 2, $ 3, $ 4} ‘
  • Ez is sokkal szebb megjelenésű lehet, ha a következőt használja: column: 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 remekül néz ki!
  • félek ‘ attól, hogy ez a Perl-kód feltöri a gépemet .. .;)
  • @AntonioK Hogyan rendezi a programok nevét betűrendben?

Válasz

Egy másik lehetőség, amelyet az enzotib ihletett:

aptitude search "~U" | wc -l

Ez a parancs az aptitude-t használja az új csomagok, majd a wc kiadására hogy csak megszámolja a sorokat.

Egy oldalkódon azt tapasztaltam, hogy az enzotib megoldása a ~U körüli egyetlen idézőjel nélkül nem működött. (Wheezy, ZSH, 0.6.8.2 alkalmasság)

Frissítés:

Az új apt segítségével a következőket teheti:

apt list --upgradeable

Megjegyzések

  • Köszönet érte, az apt list parancs pontosan az volt, amit szerettem volna.
  • Ezzel a megoldással jó, hogy nincs szükség sudo / root fájlra.

Válasz

A legegyszerűbb:

apt list --upgradeable

Megjegyzések

  • nem működik a mentán.
  • ‘ szégyen, hogy ez nem ‘ ne adjon meg különböző kilépési kódokat attól függően, hogy vannak-e frissítések vagy sem. Jó lett volna használni ezt egy szkriptben.

Válasz

Futtathat

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

vagy a dokumentáció nélküli

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

Egy másik módszer egy apt-get szimuláció:

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

megjegyzések

  • Ez az aptitude parancs nagyon jól működött nekem és nem igényel root-ot
  • az apt-get -s dist-upgrade is jól működik, és ugyanolyan kimenettel rendelkezik, amikor átvezeti az adott awkeren
  • köszönöm! ez elég sok függőségi pokolból került ki. dist-upgrade próbálta elveszíteni, de nem veszített el néhány olyan csomagot, amelyre a aptitude használatához szükség volt. aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }') megcsalta!

Válasz

Vessen egy pillantást az “apticron” csomagra:

apticron – Egyszerű eszköz a függőben lévő csomagfrissítésekről postai úton dselect és alkalmasság által.

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

Megjegyzések

  • A link megszakadt …

Válasz

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

az elérhető frissítéseket tényleges telepítés nélkül sorolja fel.

Az első parancs a szimulált (tehát -s) frissítés előtt frissíti a csomag indexfájljait. Kész. Az “-s” szimulált frissítést hajt végre, amely bemutatja azokat a csomagokat, amelyek telepítve vannak, de valójában nem telepítenek semmit.

Épp ellenkezőleg, az “-u” helyett az “-s” helyett a megerősítés után valóban telepítenék. p>

Megjegyzések

  • A szimulációs opció a -s, --simulate, --just-print, --dry-run, --recon, --no-act bármelyikével kiváltható, az újrakészítés és a szárazonfuttatás az én személyes kedvencek.

Válasz

Teljes verzió információkra volt szükségem a lehetséges frissítésekről, ezért a jasonwryan módosítását használtam válasz:

apt-get -V -u upgrade 

Ez egyszerű és IMO formátumú kimenet.

Válasz

Csak szűrje ki a

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

kimenetet, hogy csak a preferált információk legyenek a naplójában.

Valószínűleg szükséged lesz a gyönyörű részre a sor után

A következő csomagok frissülnek:

kevés szóközzel elején.

Hozzászólások

  • Sziasztok, üdvözlünk a webhelyen. Jelenlegi válasza alapvetően a meglévők újracsoportja, így nem ad hozzá újat. Javíthatná például azzal, hogy elmagyarázza a kimenet szűrését, és elmagyarázza, hogy mit csinálnak a különféle kapcsolók stb.

Válasz

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

a legegyszerűbb a cron e-mailekhez; nincs felhasználói iteráció, és ha nincsenek frissítések, akkor nincs kimenet.

Válasz

Jet egy másik on-line, ihlette ez a válasz :

 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;  

A kimenet így néz ki (színes):

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 

Ha nem szeretné, hogy a rövid leírás használja ezt:

 { 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;  

Kimenet:

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) 

Megjegyzések

  • Az egy vonalú vonal fantasztikus, csak ‘ nem adja ki néhány csomag leírását.

Válasz

apt-check valószínűleg a leghatékonyabb szkriptelési módszer.

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

Egy nagyon kis módosítás csak a biztonsági frissítéseket jeleníti meg.

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

Válasz

Miután figyelmeztetést írtam a @jasonwryan válaszára, meg szeretném adni a saját megoldásomat:

apt-get dist-upgrade --assume-no 

Sajnos ez nem működik a debian wheezy-vel, és meg kellett vizsgálnom néhány olyan lxc konténert, amelyek még mindig nincsenek frissítve. Ez az űrlap mindig működik:

apt-get dist-upgrade </dev/null 

Végül a kimenetet is át akartam formázni. Úgy döntöttem, hogy újra megváltoztatom a hívást (a --dry-run használatával, de figyelmen kívül hagyva az összes további kimenetet), mert biztonságosabbnak érzem magam:

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

Visszatérés:

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

Válasz

Szeretem ezt használni:

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

Ilyen kimenetet kap:

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

ha rendelkezésre állnak frissítések , és nincs, ha nincs “t”. Így egyszerűen összekapcsolhatja egy felügyeleti megoldással.

Válasz

Mint variáció a következőt használom:

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

Ragaszd be egy apt-updates nevű szkriptbe, és utána hívhatod a apt-updates az összes frissítés felsorolásához, a felhasználótól függetlenül.

Ennek ellenére privilegizált hozzáféréssel kell hívnia a apt-get update -t.

Megjegyzések

  • a kimenet csak a csomag nevét mutatja (első oszlop), a második oszlop mindig = ” és a harmadik oszlop mindig üres. Én ‘ m vagyok a pénzverdén.

Válasz

Ott ” s a apt-show-versions eszköz. Az elérhető frissítések megjelenítéséhez futtassa:

apt-show-versions -u 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük