Packages: Difference between revisions
This changes nothing |
No edit summary |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== Debian and derivatives == | == Debian and derivatives == | ||
Much of why Debian is a strong Linux distribution comes from the core of Debian namely its package management. Everything in Debian - every application, every component _everything_ is built into a package, and then that package is installed onto your system (either by the Installer, or by you). | |||
There are over 29 thousand software packages available for Debian - everything from the Linux kernel to games. | |||
And Apt is simply awesome! Learn more at https://wiki.debian.org/Apt or https://help.ubuntu.com/14.04/serverguide/package-management.html | And Apt is simply awesome! Learn more at https://wiki.debian.org/Apt or https://help.ubuntu.com/14.04/serverguide/package-management.html | ||
| Line 11: | Line 11: | ||
=== What files did this package install? === | === What files did this package install? === | ||
The synaptic gui will have a 'properties' tab that lists all the files installed. On the console, you can use <code>dpkg-query --listfiles package_name</code>. I don't use <code>apt-file</code> since dpkg is already installed on a base system. | The synaptic gui will have a 'properties' tab that lists all the files installed. On the console, you can use <code>dpkg-query --listfiles package_name</code>. I don't use <code>apt-file</code> since '''[https://man7.org/linux/man-pages/man1/dpkg.1.html dpkg]''' is already installed on a base system. | ||
=== What package provides file Y? === | === What package provides file Y? === | ||
| Line 17: | Line 17: | ||
You can also use the web interface at http://packages.ubuntu.com/ | You can also use the web interface at http://packages.ubuntu.com/ | ||
=== What PPA and sources am I installing from? === | |||
It is surprising that I haven't found a simple command to list apt sources. | |||
<code>grep -r --include '*.list' '^deb ' /etc/apt/sources.list*</code> | |||
or even pretty up the output a bit [https://askubuntu.com/a/741948/146518 from here] | |||
=== Remove old kernels === | === Remove old kernels === | ||
Kernels take up a lot of disk space. And once you've got a new one, the old ones really don't serve a purpose. <code>autoremove</code> is supposed to remove old kernels (keeping the currently running kernel plus the prior one or two for backups). | Kernels take up a lot of disk space. And once you've got a new one, the old ones really don't serve a purpose. <code>autoremove</code> is supposed to remove old kernels (keeping the currently running kernel plus the prior one or two for backups). | ||
< | <syntaxhighlight lang="bash"> | ||
sudo apt-get autoremove | sudo apt-get autoremove | ||
</ | </syntaxhighlight> | ||
But sometimes old kernels are left lying around. Maybe a lot of them. I'm not sure why, because normally you would only be left with 2 or 3 kernels if you run autoremove (perhaps this is because you have old virtualboxes?). | But sometimes old kernels are left lying around. Maybe a lot of them. I'm not sure why, because normally you would only be left with 2 or 3 kernels if you run autoremove (perhaps this is because you have old virtualboxes?). | ||
The post-install script <code>/etc/kernel/postinst.d/apt-auto-removal</code> is responsible for keeping track of what to preserve. And it writes a manifest to <code>/etc/apt/apt.conf.d/01autoremove-kernels</code>. | The post-install script <code>/etc/kernel/postinst.d/apt-auto-removal</code> is responsible for keeping track of what to preserve. And it writes a manifest to <code>/etc/apt/apt.conf.d/01autoremove-kernels</code>. | ||
< | <syntaxhighlight lang="bash"> | ||
# run the post-install script | # run the post-install script | ||
sudo /etc/kernel/postinst.d/apt-auto-removal | sudo /etc/kernel/postinst.d/apt-auto-removal | ||
# see what's reserved | # see what's reserved | ||
cat /etc/apt/apt.conf.d/01autoremove-kernels | cat /etc/apt/apt.conf.d/01autoremove-kernels | ||
</ | </syntaxhighlight> | ||
Let's use <code>dpkg</code> to see all the kernels that are currently installed. Note: there are other related packages like headers (<code>linux-headers-*</code>), but those are dependencies of the kernel images, and will be removed when we remove the images so we don't need to even look at them. | Let's use <code>dpkg</code> to see all the kernels that are currently installed. Note: there are other related packages like headers (<code>linux-headers-*</code>), but those are dependencies of the kernel images, and will be removed when we remove the images so we don't need to even look at them. | ||
< | <syntaxhighlight lang="bash"> | ||
# the last pipe uses a simple extended grep to take the meta package 'linux-image-generic' out of our list | # the last pipe uses a simple extended grep to take the meta package 'linux-image-generic' out of our list | ||
dpkg -l linux-image* | awk '/^ii/ { print $2 }' | grep -e [0-9] | dpkg -l linux-image* | awk '/^ii/ { print $2 }' | grep -e [0-9] | ||
# more complete perl-compatible regex to highlight the kernel release number | # more complete perl-compatible regex to highlight the kernel release number | ||
dpkg -l linux-image* | awk '/^ii/ { print $2 }' | grep -P '[0-9]+\.[0-9]+\.[0-9\-]+[0-9]+' | dpkg -l linux-image* | awk '/^ii/ { print $2 }' | grep -P '[0-9]+\.[0-9]+\.[0-9\-]+[0-9]+' | ||
</ | </syntaxhighlight> | ||
Manually compose an <code>apt-get purge</code> invocation of the kernels you don't want (keep the running kernel and the prior as a fallback). | You might also have several '''removed''' kernels with the configuration files still hanging around. These will be marked with status '''rc''' (remove configured) instead of 'ii' like in the awk command above. So, use something like <syntaxhighlight lang="bash"> | ||
< | echo "apt purge $(dpkg -l | egrep '^rc' | awk 'ORS=" " {print $2}')" | ||
</syntaxhighlight>Manually compose an <code>apt-get purge</code> invocation of the kernels you don't want (keep the running kernel and the prior as a fallback). | |||
<syntaxhighlight lang="bash"> | |||
sudo apt-get -y purge linux-image-3.13.0-44-generic linux-image-3.13.0-46-generic linux-image-3.13.0-48-generic linux-image-3.13.0-55-generic linux-image-3.13.0-71-generic linux-image-3.13.0-74-generic | sudo apt-get -y purge linux-image-3.13.0-44-generic linux-image-3.13.0-46-generic linux-image-3.13.0-48-generic linux-image-3.13.0-55-generic linux-image-3.13.0-71-generic linux-image-3.13.0-74-generic | ||
</ | </syntaxhighlight> | ||
== RedHat and derivatives == | == RedHat and derivatives == | ||