Die Lösung des Software-Updates über einen Proxy-Server habe ich verworfen. Bei der Script-Erstellung habe ich die Lösung mehr durch Zufall gefunden. Während der Proxy-Lösung habe ich eine Möglichkeit gefunden, das „var/cache/archives“ Verzeichnis zu verschieben. Die Lösung lieferte das hartnäckige Suchen im Internet. Diese Seite (Verschieben des APT Cache-Verzeichnisses ) brachte mich auf folgende Idee .
Da ich immer einen Master-PC der Workstation zum Cloning bzw. Imagen zur Verfügung habe, warum erstelle ich mir nicht einfach mein eigenes Update-Medium?
Gesagt … Getan
Konfiguration des Controll-PC (Server)
Als erstes muss auf dem Server ein NFS (Network File System) installiert . Dies wird im 2. Schritt noch genauer erklärt werden.
1. Schritt
Verzeichnisse Anlegen:
1 2 3 4 |
mkdir /Daten mkdir /Daten/cache mkdir /Daten/cache/apt mkdir /Daten/cache/apt/archives |
Es gibt 2 Möglichkeiten die Daten von APT in die neu angelegte Verzeichnisstruktur zu verschieben:
1. Manuell:
2. Automatisch:
Die Datei /etc/apt/apt.conf.f/00xxxxxx (z.B.: 00updates-archives) neu in diesem Verzeichnis anzulegen.
1 |
dir::cache /Daten/cache/apt/ ; |
Diese „Automatik“ hat den Vorteil, das auch die beiden Dateien ‚pkgcache.bin‘ und ’srcpkgcache.bin‘ mit in die neue Verzeichnis-Struktur abgelegt werden.
Die beiden Dateien ‚pkgcache.bin‘ und ’srcpkgcache.bin‘ werden durch den Befehl „apt update“ stets immer aktualisiert.
1. Möglichkeit
1 |
apt update |
1 |
apt -d -y upgrade |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# apt -d -y upgrade Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Paketaktualisierung (Upgrade) wird berechnet... Fertig Die folgenden NEUEN Pakete werden installiert: linux-headers-4.4.0-101 linux-headers-4.4.0-101-generic linux-image-4.4.0-101-generic linux-image-extra-4.4.0-101-generic Die folgenden Pakete werden aktualisiert (Upgrade): apparmor apport apt apt-transport-https apt-utils base-files bash bind9-host bsdutils btrfs-tools ca-certificates cloud-initramfs-copymods cloud-initramfs-dyn-netconf coreutils cryptsetup cryptsetup-bin curl distro-info-data dnsmasq-base dnsutils dpkg eject gcc-5-base git git-man grub-legacy-ec2 init init-system-helpers initramfs-tools initramfs-tools-bin initramfs-tools-core iproute2 isc-dhcp-client isc-dhcp-common klibc-utils kmod less libapparmor-perl libapparmor1 libapt-inst2.0 libapt-pkg5.0 libasn1-8-heimdal libbind9-140 libblkid1 libc-bin libc6 libcryptsetup4 libcurl3-gnutls libdb5.3 libdns-export162 libdns162 libdrm2 libevent-2.0-5 libexpat1 libfdisk1 libgcrypt20 libgnutls-openssl27 libgnutls30 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libicu55 libidn11 libisc-export160 libisc160 libisccc140 libisccfg140 libklibc libkmod2 libkrb5-26-heimdal libldap-2.4-2 liblwres141 liblxc1 libmount1 libmspack0 libnl-3-200 libnl-genl-3-200 libpam-systemd libpci3 libperl5.22 libplymouth4 libpython3.5 libpython3.5-minimal libpython3.5-stdlib libroken18-heimdal librtmp1 libsmartcols1 libssl1.0.0 libstdc++6 libsystemd0 libtasn1-6 libudev1 libuuid1 libwind0-heimdal libxml2 linux-firmware linux-generic linux-headers-generic linux-image-generic locales login logrotate lshw lxc-common lxcfs lxd lxd-client makedev mdadm mount multiarch-support nano open-iscsi openssh-client openssh-server openssh-sftp-server openssl overlayroot passwd pciutils perl perl-base perl-modules-5.22 plymouth plymouth-theme-ubuntu-text python3-apport python3-distupgrade python3-problem-report python3-software-properties python3-update-manager python3.5 python3.5-minimal resolvconf snap-confine snapd software-properties-common sosreport sudo systemd systemd-sysv tcpdump tzdata ubuntu-core-launcher ubuntu-minimal ubuntu-release-upgrader-core ubuntu-server ubuntu-standard udev uidmap unattended-upgrades update-manager-core update-notifier-common util-linux uuid-runtime vlan wget xfsprogs zlib1g 160 aktualisiert, 4 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen noch 0 B von 186 MB an Archiven heruntergeladen werden. Nach dieser Operation werden 295 MB Plattenplatz zusätzlich benutzt. Herunterladen abgeschlossen; Nur-Herunterladen-Modus aktiv |
2. Möglichkeit
1 |
apt update |
1 |
COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /Daten/temp/aktuelle_installierte_pkgliste |
1 |
cat /Daten/temp/aktuelle_installierte_pkgliste | xargs apt-get --download-only --reinstall -y install |
( apt Optionen)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
root@proxy-controll-pc-server:/Daten/archives# cat /Daten/temp/aktuelle_installierte_pkgliste | xargs apt-get --download-only --reinstall -y install Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden zusätzlichen Pakete werden Installiert linux-headers-4.4.0-101 linux-headers-4.4.0-101-generic linux-image-4.4.0-101-generic linux-image-extra-4.4.0-101-generic Vorgeschlagene Pakete: apparmor-profiles apparmor-profiles-extra apparmor-docs apparmor-utils apport-gtk | apport-kde aptitude | synaptic | wajig dpkg-dev apt-doc python-apt bash-doc rblcheck cdtool setcd git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn grub-legacy-doc iproute2-doc avahi-autoipd isc-dhcp-client-ddns glibc-doc rng-tools gnutls-bin fdutils linux-doc-4.4.0 | linux-source-4.4.0 linux-tools mailx criu lxd-tools default-mta | mail-transport-agent dracut-core spell ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard haveged perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make desktop-base plymouth-themes python3-launchpadlib python3.5-venv python3.5-doc binutils binfmt-support systemd-ui systemd-container bsd-mailx mail-transport-agent util-linux-locales xfsdump attr quota Empfohlene Pakete: thermald Die folgenden NEUEN Pakete werden installiert: linux-headers-4.4.0-101 linux-headers-4.4.0-101-generic linux-image-4.4.0-101-generic linux-image-extra-4.4.0-101-generic Die folgenden Pakete werden aktualisiert (Upgrade): apparmor apport apt apt-transport-https apt-utils base-files bash bind9-host bsdutils btrfs-tools ca-certificates cloud-initramfs-copymods cloud-initramfs-dyn-netconf coreutils cryptsetup cryptsetup-bin curl distro-info-data dnsmasq-base dnsutils dpkg eject gcc-5-base git git-man grub-legacy-ec2 init init-system-helpers initramfs-tools initramfs-tools-bin initramfs-tools-core iproute2 isc-dhcp-client isc-dhcp-common klibc-utils kmod less libapparmor-perl libapparmor1 libapt-inst2.0 libapt-pkg5.0 libasn1-8-heimdal libbind9-140 libblkid1 libc-bin libc6 libcryptsetup4 libcurl3-gnutls libdb5.3 libdns-export162 libdns162 libdrm2 libevent-2.0-5 libexpat1 libfdisk1 libgcrypt20 libgnutls-openssl27 libgnutls30 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libicu55 libidn11 libisc-export160 libisc160 libisccc140 libisccfg140 libklibc libkmod2 libkrb5-26-heimdal libldap-2.4-2 liblwres141 liblxc1 libmount1 libmspack0 libnl-3-200 libnl-genl-3-200 libpam-systemd libpci3 libperl5.22 libplymouth4 libpython3.5 libpython3.5-minimal libpython3.5-stdlib libroken18-heimdal librtmp1 libsmartcols1 libssl1.0.0 libstdc++6 libsystemd0 libtasn1-6 libudev1 libuuid1 libwind0-heimdal libxml2 linux-firmware linux-generic linux-headers-generic linux-image-generic locales login logrotate lshw lxc-common lxcfs lxd lxd-client makedev mdadm mount multiarch-support nano open-iscsi openssh-client openssh-server openssh-sftp-server openssl overlayroot passwd pciutils perl perl-base perl-modules-5.22 plymouth plymouth-theme-ubuntu-text python3-apport python3-distupgrade python3-problem-report python3-software-properties python3-update-manager python3.5 python3.5-minimal resolvconf snap-confine snapd software-properties-common sosreport sudo systemd systemd-sysv tcpdump tzdata ubuntu-core-launcher ubuntu-minimal ubuntu-release-upgrader-core ubuntu-server ubuntu-standard udev uidmap unattended-upgrades update-manager-core update-notifier-common util-linux uuid-runtime vlan wget xfsprogs zlib1g 160 aktualisiert, 4 neu installiert, 298 erneut installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen noch 0 B von 309 MB an Archiven heruntergeladen werden. Nach dieser Operation werden 295 MB Plattenplatz zusätzlich benutzt. Herunterladen abgeschlossen; Nur-Herunterladen-Modus aktiv |
2. Schritt
Ein NFS (Network File System) muss noch zur Steuerung des Updates-Systems eingerichtet werde. Der Client (Workstations) holt sich entsprechende Informationen vom Server, ob überhaupt ein Update vorliegt. Dieser Schritt ist eigentlich für ein Updates-System über einen Proxy-Server nicht notwendig, jedoch sollte das Update über ein CD-ROM des Controll-PC oder eine Freigabe eines Laufwerks des Controll-PC erfolgen, so ist dies Installation dieser Software doch von Nöten.
Das Script, das das Updaten der Clients steuert, sollte so flexibel wie eben möglich gehalten sein!
1 |
apt install nfs-kernel-server |
Es muss noch die Datei „/etc/exports“ ein Eintrag vorgenommen werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # # einfache Konfiguration für Verzeichnisfreigabe # /Daten 192.168.0.0/255.255.255.0(ro,sync) # bessere Konfiguration der Verzeichnisfreigabe für dieses Update-System /Daten/cache/apt 192.168.0.0/255.255.255.0(ro,sync,insecure_locks,no_auth_nlm) |
Es werden nur Leserechte für den Client (Workstation) eingeräumt!
Link zu Konfiguration der „exports“ Datei.
Konfiguration der Workstation
Auf der Workstations (Clients) muss ein NFS-Client installiert werden.
1 |
apt install nfs-common |
Anschießend muss das „shared“-Laufwerk vom Server gemountet werden. Der Befehl „showmount“ zeigt alle „shared“ -Laufwerke eines Rechners an.
1 2 3 4 5 |
# showmount -e 192.168.0.94 Export list for 192.168.0.94: /Daten/cache/apt 192.168.0.0/255.255.255.0 # mount 192.168.0.94:/Daten/cache/apt /media/updates-drive |
Damit ist eigentlich schon alles technische Notwendige für ein Update eines geschlossenem Rechner-Verbund-Systems abgeschlossen.
Durchführung eines Updates/Upgrade
Manuells Update/Upgrade
1 2 3 4 5 6 7 8 9 10 11 |
# apt install /media/updates-drive/archives/*.deb # oder # cd /media/updates-drive/archives # apt -y install ./*.deb # Ausschließlich bereits installierte Pakete werden # auf eine neue Version gebracht, keine neuen Pakete werden installiert. apt-get -y --only-upgrade |
Update/Upgrade per Script
Folgt, wenn es fertig ist! ( in Arbeit) -> das Script ist fertig