UbuntuAdmin - henk52/knowledgesharing GitHub Wiki
Ubuntu administration
Introduction
Purpose
Describe Ubuntu administrator quick notes.
General commands
lsb_release -sc
: get the name of the release.
Repo / Packages
Tools
- scanpackages: Generate the
Packages
db file used by theapt-get install
. - apt
sudo apt clear
: Clear the /var/cache/apt/archives
- apt-cache search : search for packages
- dpkg
Install local deb file: sudo apt install path_to_deb_file
Update
- sudo apt update
- sudo apt --with-new-pkgs upgrade
Upgrade
If you need to force it:
- sudo do-release-upgrade
Clean up /boot
-
sudo uname -r
-
sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v
uname -r
-
sudo apt purge linux-image-5.15.0-78-generic
-
sudo apt-get -f install
-
sudo apt autoremove
-
if all else fails delete some of the old files in /boot
-
then
- sudo apt-get -f install
- sudo apt purge linux-image-5.15.0-78-generic
- sudo apt autoremove
Core dumps
To do a core dump:
- ulimit -c unlimited
- ulimit -c
- Should state 'unlimited'
- sudo systemctl status apport.service
- run your failing command
If it does not generate a 'core' file in the current dir, try:
- ls /var/run/apport.lock
- sudo systemctl stop apport.service
- sudo rm /var/run/apport.lock
- sudo systemctl start apport.service
- Try again
/var/lib/systemd/coredump/
Try coredumpctl
- sudo apt install systemd-coredump
- sudo systemctl stop apport.service
- sudo rm /var/run/apport.lock
- ./runner
- coredumpctl list
- coredumpctl debug
Repo Cookbook
package information
Find out what package provides a file
- dpkg -S FILE
- e.g.: dpkg -S /usr/sbin/anacron
get information on a package
- apt info PACKAGE
- e.g.: apt info anacron
list installed packages
- apt list --installed | grep docker-ce
Get list of package versions
- apt-cache policy docker-ce
Install specific pkg version
Package: docker-ce*
Pin: version 5:19*
Pin-Priority: 990
dry-run installation
- apt install --dry-run docker-ce
Create your own repo
Downloading packages to a local repo
sudo apt-get install --downloadonly PKG
- /var/cache/apt/archives/
- This is where the downloaded files are stored.
e.g.:
wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install --download-only jenkins
Generate the Packages index file for the local repo
Adding a key to the package key chain
Cron jobs
Contab
hourly, daily, weekly, monthly cron jobs
- Put your script in one of: /etc/cron.hourly /etc/cron.daily etc.
- Make sure that the filename has only alphanumeric characters, not dots, dashes etc.
- For daily and up make sure /usr/sbin/anacron is installed (see: /etc/crontab)
Network
IP addresses
Hardcode IP addresses in Ubuntu 20.04
- sudo vi /etc/netplan/00-installer-config.yaml
- See below for content
- sudo netplan apply
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: false
addresses: [10.1.2.3/24, 10.2.3.3/24]
version: 2
Change NIC names to ethX
- sudo vi /etc/default/grub
- GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
- There can only be one line with 'GRUB_CMDLINE_LINUX' otherwise it seems the last GRUB_CMDLINE_LINUX is the one being used.
- sudo update-grub
- or?: sudo grub-mkconfig -o /boot/grub/grub.cfg
- sudo vi /etc/netplan/00-installer-config.yaml
- Change the ethernet names to eth0, eth1 etc.
SSH server
Enable SSH server
- sudo apt-get install openssh-server
- sudo systemctl enable ssh
NFS server
-
sudo apt install nfs-kernel-server
-
sudo mkdir -p /hdd1/airsonic/music
- sudo chown -R nobody:nogroup /hdd1/airsonic/music
-
sudo chmod 777 /hdd1/airsonic/music
-
sudo vi /etc/exports
-
sudo exportfs -a
-
sudo systemctl restart nfs-kernel-server
-
showmount -e
/hdd1/airsonic/music 192.168.49.0/24(rw,sync,no_subtree_check)
Other tools
Scheduling
- Check current policies for a PID:
- chrt -p 29522
- List available priorities
- chrt -m
- Set PID to RR top? priority
- Set sudo chrt --rr --pid 99 29522
Troubleshooting
Trobuleshoot package handling
WARNING: The following packages cannot be authenticated
W: Failed to fetch file:/vagrant/repo/binary/Packages Hash Sum mismatch
- cd /vagrant/repo/binary
- wget
- apt-get update E: Some index files failed to download. They have been ignored, or old ones used instead.
Errors were encountered while processing: openmpi-bin
After update from 20.04 to 21.04
sudo apt-get purge --auto-remove openmpi-bin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
libevent-core-2.1-7* libevent-pthreads-2.1-7* libfabric1* libhwloc-plugins* libhwloc15* libopenmpi3* libpmix2* libpsm-infinipath1* libpsm2-2* libucx0* libxnvctrl0*
openmpi-bin* openmpi-common*
0 upgraded, 0 newly installed, 13 to remove and 1 not upgraded.
1 not fully installed or removed.
After this operation, 18.6 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 376328 files and directories currently installed.)
Removing openmpi-bin (4.1.0-7ubuntu2) ...
update-alternatives: error: /var/lib/dpkg/alternatives/mpi corrupt: slave link same as main link /usr/bin/mpicc
dpkg: error processing package openmpi-bin (--remove):
installed openmpi-bin package pre-removal script subprocess returned error exit status 2
dpkg: too many errors, stopping
Errors were encountered while processing:
openmpi-bin
Processing was halted because there were too many errors.
Fix:
- sudo rm /var/lib/dpkg/alternatives/mpi
- sudo apt-get purge --auto-remove openmpi-bin
The following packages have been kept back: dh-python
sudo apt-get --with-new-pkgs upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
dh-python
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Fix: sudo apt-get install --reinstall dh-python
OR
apt-cache policy python3-distupgrade
- to see what is holding it back.
- Phase updates
Network troubleshooting
NIC troubleshooting
ens192: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
In a ESXi VM, another VM has connection on the same VM network.
I had to create a new vNIC, delete the other second one and then reboot, then it worked.
upgrade troubleshooting
Troubleshoot upgrade from 21.10 to 22.04
could run do-release-update because 21.10 was no longer supported
Key is stored in legacy trusted.gpg keyring
sudo apt-key export 5044912E | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/dropbox.gpg
the '5044912E' was seen in sudo apt-key list
W: http://linux.dropbox.com/ubuntu/dists/disco/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.