Terminal – die besten Beiträge

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

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

Wo ist der Fehler in meinem Python Code (MQTT)?

Ich habe ein Python Script erstellt, damit später bei Nachrichten bestimmte befehle ausgeführt werden. Beim ersten Script(Openhab_Mqtt.py) habe ich beim Testen 3 Terminals aufgemacht und beim 2.(Openhab_Mqttv2.py) auch genau gleiche Sorgehensweise.

Im 1. Terminal habe ich das Python Script gestartet mit:

python Openhab_Mqttv2.py

Output:
Script 1: Connected to MQTT broker
Script 2: Connected to MQTT broker
Connected to MQTT broker

Im 2. Terminal habe ich die Nachricht ausgegeben bei Nachrichten mit:

mosquitto_sub -t "main/messager" -v -u xxx -P xxx

Output(Nach T3):
Script 1: main/messager test
Script 2: main/messager test

Und im 3. Terminal habe ich eine Nachricht gesendet mit:

mosquitto_pub -t "main/messager" -m "test" -u xxx-P xxx  

Output:
Script 1: Payload: test und BLA...
Script 2:

Ich kann einfach nicht den Fehler finden, warum es bei Openhab_Mqtt.py funktioniert und bei Openhab_Mqttv2.py nicht funktioniert.

Openhab_Mqtt.py DATA:

import paho.mqtt.client as mqtt
import os
import time
import bme280_temp
import smbus2
import bme280
import threading

def on_subscribe(client, userdata, mid, granted_qos):
 print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))


def on_connect(client, userdata, flags, rc):
 print("Connected to MQTT broker")


def on_message(client, userdata, msg): 
 print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
 print("Payload: " + msg.payload.decode())
 if msg.payload.decode() == "send_signal":
  print("Calling script to send signal...")
  IR_Signal()
 if msg.payload.decode() == "temp_bme280_start":
  print("Calling script to for temperature start...")
  userdata["counter"] += 1
  print(str(userdata["counter"]))
  client.publish("frame/monitor", "START", qos=0, retain=True)
  Temp_sensor() 
 if msg.payload.decode() == "temp_bme280_stop":
  print("Calling script to for temperature stop...")
  userdata["counter"] -= 1
  print(str(userdata["counter"]))
  client.publish("frame/monitor", "STOP", qos=0, retain=True)
 if msg.payload.decode() == "test":
  print("BLA...")  
  print(str(["counter"])) 
  os.system("vcgencmd measure_temp") 
 else:
  pass    



#Bme280_basic Temperature
address = 0x76
bus = smbus2.SMBus(1)
calibration_params = bme280.load_calibration_params(bus, address)

def Temp_sensor():
 data = bme280.sample(bus, address, calibration_params)
 temperature_celsius = data.temperature      
 print("Temperature: {:.2f} °C".format(temperature_celsius))
 time.sleep(2)
    
 
def IR_Signal():
 os.system("irsend SEND_ONCE pioneer_vsx-301 KEY_POWER")
 print ("Signal Send!")


client = mqtt.Client()
client.on_message = on_message 
client.on_connect = on_connect
client.user_data_set({"counter": 0})
client.username_pw_set( "xx" , "xx" )
client.connect( "192.x.x.x", 1883, 60)
client.subscribe( "main/messager" , qos=0)


client.loop_forever() 

Openhab_Mqttv2.py

import paho.mqtt.client as mqtt
import time
import smbus2
import bme280
import threading


# Getting information
def on_subscribe(client, userdata, mid, granted_qos):
 print("Subscribed to topic : " + str(mid) +" with QoS" + str(granted_qos))
                                                                 
def on_connect(client, userdata, flags, rc):
 print("Connected to MQTT broker")


# Damit loops nicht am anfang durchstarten 
TempLoop_running = False


# Checking for messages to execute code
def on_message(client, userdata, msg):
 print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
 print("Payload: " + msg.payload.decode())
 if msg.payload.decode() == "Temp_Start":
  start_TempLoop()
 if msg.payload.decode() == "Temp_Stop":
  stop_TempLoop()
 if msg.payload.decode() == "test":
  print("TESTING...")
  client.publish("main/messager", "START", qos=0, retain=True)
 else:
  pass



# Execute things here ->


# Getting Temperature
address = 0x76
bus = smbus2.SMBus(1)
# Load calibration parameters
calibration_params = bme280.load_calibration_params(bus, address)
def Temperature_loop():
 global TempLoop_running
 while TempLoop_running:
  data = bme280.sample(bus, address, calibration_params)
  #Extract temperature, pressure, and humidity
  temperature_celsius = data.temperature      
  #Print the readings
  print("Temperature: {:.2f} °C".format(temperature_celsius))
  # Nachricht an das entsprechende Topic senden
  client.publish("Temp/Loop", "Temperature: {:.2f} °C".format(temperature_celsius))
  # Wartezeit, um die Ausgabe zu verlangsamen
  time.sleep(2)
# Funktion zum Starten der Temperatur Schleife
def start_TempLoop():
 global TempLoop_running
 TempLoop_running = True
 threading.Thread(target=Temperature_loop).start()
# Funktion zum Stoppen der Temperatur Schleife
def stop_TempLoop():
 global TempLoop_running
 TempLoop_running = False



# Set general data
client = mqtt.Client()
client.on_message = on_message 
client.on_connect = on_connect
client.connect( "192.x.x.x", 1883, 60)
client.username_pw_set( "xx", "xx" )
client.subscribe( "main/messager", qos=0)


# Loop forever
client.loop_forever()
Code, Python, Terminal, Message, Python 3, Raspberry Pi, mqtt

Meistgelesene Beiträge zum Thema Terminal