Problem mit PHP-Composer: Was ist schief gelaufen?

Versuche hier grade auf meinem Server 2 verschiedene Librarys mithilfe von Composer zu installieren.

Leider ist wohl irgendwas bei der Installation von Composer gehörig schief gelaufen: Ich konnte zwar zunächst eine Library erfolgreich installieren aber es fing damit an, dass ich alle Composerdateien im /root Verzeichnis hatte. Diese wollte ich dann via Terminal nach /var/www/html verschieben (dabei muss aus irgendwelchen Gründen eine dazugehörige autoload.php verloren gegangen sein) also den kompletten Composerordner gelöscht und alles versucht neu zu installieren und aus der noch vorhandenen composer.phar versucht die Dateien neu zu extrahieren und dabei laut Terminal sogar auf die neueste Composer Version upgegradet: Dies hat zum Teil geklappt, nur eine extrem wichtige "composer.json" wurde dabei nicht erstellt. Also zunächst mal mit mehreren verschiedenen Anleitungen versucht diese manuell zu erstellen (was ja anscheinend in 5 Minuten problemlos möglich ist).

Naja das Problem ist nun, dass ich irgendwo festsitze. Ich habe die Anleitungen im Netz befolgt, aber bisher hab ich weder genau kapiert wieso diese extrem wichtige Datei nach erneuter Installation fehlt, noch was genau in diese Datei reingeschrieben werden muss oder per Script reingeschrieben wird (Name des Projekts? die Pfade (Namespaces?) der Packages, die ich installieren möchte?), noch wie ich folgenden Fehler beheben kann:

In ArrayLoader.php line 44:

Unknown package has no name defined ([]).

Diesen Fehler bekomme ich nun seit Stunden, egal was ich mit Composer versuche, auch wenn ich einfach versuche zu debuggen oder eine erneute Installation probiere...

Irgendwelche Ideen oder Ahnungen was hier falsch gelaufen ist?

Internet, Linux, IT, Webseite, programmieren, PHP, Putty, Script, ssh, Terminal, Composer, Kommandozeile, Debian 10
Kann man einzelne Textabschnitte/Absätze in einem Textverarbeitungsprogramm, oder Webbrowser demarkieren?

Ich habe ein richtiges Nischenproblem und hab nach stundenlangem Googeln leider keine Lösung finden können.

Ich hoffe sehr, dass mir hier eventuell jemand weiter helfen kann.

Ich habe einen teilweise sehbehinderten Freund, der einen Screenreader verwendet.

Der Screenreader hat die Option, nur den ausgewählten Text vorzulesen, anstatt das ganze Dokument oder die ganze Webseite.

Mein Freund ist Student und nimmt an Webentwicklungskursen teil und versucht, logischerweise, den Stoff mithilfe seines Screenreaders zu erlernen.

Das Problem dabei ist folgendes: In Programmierkursen gibt es oft Codeschnipsel direkt mitten im Text, um das Arbeitsmaterial zu visualisieren.

Wie ihr euch sicherlich vorstellen könnt, ist das ein Problem, da der Screenreader solche Codeschnipsel als völliges Kauderwelsch vorliest und diese sind auch häufiger sehr lang.

Der Kumpel hat mich deshalb gefragt, ob es möglich ist den gesamten Text der Aufgabe/Vorlesung auszuwählen (zum Beispiel klassisch mit der Maus markieren oder mit dem Keyboardshortcut Strg+A/cmd+A), aber dabei einen oder mehrere einzelne Absätze/Codeschnipsel unmarkiert zu lassen, oder diese proaktiv wieder zu demarkieren.

Wie ihr euch wahrscheinlich schon denken könnt, hatte ich als ein nicht sehbehinderter Mensch nie dieses Problem.

Wenn ich beispielsweise einen Text ohne einen bestimmten Absatz oder Satz kopieren wollte, habe ich einfach den gesamten benötigten Text vor diesem Satz ausgewählt, ihn in mein Textverarbeitungsprogramm kopiert, dann den gesamten benötigten Text danach ausgewählt, diesen rüber kopiert und so weiter.

Dies ist für meinen sehbehinderten Freund keine Option, da er viele Stunden am Tag lernt und das ständige Auswählen von Textteilen fürs Vorlesen nicht nur mühsam für ihn ist, sondern ihn auch völlig aus seinem „Lernfluss“ wirft, wie er es beschreibt. Er muss deshalb sogar häufig Absätze, die er bereits gehört hat, erneut auswählen, weil er sich nicht richtig darauf konzentrieren konnte.

