Programme im PATH durch eigene Binaries ersetzen

A

ar0

Jungspund
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.
 
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"?

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).
 
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).
 
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).

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.
 
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.
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.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Apache /var/www zu /home/ich/www wechseln

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

dovecot und postfix Konfiguration Problem

Zurück
Oben