guy.brush™ schrieb
1. zum Cache:
Die Möglichkeit ist wirklich nicht so toll. Zwei weitere Ideen^^
[Ich kam drauf, weil man ja auch sagen kann, dass pacman beim Update bestimmte Pakete auslassen soll].
a) Man könnte die Dateien (nur die, die man braucht/will) an einen anderen Ort 1:1 spiegeln. Sprich, man hat im Cache X Y Z und kopiert das immer automatisch an einen Ort B. Beim Update wird demnach im Cache die neue Version des Pakets angelegt, durch das Spiegeln werden aber auch an Ort B ebenfalls die aktuellen Pakete hinkopiert (und die alten überschrieben). Somit wäre auch -Scc egal.
Wie schon gesagt einen anderen Ort finde ich persönlich nicht so toll wegen den Updates. Die Updates mit einem Script abzufangen ist echt viel zu umständlich.
guy.brush™ schrieb
b) Den Cache generell beim Standardpfad belassen. Aber kann man den Cache für bestimmte Pakete vielleicht woanders hinverlegen? Dann würde bei -Scc nur der Cache im Standardpfad gelöscht werden.
Nein ds kann man nicht. (Bzw. ich kenne keine solche Funktion)
guy.brush™ schrieb
Generell, falls a) und b) nicht gehen: Kleines Miniskript, das den Befehl "pacman -Sw [alle relevanten Pakete]" ausführt. Somit kann man -Scc ausführen und muss danach nicht alle Paketnamen im Kopf haben. Einfach eben Skript starten und fertig 🙂.
Ja das kann ich machen. Ich kann das Script so erweitern das wenn du das script mit ./switchable_grapics.sh download aufrufst er automatisch die benötigten Pakete herunterläd. Kein Problem, ist auch eine gute Erweiterung. Das mach ich dann mal... ;-D
guy.brush™ schrieb
Weiterhin: Ich verstehe dein Skript so, dass du erst alles deinstallierst und dann erst merkt das Skript, dass im Cache gar nicht die vorhandenen Dateien sind, weshalb du alles im runlevel 3 startest.
Ich würde zuerst eine Abfrage machen, ob im Cache die benötigten Pakete vorhanden sind. Bei false: pacman -Sw [alle relevanten Pakete], dann Neustart des Skripts. Bei true: weiterfahren im Skript.
Kann ich auch machen. Dann sind wenigstens noch die anderen Treiber vorhanden und man kann mit diesen neustarten. Du hast hier vollkommen Recht. 😉
guy.brush™ schrieb
2. rc.locale:
Blöde Frage: Wieso muss das Script hier eingetragen werden?^^
Weil das Script beim booten ausgeführt wird. Während dem Starten wo der ganze doofe Text kommt 😉
Das Script läuft nicht während dem graphischen Modus. Zum verständnis: Du kannst die Grafikkarten
nicht (!) während dem Betrieb tauschen. Du musst neustarten, ins BIOS gehen, die andere Grafikkarte auswählen, speichern, und Arch booten. Dann erkennt das Script die andere GraKa, löscht die alten Treiber und installiert die Neuen.
Warum die rc.local? Ganz einfach, die rc.local wird nach der rc.conf ausgeführt (also nach den ganzen daemons) aber halt noch bevor die Grafik geladen wird. Außer, das fällt mir gerade ein: du startest xdm/gdm/kdm/slim per daemon, das darfst du hier
nicht machen, sonst müsste man das Script irgendwie in die rc.conf eintragen und das will ich auf gar keinen Fall (weil System-Konfigurationdatei!).
guy.brush™ schrieb
3. benötigte Programme:
Ist meine Annahme richtig, dass standardmäßig alle benötigten Programme installiert sind?
Ja.
Wenn sich mal die Pakete oder deren Name ändern sollte kann man das dann auch ganz einfach im Script ändern (Inhalt der Variable INTELPKG bzw. ATIPKG ändern).
guy.brush™ schrieb
4. Befehle:
Hm...also pacman -Sw konnte ich im Wiki nachschlagen. Es werden aber noch einige andere verwendet, was bedeuten die?
(spontan: -Rd, -U, -Q).
1. man pacman 😉
2. Rd -> entfernen ohne die Abhängigkeiten zu berücksichtigen. Das müssen wir, da wir sonst auch den Xserver und alles was dran hängt (gnome, kde, xfce, und alle deren Programme usw.) mit löschen würden. Ganz Ordinär gesagt reißen wir dem Xserver die Treiber unter dem Hintern weg und bauen einen anderen Treiber wieder drunter. 😃
-U --> update, brauchst du wenn du richtige Paketdateien installieren willst.
-Q --> Query, also die Paketdatenbank zu Infos abfragen.
guy.brush™ schrieb
5. /dev/null:
Wieso wird das ganze hierhin verschoben beim Löschen?
Nur die Ausgabe wird nach /dev/null geschoben. Du bekommst an der Stelle also keine Fehlermeldung oder Erfolgsmeldung von Pacman. Brauchen wir auch nicht da ich das ja alleine mache. 🙂
guy.brush™ schrieb
6. root und Abfragen:
Root als Owner des Skripts ist irgendwie klar. Aber wieso muss unbedingt 774 als chmod? Root müsste doch alles ändern können, also eigentlich auch eine Datei, die root als Owner hat, aber nur 000 Rechte. Oder nicht?
Ok 774 war doof, nimm lieber 744.
root darf alles. Aber er kann keine Datei ausführen die nicht ausführbar markiert wurde. Er hat nur die Berechtigung dies zu ändern. Deswegen ist 744 minimum.
guy.brush™ schrieb
Wegen den Abfragen: Ich kann das Skript ja noch nicht live testen, aber wird alles automatisch gemacht oder wird man ab und zu (wie z.B. beim Ausführen von -Scc) abgefragt, ob man das wirklich tun möchte bzw. wird man automatisch dazu aufgefordert, das root PW einzugeben?
Wieso sollte man beim Startvorgang noch einmal nach dem Passwort fragen? Das brauchen wir nicht.
Du wirst nicht gefragt weil du es ganz einfach tun musst (die Treiber wechseln), sonst kannst du nicht im graphischen Modus starten.
guy.brush™ schrieb
Und am Ende vielleicht eine Abfrage?
"Do you want to reboot now? [Y/n]"
(Sahnehäubchen wäre natürlich, wenn dann automatisch alles Programme geschlossen und offene Projekte gespeichert werden :lol:).
Das kommt nicht rein weil wir nicht rebooten müssen, das läuft dann einfach so. Wir sind hier nicht bei Windows. (()😉
guy.brush™ schrieb
Am Ende vielleicht auch noch einen Hinweis, das man nun rebooten und im BIOS auf Graka X / Y wechseln soll?
Ok nun versteh ich was du hier verdrehst. Folgendes: Du gehst zuerst ins BIOS,dann wechselst du die GraKa, startest normal und dann erst werden die Treiber gewechselt. Vorher geht das nicht weil dann ja noch die andere Karte aktiv ist.
guy.brush™ schrieb
7. anders programmierbar?:
Wir haben in Scheme jetzt (fast) immer rein funktional programmiert und auch versucht, relativ viel Code auszugliedern, damit man nicht eine große Prozedur hat. Geht das hier auch? Falls ja, das hier wäre mein Vorschlag (geschrieben im Pseudocode 😉 ):
Ja man kann Funktionen erstellen denen man dann entsprechende Variablen übergibt. Kann ich auch machen. Viel Code-Ersparnis wird das aber nicht unbedingt geben.
MfG