Your cell is provisioned. APT handles the grid feeds with GPG verification and automatic security patches. Pinning holds critical packages at known-good versions. When the grid does not carry what you need, you compile it, package it with checkinstall, and the system tracks it. Nothing runs untracked.
1
apt update refreshes the package catalog only. apt upgrade applies updates. Always run update first -- without it, upgrade uses stale data.
2
APT verifies every package against a GPG-signed Release file. When adding third-party repos, verify the GPG key fingerprint before trusting it.
3
Use /etc/apt/preferences.d/ for pinning and apt-mark hold for simpler version locks. Pinning is more flexible; hold is faster to apply.
4
apt purge removes a package AND its config files. apt remove keeps config. Use purge for final removal.
5
The compile-from-source pattern: ./configure detects dependencies and generates Makefile. make -j$(nproc) compiles. checkinstall packages the result.
6
Use checkinstall instead of make install. Without it, compiled software is invisible to the package manager and cannot be cleanly removed.
7
After installing shared libraries to /usr/local/lib, add the path to /etc/ld.so.conf.d/ and run ldconfig or programs will fail to find the library at runtime.
8
Use DEBIAN_FRONTEND=noninteractive and apt-get install -y in automation scripts. Never use apt in scripts -- use apt-get for stable, scriptable output.
9
Every installed package is tracked in /var/lib/dpkg/status. dpkg -L packagename lists every file it installed. dpkg -S /path/to/file identifies which package owns a file.