Um meine Frage also noch einmal besser zu veranschaulichen:

Wenn ich einen Text, oder ein Skript mit einer Überschrift und beispielsweise drei Absätzen habe – Absatz A, Absatz B und Absatz C – gibt es eine Möglichkeit oder eine Tastenkombination, um nur die Überschrift, Absatz A und Absatz C auszuwählen und Absatz B unmarkiert zu lassen?

Microsoft Word, Software, Windows, Microsoft, Browser, Linux, Microsoft Office, Text, Mac OS X, Google Chrome, macOS, notepad, Softwareentwicklung, Textverarbeitung, Webbrowser, WordPad, notepad-plus-plus, Textaufgabe, Textverarbeitungsprogramm, VSCode
Bashskript Problem?

Ich habe hier ein Bashskript, welches Dateien überwacht (noch nicht vollständig und absolut unoptimiert). Ich weiß, dass es Tools gibt, aber es ist ein Projekt für die Uni und deshalb ist Optimierung und Effizienz nicht wirklich wichtig. Ich möchte damit die Grundlagen des Shellscriptings einfach etwas lernen.

Das ist bisher das Script:

#!/bin/bash


echo "Das Skript wurde gestartet. Der Typ Ihres Betriebssystem ist "\"$OSTYPE\""."


# If-Abfrage, die das Betriebssystem erkennt und den Pfad zum überwachten Ordner oder Datei festlegt # HIER BITTE DIE PFADE ZUM ZU ÜBERWACHENDEN ORDNER EINTRAGEN   
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    BASE_DIRECTORY=" " # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = Linux
elif [[ "$OSTYPE" == "darwin"* ]]; then
    BASE_DIRECTORY="/Users/name/Library/CloudStorage/GoogleDrive-email@gmail.com/Meine Ablage/Uni/TestOrdner" # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = MacOs
