GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine Software, die mir helfen kann, die Software nach der Neuinstallation neu zu installieren?

Alle Pakete speichern und wiederherstellen

Auf Debian/Ubuntu-basierten Systemen können Sie die Liste der installierten Pakete in eine Datei ausgeben

dpkg --get-selections > my_package_list.txt

und installieren Sie sie erneut, indem Sie

ausführen
apt-cache dumpavail | sudo dpkg --merge-avail
sudo dpkg --set-selections < my_package_list.txt
sudo apt-get dselect-upgrade

Die erste Zeile stellt dpkg sicher Die Datenbank von ist auf dem neuesten Stand (heutzutage verwenden die meisten Leute apt um Pakete zu installieren, die ihre eigene Datenbank verwalten), importiert die zweite Zeile Ihre gespeicherte Auswahl und der dritte Befehl installiert die ausgewählten Pakete. Einzelheiten finden Sie im Debian-Administratorhandbuch.

Falls Sie Pakete aus Repositories von Drittanbietern installiert haben, müssen Sie diese Repositories hinzufügen, bevor Sie die obigen Schritte zur Wiederherstellung ausführen.

Nur explizit installierte Pakete speichern und wiederherstellen

Aptitude installiert automatisch Abhängigkeiten (z. B. eine Bibliothek, die von einer Anwendung benötigt wird). Diese Pakete sind als "automatisch" gekennzeichnet und können automatisch entfernt werden, wenn sie nicht mehr benötigt werden. Falls Sie diese "automatischen" Flags beibehalten möchten, können wir dpkg nicht verwenden da es automatisch installierte Pakete nicht verfolgt. Stattdessen müssen wir das etwas kryptischere

verwenden
LC_ALL=C aptitude search -F '%p %C' '~i!~M' > my_package_list.txt

Dadurch werden alle installierten Pakete durchsucht (~i ) und nicht (! ) gekennzeichnet automatisch (~M ). Für jedes passende Paket wird der Paketname (%p ) und der Status (%C ) gedruckt (das ahmt die Ausgabe von dpkg --get-selections nach ). LC_ALL=C stellt sicher, dass alle Ausgaben auf Englisch ohne Übersetzung in eine Muttersprache erfolgen. Verwenden Sie die oben genannten Befehle, um die Pakete aus dieser Liste zu installieren. Einzelheiten finden Sie im aptitude-Benutzerhandbuch.


Ansible ist ein Open-Source-Softwarebereitstellungs-, Konfigurationsverwaltungs- und Anwendungsbereitstellungstool. Es läuft auf vielen Unix-ähnlichen Systemen und kann sowohl Unix-ähnliche Systeme als auch Microsoft Windows konfigurieren. Es enthält eine eigene deklarative Sprache zur Beschreibung der Systemkonfiguration

(Aus Wikipedia.) Homepage (Github).

Es gibt mehrere andere in der gleichen Kategorie. Das Lesen von Ansible sollte Ihnen Vokabular geben, um nach den anderen zu suchen und bei Bedarf zu vergleichen. Nix ist ein neuer Anwärter. Manche sagen „komplexer, aber vielleicht genau richtig“. Koch ist auch vor Ort.

Ansible-Beispiel für den Hostnamen myhost , Modul apt (ersetzen durch yum oder was auch immer):

ansible -K -i myhost, -m apt -a "name=tcpdump,tmux state=present" --become myhost

Die Liste „tcpdump,tmux“ kann mit Kommas erweitert werden. (Die Tatsache, dass der Hostname myhost steht zweimal in der Befehlszeile, weil wir keine feste Host-Inventarliste verwenden, sondern eine Ad-hoc-Liste mit dem abschließenden Komma.)

Dies kratzt nur an der Oberfläche, Ansible hat eine umfangreiche Modulsammlung.


Wenn Sie nur eine Reihe von Paketen installieren möchten, könnte ein einfacher Einzeiler wie folgt aussehen:

sudo bash -c 'for package in "tmux" "htop" "gimp"; do apt install -y --no-upgrade "$package"; done'

Die Schleife ist nicht unbedingt erforderlich, aber wenn apt keines der Programme in der Liste findet, wird es ohne sie auch keines der anderen Pakete installieren können. Dies kann beispielsweise passieren, wenn Sie zu einer neueren Version Ihrer Distribution wechseln und ältere Pakete nicht mehr in den Repos enthalten sind. Wenn Sie alles oder nichts bevorzugen, verwenden Sie

sudo apt install -y --no-upgrade tmux htop gimp

Wenn Sie Ihre Konfigurationen auch speichern möchten, wäre der Suchbegriff "dotfiles". So heißen die Konfigurationen in Unix-ähnlichen Systemen, da sie meistens mit einem "." beginnen.

