Nagle zdecydowałem, że chcę spojrzeć na kod źródłowy „echa”
$ which echo
/usr/bin/echo
więc
$ ls -al /usr/bin/echo
-rwxr-xr-x. 1 root root 32536 Oct 31 2016 /usr/bin/echo
więc
$strings /usr/bin/echo
prowadzi mnie do przekonania, że jest to skompilowany program C.
Teraz utknąłem.
Jak ja:
Dowiedz się, w którym pakiecie się znajduje
Uzyskaj źródło
Odbuduj to
Sprawdź to
Zainstaluj nową wersję dla całego systemu
(Wiem, że 5 nie jest dobrym pomysłem, jestem po prostu ciekawy ...)
Obecnie korzystam z Fedory, ale interesują mnie również odpowiedzi dla Debiana
Link do odpowiedniego samouczka byłby dobrą odpowiedzią.
Edytować:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
Sądzę więc, że to ten, /usr/bin/echo
który chciałbym zobaczyć, zamiast próbować przeczytać całość bash
.
debian
fedora
source-code
John Lawrence Aspden
źródło
źródło
type -a echo
najpierw./usr/bin/echo --version
dalej.Odpowiedzi:
RHEL / Fedora
Biegać
rpm -qf /path
Pobierz pakiet źródłowy (użyj
yum
dla RHEL):Wyodrębnij źródła, poprawki z pakietu SRPM pobranego w bieżącym katalogu, przejdź do katalogu, w którym pliki są rozpakowywane, i znajdź swój plik:
Możesz przebudować pakiet za pomocą
rpmbuild --rebuild coreutils-8.25-17.fc25.src.rpm
, który wygeneruje RPM, które możesz zainstalować bezpośrednio w systemie.Jeśli potrzebujesz dokonać modyfikacji pakietów Fedory, o wiele łatwiej jest przejść do opiekuna: Zainstaluj
fedpkg
, sklonuj repozytorium, dokonaj modyfikacji (używając łatek) i odbuduj pakiet z modyfikacjami:źródło
Debian (i pochodne)
Uruchom,
dpkg -S /path
aby zobaczyć, do którego pakietu/path
należy:Pobierz źródło (korzystam z Ubuntu):
Znajdź plik:
Reszta zależy od ciebie.
źródło
dpkg -s coreutils
(lub inny interesujący Cię pakiet) i poszukajHomepage:
. Na stronie głównej zwykle można znaleźć dostęp do odczytu ich kodu źródłowego i pełnej historii wersji.