Apakah ada cara untuk memeriksa secara manual paket tambahan mana yang akan dihapus?

8

Sebagai contoh, katakanlah saya mencoba menghapus "libopenshot11", saya mendapatkan:

The following packages will be REMOVED:
  libopenshot11 openshot-qt python3-openshot

Bagaimana saya bisa mengetahui ini tanpa menjalankan apt remove terlebih dahulu?

answerSeeker
sumber
apt-get remove libopenshot11 -s
grooveplex

Jawaban:

11

The Python APT API dapat digunakan untuk menulis naskah pendek untuk ini:

#! /usr/bin/python3
import sys
from apt import cache

c = cache.Cache()
for pkg in sys.argv[1:]:
    c[pkg].mark_delete()   

print('\n'.join(pkg.name for pkg in c.get_changes() if pkg.marked_delete))

Contoh:

$ apt-get remove -s bash | grep Remv  
Remv winusb [1.0.11+saucy1]
Remv gdm [3.18.3-0ubuntu2]
Remv gdm3 [3.18.3-0ubuntu2]
Remv bash [4.3-14ubuntu1.2] [inxi:amd64 lightdm:amd64 bash-completion:amd64 ]
Remv bash-completion [1:2.1-4.2ubuntu1.1] [inxi:amd64 lightdm:amd64 ]
Remv inxi [2.2.35-0ubuntu1] [lightdm:amd64 ]
Remv lightdm [1.18.3-0ubuntu1.1]

$ apt-cache rdepends bash --installed | sed '1,2d' | sort -u
  bash-completion
    bash:i386
  gdm3
  inxi
  lightdm
  winusb

$ ./check.py bash                                             
inxi
winusb
gdm
gdm3
bash
lightdm
bash-completion
muru
sumber
Solusi python sangat bersih. Terima kasih!
answerSeeker
19

Anda dapat menggunakan opsi --simulateatau -s, yang akan menunjukkan kepada Anda apa yang akan dilakukan APT ketika Anda menjalankan perintah tanpa benar-benar melakukan apa pun, misalnya ...

$ sudo apt remove -s file
Reading package lists... Done
Building dependency tree        
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libfile-stripnondeterminism-perl libltdl-dev libmail-sendmail-perl libsys-hostname-long-perl po-debconf
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED
  cracklib-runtime debhelper dh-autoreconf dh-strip-nondeterminism file gdebi gdebi-core libtool lintian ubuntu-standard
0 to upgrade, 0 to newly install, 10 to remove and 0 not to upgrade.
Remv cracklib-runtime [2.9.2-3]
Remv dh-autoreconf [13] [debhelper:amd64 ]
Remv debhelper [10.2.2ubuntu1] [dh-strip-nondeterminism:amd64 ]
Remv dh-strip-nondeterminism [0.032-1]
Remv gdebi [0.9.5.7+nmu1]
Remv gdebi-core [0.9.5.7+nmu1]
Remv ubuntu-standard [1.379]
Remv file [1:5.29-3] [lintian:amd64 libtool:amd64 ]
Remv libtool [2.4.6-2] [lintian:amd64 ]
Remv lintian [2.5.50.1]

Kita dapat melihat bahwa menghapus filepaket akan menjadi ide yang sangat buruk ...

Zanna
sumber
Siapa yang diposting pertama kali, Anda atau Alban?
NoOneIsHere
@NoOneIsIni saya beberapa detik: /
Zanna
OK, saya memutakhirkan kedua jawaban Anda karena Anda memiliki detail penggunaan, dan (saya berasumsi) memiliki halaman manual, tetapi saya pikir kedua jawaban gabungan lebih baik daripada yang diterima.
NoOneIsHere
@NoOneIsHere jika Alban belum memposting saya mungkin telah menambahkan detail halaman manual untuk jawaban saya. Saya pikir solusi sederhana ini lebih cenderung menjadi apa yang akan digunakan orang daripada yang diterima, tetapi menerima adalah kebijaksanaan OP, dan jawaban muru adalah kelas lanjutan :)
Zanna
1
Sebagian besar dari paket-paket itu sebenarnya tidak penting, meskipun saya telah memasuki situasi di mana menghapus standar-Ubuntu menyebabkan autoremove berikutnya menjadi gila.
Random832
13

The -satau --simulateopsi digunakan untuk mensimulasikan setiap tugas APT tanpa benar-benar menjalankannya.

Dari halaman resmi :

 -s, --simulate, --just-print, --dry-run, --recon, --no-act
       No action; perform a simulation of events that would occur based on
       the current system state but do not actually change the system.
       Locking will be disabled (Debug::NoLocking) so the system state
       could change while apt-get is running. Simulations can also be
       executed by non-root users which might not have read access to all
       apt configuration distorting the simulation. A notice expressing
       this warning is also shown by default for non-root users
       (APT::Get::Show-User-Simulation-Note). Configuration Item:
       APT::Get::Simulate.

sumber