Angenommen, ich interessiere mich für den Quellcode eines bestimmten Linux-Dienstprogramms, wie factor
. Wo kann ich den Quellcode für dieses Dienstprogramm finden?
Antworten
Zu viele Anzeigen?Sie können auch herausfinden, aus welchem Paket die Binärdatei stammt, und den Quellcode des Pakets herunterladen.
Unter Debian (und Ubuntu und allen anderen Systemen, die auf Debian basieren) geht das so:
$ dpkg -S /usr/bin/factor
coreutils: /usr/bin/factor
$ apt-get source coreutils
Der erste Befehl prüft, welches Paket die gesuchte Datei enthält (verwenden Sie " which factor
", um herauszufinden, welche Binärdatei ausgeführt wird, wenn Sie nur " factor
").
Der zweite Befehl lädt die Quellen (einschließlich der Patches, die zur Erstellung des Pakets angewendet wurden) in das aktuelle Verzeichnis herunter und entpackt sie dort, so dass er in einem speziellen oder temporären Verzeichnis ausgeführt werden sollte.
Ich bin mir ziemlich sicher, dass rpm
-basierten Distributionen haben einen ähnlichen Mechanismus, aber ich kenne ihre Befehle nicht.
Um das Paket, aus dem eine Binärdatei stammt, in einem rpm-basierten System zu finden, können Sie Folgendes eingeben:
$ rpm -qf /usr/bin/factor
die den Paketnamen ausgibt. Stattdessen, mit:
$ rpm -qif /usr/bin/factor
erhalten Sie auch Informationen über ein Paket, in vielen Fällen auch über dessen Homepage.
Quell-RPMs gibt es auch, aber wie man sie bekommt, hängt von dem Paketmanager ab, der auf RPM aufbaut (yum, urpmi, apt-get4 für rpm, ...).
Auf den meisten Systemen enthält auch /usr/share/doc/ eine Dokumentation über das Programm, und der Link zur Website findet sich oft irgendwo dort, vielleicht in der README.
Unter Gentoo schauen Sie einfach in dem Ebuild nach, mit dem Sie das Paket kompiliert haben :D.
Wenn Sie sich nicht sicher sind?
# which factor
/usr/bin/factor
# grep '/usr/bin/factor' /var/db/pkg/\*/\*/CONTENTS
/var/db/pkg/sys-apps/coreutils-6.12-r2/CONTENTS:obj /usr/bin/factor 5aaf903daa4345efb11618b3cb47e9a5 1224224574
/var/db/pkg/sys-apps/coreutils-6.12-r2/CONTENTS:obj /usr/lib64/debug/usr/bin/factor.debug 517d965636850633e9b15926dde8c222 1224224575
# cat /var/db/pkg/sys-apps/coreutils-6.12-r2/SRC\_URI
ftp://alpha.gnu.org/gnu/coreutils/coreutils-6.12.tar.lzma mirror://gnu/coreutils/coreutils-6.12.tar.lzma mirror://gentoo/coreutils-6.12.tar.lzma mirror://gentoo/coreutils-6.12-patches-1.0.tar.lzma http://dev.gentoo.org/~vapier/dist/coreutils-6.12-patches-1.0.tar.lzma
# cat /var/db/pkg/sys-apps/coreutils-6.12-r2/HOMEPAGE
http://www.gnu.org/software/coreutils/
Aber natürlich ist der Quellcode wahrscheinlich noch verfügbar in /usr/portage/distfiles
.
- See previous answers
- Weitere Antworten anzeigen