Eine schnelle und schmutzige Möglichkeit, diese zu speichern, besteht darin, all diese Konfigurationsverzeichnisse auf Ihr neues System zu kopieren. Ein besserer Weg wäre, sie mit Tools wie git unter Versionskontrolle zu stellen. Ich verwende eine Kombination aus Git, Dotbot und handgeschriebenen Skripten, um mein System einzurichten.

Aktualisieren

Ein Punkt, der bisher in der Diskussion fehlt, ist apt ist normalerweise nicht das einzige Paketverwaltungssystem, das man für alles benötigt, was über die bloßen Grundlagen hinausgeht. Andere Paketverwaltungstools könnten snap sein , pip , conda , cargo und viele mehr. Dies wird implizit in der Antwort von Alex Stragies angesprochen. Ansible enthält neben apt eine große Menge an Modulen, einschließlich Modulen zum Verwalten von Paketen wie snap und pip . Da sich meine Antwort auf das Schreiben eigener Skripte konzentriert, möchte ich darauf eingehen. Ein gut getestetes Framework wie Ansible sollte im Allgemeinen für die meisten Aufgaben bevorzugt werden, aber selbst geschriebener Code bietet in meinen Augen einen Vorteil in Bezug auf Flexibilität.

Kleines Beispiel-Framework

Ich habe einen kleinen Code in Python geschrieben, der veranschaulichen soll, wie ein solches Framework aussehen könnte.

#!/usr/bin/env python3

import os
import re
import sys
import subprocess

def read_package_list(path):
    package_list=[]
    try:
        with open(os.path.realpath(path)) as f:
            for line in f:
                match = re.search(r'^(?!\s*$)(?!#)\w+',line)
                if match:
                    package_list.append(match.group(0))
            return package_list
    except Exception as e:
        print(e.message)
        print(e.args)
        sys.exit(1)    
    return package_list

def install_packages(command,package_list,err_log):
    try:
        with open(err_log,'w+') as f:
            for p in package_list:
                print('executing '+command+' '+str(p))
                out=subprocess.run(command+' '+p,shell=True,stderr=f)
    except Exception as e:
        print(e.message)
        print(e.args)
        sys.exit(1)

def main():
    args = sys.argv[1:]
    package_list = read_package_list(args[1])
    err_log=os.path.realpath(args[2])
    install_packages(args[0],package_list,err_log)

if __name__ == '__main__':
    main()

Die Grundzutaten sind eine Funktion zum Verarbeiten einer durch Zeilenumbrüche getrennten Liste von Paketen (read_package_list ) und eine Funktion zum Ausführen des Installer-Befehls in einer Shell (install_packages ). Zeilen nur mit Leerzeichen und Zeilen, die mit # beginnen werden beim Einlesen der Paketliste ignoriert. Die main verarbeitet die Argumente, die auf der Kommandozeile als installer command angegeben werden können , packagefile , errorlog .

Was bringt mir das?

Nun, Sie können einfach jeden beliebigen Installationsbefehl verwenden

./installerscript.py 'apt install --dry-run' myaptpackages.txt apt_err.log
./installerscript.py 'snap install' mysnaps.txt snap_err.log
./installerscript.py 'pip install --user' mypy.txt py_err.log
./installerscript.py 'git clone' repos.txt git_err.log

Dies kann hilfreich sein, wenn man eine Liste von Paketen führt, die alle gleich behandelt werden sollten. Sobald ein solches Framework existiert, ist es einfach, es zu verbessern. Man könnte zum Beispiel die Art und Weise anpassen, wie der Installationsprozess protokolliert wird, oder anpassen die Verarbeitung der Befehlszeilenargumente. Ein weiterer Aspekt ist, dass das Skript wahrscheinlich nicht jeden Befehl als root ausführen sollte (wenn es als root ausgeführt wird), wie es derzeit der Fall ist.


Linux
  1. So installieren Sie Softwarepakete mit einem Ansible-Playbook

  2. Linux – Gibt es GUIs für Linux, die kein X11 verwenden?

  3. Wie installiere ich Software, die „die Installation von nicht vertrauenswürdigen Paketen erfordert“??

  4. Ubuntu 16.04 Beschädigte Pakete nach Neuinstallation?

  5. Ist es möglich, alle Pakete aus einem APT-Repository zu installieren?

So installieren Sie Pakete unter Debian 10

Warum nicht Softwarepakete aus dem Internet installieren

Lernen von Ubuntu Apt Get Through-Beispielen

Die 30 besten Helpdesk-Software für Unternehmen, die Linux einsetzen

So finden Sie heraus, welche Versionen eines Pakets ich auf APT installieren kann

Gibt es eine Linux-Distribution oder einen Kernel-Patch, der einen Prozessspeicherplatz löscht, nachdem der Prozess beendet wurde?