elif [[ "$OSTYPE" == "win32" || "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
    BASE_DIRECTORY="/g/Meine Ablage/Uni/TestOrdner" # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = Windows
else    
    echo "Das Betriebssystem ist unbekannt." # Wenn das Betriebssystem unbekannt ist, wird eine Fehlermeldung ausgegeben
    exit 1
fi


DIRECTORY="$BASE_DIRECTORY" # Pfad zum Ordner
FILE="$BASE_DIRECTORY/Datei.txt" # Pfad zur Datei   
FILE2="$BASE_DIRECTORY/Datei2.txt" # Pfad zur Datei2 


cd "$BASE_DIRECTORY" || {
    echo "Wechsel zu $BASE_DIRECTORY fehlgeschlagen!" # Wechselt in den TestOrdner oder gibt eine Fehlermeldung aus
    exit 1;
}



# Funktion, um zu überprüfen, ob Dateien gelöscht wurden
checkIfDeleted() {
    if [ ! -f "$FILE" ]; then 
        echo "Die Datei \"$(basename "$FILE")\" wurde gelöscht, umbenannt oder verschoben."
    elif [ ! -f "$FILE2" ]; then
        echo "Die Datei \"$(basename "$FILE2")\" wurde gelöscht, umbenannt oder verschoben."
    elif [ ! -d "$DIRECTORY" ]; then
        echo "Der Ordner \"$(basename "$DIRECTORY")\" wurde gelöscht, umbenannt oder verschoben."
    fi
}


# Speichert den "ursprünglichen" Hash-Wert der Dateien
ORIGINAL_HASH=$(md5 -q "$FILE")
ORIGINAL_HASH2=$(md5 -q "$FILE2")


checkIfEdited() {
    if [ ! -f "$FILE" ]; then # Wenn $FILE nicht existiert, dann wird das Skript hier beendet
    return
    fi


    if [ ! -f "$FILE2" ]; then # Wenn $FILE2 nicht existiert, dann wird das Skript hier beendet
    return
    fi


    if [ ! -d "$DIRECTORY" ]; then # Wenn $DIRECTORY nicht existiert, dann wird das Skript hier beendet
    return
    fi


    # Berechnet den aktuellen Hash-Wert der Dateien
    CURRENT_HASH=$(md5 -q "$FILE")
    CURRENT_HASH2=$(md5 -q "$FILE2")


    # Hash-Werte werden verglichen
    if [ "$CURRENT_HASH" != "$ORIGINAL_HASH" ]; then
        echo "Die Datei \"$(basename "$FILE")\" wurde bearbeitet."
        # Ursprünglicher Hash-Wert wird für zukünftige Überprüfungen aktualisiert
        ORIGINAL_HASH="$CURRENT_HASH"
    elif [ "$CURRENT_HASH2" != "$ORIGINAL_HASH2" ]; then
        echo "Die Datei \"$(basename "$FILE2")\" wurde bearbeitet."
        # Ursprünglicher Hash-Wert wird für zukünftige Überprüfungen aktualisiert
        ORIGINAL_HASH2="$CURRENT_HASH2"
    fi
}


while true; do # Endlosschleife, die die Funktionen "checkIfDeleted" und "checkIfEdited" alle 10 Sekunden ausführt
    checkIfDeleted
    checkIfEdited
    sleep 10
done

Ja, ich weiß, welche Probleme das Skript mit sich bringt, aber ich habe ein anderes Problem:

Wenn jemand das Skript nutzen möchte, muss er die Pfade seiner Dateien einfügen und sogar neue Variablen definieren.

Man könnte das doch so machen, dass das Skript die Liste des Ordners einliest und dann auf alle Dateien direkt zugreifen muss, ohne dass man sie in das Skript einfügen muss.

Also irgendwie mit dem Befehl "ls". Ich weiß aber nicht, wie ich das implementieren soll.

Kann mir wer helfen bitte?

Visual Basic, Linux, HTML, Webseite, VBA, Bash, Batch, cmd, Code, lua, MySQL, PHP, Programmiersprache, Python, Script, Python 3
Linux from Scratch - bashrc File anschauen?

Moin Leute,

ich arbeite gerade das LFS 12.1-Buch durch und bin bei Kapitel 4.4 und habe gerade die .bashrc File erstellt. Jetzt musste ich aber aufgrund einer Fehlermeldung und eines Versuches, diese zu beheben, das Terminal schließen und mich in einem neuen Terminalfenster neu anmelden.

Jetzt habe ich ein bisschen Sorge, dass meine Änderungen für die Erstellung der .bashrc nicht gespeichert wurden. Habe aber auch keine Möglichkeit, die Datei anzusehen, weil ich die nicht finden kann. Sie soll im Verzeichnis /home/lfs auf meiner LFS-Partition sein, aber dieses Verzeichnis sehe ich in meinem Dateimanager dort nicht. Auch über die Suche finde ich diese Datei nicht.

Weiß jemand, ob man, wenn man folgenden Befehl ausführt:
"cat > ~/.bashrc << "EOF"

set +h

umask 022

LFS=/mnt/lfs

LC_ALL=POSIX

LFS_TGT=$(uname -m)-lfs-linux-gnu

PATH=/usr/bin

if [ ! -L /bin ]; then PATH=/bin:$PATH; fi

PATH=$LFS/tools/bin:$PATH

CONFIG_SITE=$LFS/usr/share/config.site

export LFS LC_ALL LFS_TGT PATH CONFIG_SITE

EOF"

und dann mit "EOF" das beendet, ob die erstellte Datei dann automatisch schon gespeichert wird? Weil wenn man "EOF" eingibt, dann kommt man ja aus dem "Editor" wieder raus und kann weitere Befehle eingeben.

Beim Befehl "source ~/.bash_profile" war ich noch nicht angelangt.

Vielleicht stelle ich mich gerade auch doof an und vielleicht wirkt meine Frage auch komisch aber bin immer noch mit der Lösung des ersten Problems beschäftigt und bin mir jetzt halt einfach nicht sicher, ob das mit der Datei schon funktioniert hat oder ob ich jetzt irgendwas nochmal neu machen muss. Geht leider irgendwie aus der Anleitung auch nicht hervor, inwiefern das jetzt wann gespeichert ist.

Linux, Bash, Shell, Terminal
Linux from Scratch 12.1 - Verschieben der "undocumented instantiation" von etc/bash.bashrc als root funktioniert nicht?

Moin Leute,

hoffe, das Thema passt in dieses Subforum hier. Falls nicht, bitte verschieben.

Ich bin gerade dabei, mir mit Linux From Scratch eine eigene Distro zu bauen und bin jetzt auf ein Problem gestoßen. Hoffe, jemand kennt sich hier damit aus und kann mir weiterhelfen.

Im aktuellen Stable LFS Book 12.1 wird in Kapitel 4.4 steht folgende wichtige Info:

"Several commercial distributions add an undocumented instantiation of /etc/bash.bashrc to the initialization of bash. This file has the potential to modify the lfs user's environment in ways that can affect the building of critical LFS packages. To make sure the lfs user's environment is clean, check for the presence of /etc/bash.bashrc and, if present, move it out of the way."

deutsch:

"Einige kommerzielle Distributionen fügen eine undokumentierte Instanzierung von /etc/bash.bashrc zur Initialisierung der Bash hinzu. Diese Datei kann die Umgebung des Lfs-Benutzers in einer Weise verändern, die die Erstellung wichtiger LFS-Pakete beeinträchtigen kann. Um sicherzustellen, dass die Umgebung des Lfs-Benutzers sauber ist, überprüfen Sie, ob /etc/bash.bashrc vorhanden ist, und entfernen Sie sie, falls sie vorhanden ist, aus dem Weg."

Man soll dort also als root den folgenden Befehl ausführen:

"[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE"

Jetzt zu meinem Problem. Wenn ich den Befehl mit sudo eingebe, bekomme ich folgende Fehlermeldung ausgegeben:

"lfs is not in the sudoers file. This incident will be reported.

mv: cannot move '/etc/bash.bashrc' to '/etc/bash.bashrc.NOUSE': Permission denied"

Wenn ich den Befehl ohne sudo eingebe, bekomme ich die gleiche Fehlermeldung wie oben, nur ohne den "lfs is not in the sudoers[...]" Fehler.

Jetzt habe ich halt das Problem, dass ich so nicht weiterkomme. Habe schonmal ein bisschen gegoogelt, aber da stand nur, ich solle mal die Besitzer meiner Verzeichnisse prüfen. Die sind aber alle auf den erstellten LFS-Benutzer gesetzt.

Als root kann ich mich in dem erstellten LFS-System nicht anmelden, da er dann ein Passwort verlangt, obwohl ich für root eigentlich kein spezielles Passwort festgelegt habe. Das Passwort vom LFS-Benutzer funktioniert hier auch nicht, da ich dann den Fehler "Authentication failure" bekomme.

Weiß jemand, was ich da tun kann und wie ich den LFS-Benutzer in die "sudoer file" integrieren kann, falls das notwendig ist? Oder wie kann ich da weitermachen? Übersehe ich vielleicht auch etwas oder stelle ich mich doof an?

Habe nebenbei auch noch die Videoreihe, die der YouTuber "marcus-s" mal darüber gemacht hat, laufen, um mir das nebenbei ein bisschen anzuschauen und es besser zu verstehen, was ich dort tue. Lese aber trotzdem weiterhin immer meine Buchversion, die ich von der LFS-Webseite habe durch und führe die Befehle von dort aus, da er eine ältere Version nutzt. Und da ist zum Beispiel diese Info von oben noch gar nicht enthalten, die Videos helfen mir da also nicht weiter.

Hoffentlich kann mir jemand von euch helfen.

Linux, Bash, Error, Root, Shell, Terminal, Fehlermeldung, sudo, Linux-Distribution
Probleme mit Fail2Ban?

Fail2Ban auf dem raspberry pi macht probleme. Wenn ich den status überprüfe erhalte ich diese fehlermeldung:

x fail2ban.service - Fail2Ban Service
   Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
   Active: failed (Result: exit-code) since Tue 2024-06-11 19:56:05 CEST; 3s ago
  Duration: 314ms
    Docs: man:fail2ban(1)
  Process: 3578 ExecStart=/usr/bin/fail2ban-server -xf start (code=exited, status=255/EXCEPTION)
  Main PID: 3578 (code=exited, status=255/EXCEPTION)
    CPU: 311ms

Jun 11 19:56:05 tbt systemd[1]: Started fail2ban.service - Fail2Ban Service.
Jun 11 19:56:05 tbt fail2ban-server[3578]: 2024-06-11 19:56:05,576 fail2ban.configreader  [3578]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'
Jun 11 19:56:05 tbt fail2ban-server[3578]: 2024-06-11 19:56:05,608 fail2ban        [3578]: ERROR  Failed during configuration: Have not found any log file for sshd jail
Jun 11 19:56:05 tbt fail2ban-server[3578]: 2024-06-11 19:56:05,610 fail2ban        [3578]: ERROR  Async configuration of server failed
Jun 11 19:56:05 tbt systemd[1]: fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION
Jun 11 19:56:05 tbt systemd[1]: fail2ban.service: Failed with result 'exit-code'.

Es steht ja ERROR failed during configuration: Have not found any log file in sshd jail

und ERROR Async configuration of server failed.

Ich habe im jail.local den path zum ssh jail angepasst (zu logpath = /var/log/auth.log) aber es geht immer noch nicht...

Software, Linux, Networking, Programmiersprache, Softwareentwicklung, ssh, Raspberry Pi, Raspberry, sshd, Raspberry Pi 4

Meistgelesene Beiträge zum Thema Linux