Alle Beiträge von Matthias

Root-Startscript unter Xubuntu

Nach der Installation von PowerTOP war zu erkennen, dass nicht alle Stromsparaktionen aktiviert waren. Somit sollte ein Bootscript diese Optionen aktivieren. Da PowerTOP aber als Root laufen muss, bedurfte auch dieses Script Root-Rechte (ein Eintrag in „Automatisch gestartartete Anwendungen“ reicht hier nicht, da diese lediglich als der momentan angemeldete Nutzer gestartet werden). Der von mir benutzte Weg ist folgender:

  1. Erstellen einer ausführbaren Datei unter /usr/bin/
  2. Ergänzen von /etc/rc.local um Script

Zuerst also ein entsprechendes Script erstellen (powertop-tweaks):

$ sudo vi /usr/bin/powertop-tweaks
$ sudo chown root:root /usr/bin/powertop-tweaks
$ sudo chmod 755 /usr/bin/powertop-tweaks

Positiver Nebeneffekt ist, dass das Script nun direkt ausführbar ist, da es sich im `PATH` befindet:

$ sudo powertop-tweaks

Nachdem das eigentliche Script zur Optimierung des Strombedarfs angelegt wurde, kann dieses nun in die Boot-Reihenfolge mit eingegliedert werden:

$ sudo vi /etc/rc.local

Hier muss einfach powertop-tweaks vor exit 0 eingefügt werden.

Ist Euch ein einfacherer Weg bekannt? Wenn ja, hinterlasst einen Kommentar. Danke.

PowerTOP unter Debian

PowerTOP ist ein Linux-Werkzeug zur Diagnose und Optimierung des Stromverbrauchs. Es wurde 2007 von Intel veröffentlicht und eignet sich vor Allem beim Einsatz auf Laptops. Die Installation erfolgt per Paketmanager:

sudo apt install powertop

Da PowerTOP auf Hardware-Informationen zugreift, muss es als Root gestartet werden

sudo powertop

Nach dem Start sieht die Oberfläche ähnlich aus: 

Weitere Informationen bei Wikipedia und Fedora Magazine.

Standard-Editor in Midnight-Commander einstellen

Nach dem erstmaligen Bearbeiten einer Datei unter Midnight Commander `mc`muss der Standard-Editor gewählt werden.

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/mcedit
  4. /usr/bin/vim.gtk
  5. /usr/bin/vim.tiny

Choose 1-5 [2]:

Die Auswahlliste enthält alle terminalbasierenden Texteditoren, die auf dem System vorhanden sind. Hier wären das `GNU Ed – The GNU line editor` (1), `nano – Nano’s ANOther editor, an enhanced free Pico clone` (2), `mcedit – Internal file editor of GNU Midnight Commander` (3) und `vim – Vi IMproved, a programmers text editor` (4, 5).

Nach Eingabe einer Ziffer (optional) und dem Betätigen der Enter-Taste wird die Datei im gewählten Editor geöffnet. Diese Auswahl muss nur einmalig bestätigt werden. Beim nächsten Bearbeiten innerhalb von MC wird die Datei sofort geöffnet.

Git cleanup

Problem ist folgende Meldung nach `git pull`:

Die Datenbank des Repositories wird für eine optimale Performance im Hintergrund komprimiert.
Siehe „git help gc“ für manuelles Aufräumen.
error: Die letzte Ausführung von „gc run“ enthielt die folgenden Meldungen.
Bitte beheben Sie das Hauptproblem und löschen Sie .git/gc.log.
Ein automatischer Cleanup wird nicht ausgeführt, bis diese Datei entfernt wurde.

fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack

Lösungsansatz ist die Verwendung von `git fsck`.

Die Meldung `error: refs/remotes/origin/HEAD: invalid sha1 pointer 0000000000000000000000000000000000000000` gibt uns den Hinweis, dass eine Referenz nicht mehr passt. Prüfen lässt sich dies bspw. mittels `git branch -a`. Tatsächlich ist der Remote-Branch `master` nicht mehr vorhanden.

Lösen lässt sich dies durch editieren der Datei .git/refs/remotes/origin/HEAD. Deren Inhalt sollte von
`ref: refs/remotes/origin/master` zu `ref: refs/remotes/origin/develop` geändert werden. Nun sollte der Fehler verschwunden sein 🙂

Node.js unter Ubuntu / Linux Mint

Installation nach Anleitung auf nodejs.org.  Für Ubuntu-Derivate zusätzlich das Paket nodejs-legacy installieren, um node zur Verfügung zu haben (legt lediglich einen symbolischen Link unter /usr/bin/ an, der auf nodejs verweist). Danach node.js verifizieren:

$ nodejs -v
$ node -v

Nach einem nodejs-Update (v5 auf v6) und (vorher) installiertem (und vergessenem) nvm laufen beide Skripte allerdings auseinander:
Grund ist eine per nvm festgelegte node-Version. Die Lösung ist ziemlich einfach:

$ nvm list


default zeigt auf 5

$ nvm alias default system


=> $ node -v entspricht nun $ nodejs -v

Sollte

$ nvm -v

einen Fehler werfen, dann wurde die NVM-Installation nicht erkannt

Als Lösung muss ein Snippet in .zshrc oder .bashrc eingefügt werden:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

Publish Angular2-App using Webpack

$ npm run build:prod

This creates a folder called dist. This folder has to be copied to the webserver. I ran into the issue that an error appeared on reloading a page.

I’m not using the hash for routing ({useHash: false}), so all links appear as real paths like ibse-fehse.de/services.
But so reloading a sub-page leads to a 404-server-error „Page not found“ because the current path could not be located server-side.
Solution is to add some lines to .htaccess:

RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

Thanx to Dan Mindru.

Using git-hooks

Um den Entwicklungs-Workflow zu vereinfachen, können git-hooks eingesetzt werden. Dadurch können vor speziellen git-Befehlen automatisch  Skripte gestartet werden. Eine entsprechende Lösung bietet z.B. pre-commit. Die Installation erfolgt mittels GEM (the frontend to RubyGems):

$ sudo gem install pre-commit

Zur projektspezifischen Einrichtung sid folgende Schritte notwendig:

$ cd path/to/git/repo
$ pre-commit install
$ git config pre-commit.checks "[console_log, debugger, jshint, js_lint, merge_conflict, json]"

Nähere Informationen zur Konfiguration finden sich auf https://github.com/jish/pre-commit. Eventuell muss noch execjs installiert werden:

$ sudo gem install execjs

Suche mit find & grep

find dient der Suche nach Dateien bzw. Verzeichnissen.

Mit folgendem Befehl bekomme ich alle Verzeichnisse, die FooBar heissen (Großschreibung beachten!):

$ find $HOME -name FooBar -type d

Wöllte ich das Verzeichnis unabhängig von Groß-/Kleinschreibung, müsste ich schreiben:

$ find $HOME -name [Ff]oo[Bb]ar -type d

Folgender Befehl listet alle Dateien und Verzeichnisse im Home-Directory, die mit foobar beginnen:

 $ find $HOME -name "foobar*" -ls

Edit 22.10.2017: Um Dateien zu  finden, die innerhalb der letzten 24 Stunden heruntergeladen wurden und diese zu verschieben folgenden Befehl verwenden:

find ~/Downloads/ -mtime 0 -type f -exec mv '{}' ~/Dokumente/today/ \;

grep hingegen dient der Suche nach Dateiinhalten.