Programme im PATH durch eigene Binaries ersetzen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von ar0, 05.04.2010.

  1. ar0

    ar0 Jungspund

    Dabei seit:
    29.03.2010
    Beiträge:
    17
    Zustimmungen:
    0
    Moin,
    ich sitz in einem System auf dem ich einige Programme die im PATH sind durch selbst kompilierte (lokal im Homeordner vorhandene) aktuellere Versionen ersetzen will.

    Ich hab naiv einfach mal
    Code:
    export PATH=~/bin:"$PATH"
    in meine ~/.bashrc gepackt. Ist das "sauber"? (Oder könnte er irgendwann mal rummeckern, dass beispielsweise 2 verschiedene Versionen von vim im PATH enthalten sind oder ähnliches?)
    Ich mein, es funktioniert so wie ich es will, ("which foo" gibt mir die Version in meinem ~/bin an falls vorhanden, trotz weiterer binaries in anderen PATH Pfaden.) aber ich bin mir nicht wirklich sicher ob das koscher ist.

    Relevanter Teil der Bash Manpage:
    Code:
    COMMAND EXECUTION
           [...]
    
           If the name is neither a shell function nor a builtin, and contains no slashes, bash searches each element of  the
           PATH  for  a  directory  containing  an executable file by that name.  Bash uses a hash table to remember the full
           pathnames of executable files (see hash under SHELL BUILTIN COMMANDS below).  A full search of the directories  in
           PATH  is  performed  only if the command is not found in the hash table.  If the search is unsuccessful, the shell
           prints an error message and returns an exit status of 127.
    Code:
    $ bash --version
    GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
    Copyright (C) 2007 Free Software Foundation, Inc.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Gast1

    Gast1 Guest

    Jo.

    Es könnte natürlich dann Probleme geben, wenn irgendeine Bibliothek, gegen die das Binary linkt, inkompatibel upgedatet wurde, aber das wirst Du schon früh genug merken und dann heisst es eben neu bauen (gegen die aktualisierte Bibliothek).
     
  4. ar0

    ar0 Jungspund

    Dabei seit:
    29.03.2010
    Beiträge:
    17
    Zustimmungen:
    0
    Ok, das ist schonmal gut.

    Mit Libraries geht sowas wahrscheinlich nicht, richtig? (Ich weiß, dass das ne andere Frage ist die eigentlich in ein anderes Subforum gehört, aber ich erwarte als Antwort eh "Nein.")
    tin benötigt beispielsweise eine aktuellere curses Version, da musste ich configure folgendes mitgeben:
    Code:
    --with-curses-dir="$HOME"
    (Nachdem ich ein aktuelles ncurses via ./configure --prefix="$HOME" && make && make install installiert habe).
     
  5. Gast1

    Gast1 Guest

    Prinzipiell geht das schon, nur ab einem bestimmten Maß an "eigenen" Programmen fragt man sich eher, wieso man es nicht gleich richtig macht und das gesamte System auf den aktuellen Stand bringt und sich eine Menge unnötig verschwendeten Platz für diese "Dubletten" erspart.

    Für ein paar einzelne Anwendungen mag das ja noch gangbar sein, irgendwann wird einem auch der Aufwand zu groß, das ganze will ja nicht nur gebaut und installiert sondern auch gepflegt werden.
     
  6. #5 ar0, 05.04.2010
    Zuletzt bearbeitet: 07.04.2010
    ar0

    ar0 Jungspund

    Dabei seit:
    29.03.2010
    Beiträge:
    17
    Zustimmungen:
    0
    Weil ich keine root Rechte hab? Admin hab ich schon angeschrieben, bisher noch keine Rückmeldung.
    Btw, wenn du "prinzipiell" sagst, heißt das dann, dass es möglich, aber nicht sonderlich praktikabel ist? Weil bisher ist ncurses noch die einzige Lib für die ich das bräuchte, aber man plant ja in die Zukunft. Über einen Link oder erhellende google Suchwörter wär ich dankbar.

    Platzprobleme sollte es eigentlich keine geben:
    Code:
    $ df -h
    Filesystem            Size  Used Avail Use% Mounted on
    rootfs                7.9G  1.4G  6.6G  17% /
    nfs.students.secret-university.de:/home
                          2.7T  1.7T  952G  65% /home
    edit: der Vollständigkeit halber, ich generiere jetzt halt mit zwei shell-Funktionen namens my_ldflags und my_cflags die entsprechenden Optionen und rufe die configure-scripte aus einem Wrapper folgendermaßen auf:
    Code:
    ./configure CFLAGS="`my_cflags`" LDFLAGS="`my_ldflags`"
    Funktioniert meistens.
     
Thema:

Programme im PATH durch eigene Binaries ersetzen

Die Seite wird geladen...

Programme im PATH durch eigene Binaries ersetzen - Ähnliche Themen

  1. Centos Update von Programmen / Configs

    Centos Update von Programmen / Configs: Hallo, überlege mir gerade ob ich auf Centos umsteigen soll. Bei Centos gibt es ja viele Jahre Update für eine Version. Wie ist es aber nach...
  2. portable Windows-Programme in Wine nutzen

    portable Windows-Programme in Wine nutzen: Hallo, ich bin gerade an der mühlseligen Umstellung meiner Windows-Programm-Sammlung auf Linux. Für viele kleine Tools (speziell aus dem...
  3. Liste der installierten Programme erstellen, aber von extern, ohne chroot ?

    Liste der installierten Programme erstellen, aber von extern, ohne chroot ?: Hallo Gibt es eine Möglichkeit, die installierten Programme z.B. bei Debian, Archlinux in eine eine Liste zu schreiben, ohne angemeldet zu...
  4. Zwei neue Backup-Programme für Linux

    Zwei neue Backup-Programme für Linux: Fast gleichzeitig haben zwei Backup-Programme die Verfügbarkeit der ersten produktiven Version angekündigt. Weiterlesen...
  5. Lokale GUI-Programme mit php-cgi starten

    Lokale GUI-Programme mit php-cgi starten: Hallo zusammen, nach dem Studium des Internets ist es mir gelungen Bash-Skripte mit php-cgi zu starten. Im Nachhinein betrachtet ist es gar nicht...