Sourcen von Libs herunterladen. ( Alle Debian basierenden Systeme )



  • Nehmen wird als Beispiel SDL2.
    Mit folgendem Befehl lädt man die fertigen Libs runter, welche ein bestehendes Programm braucht:

    sudo apt install libsdl2-2.0-0
    

    Wen man selbst Programme entwickelt, brauch man noch die nötigen Header (*.h)

    sudo apt install libsdl2-dev
    

    So nun zur Frage, kommt man mittels "apt install" auch an die Sourcen (*.c / *.cpp") ran ?
    Oder muss man die mühsam selbst suchen, im Falle von SDL2 hier: https://github.com/libsdl-org/SDL
    SDL2 findet man auf guthub, aber es gibt auch viele Sourcen, die sonst irgendwo liegen.


  • Mod

    man apt-get:

    source source_pkg
    Causes apt-get to fetch source packages. APT will examine the available packages to decide which source package to fetch. It will then find and download into the current directory the newest available version of that source package. Source packages are tracked separately from binary packages via rpm-src type lines in the sources.list(5) file. This probably will mean that you will not get the same source as the package you have installed, or could install. If the --compile options is specified then the package will be compiled to a binary using rpmbuild, if --download-only is specified then the source package will not be unpacked.
    A specific source version can be retrieved by following the source name with
    an equals (=) and then the version to fetch, similar to the mechanism used for the package files. This enables exact matching of the source package name and version, implicitly enabling the APT::Get::Only-Source option.
    Note that source packages are not tracked like binary packages, they exist
    only in the current directory and are similar to downloading source tar balls.

    War das so schwer?



  • Ich bin auf folgendes gestossen:
    https://wiki.ubuntuusers.de/sources.list/
    Daher habe ich sources.list folgendermassen angepasst:

    # deb cdrom:[Linux Mint 19.3 _Tricia_ - Release amd64 20191213]/ bionic contrib main non-free
    
    deb http://de.archive.ubuntu.com/ubuntu bionic main restricted
    
    deb http://de.archive.ubuntu.com/ubuntu kinetic main restricted universe multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu kinetic main restricted universe multiverse
    
    deb http://de.archive.ubuntu.com/ubuntu kinetic-updates main restricted universe multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu kinetic-updates main restricted universe multiverse
    
    deb http://de.archive.ubuntu.com/ubuntu kinetic-security main restricted universe multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu kinetic-security main restricted universe multiverse
    
    deb http://de.archive.ubuntu.com/ubuntu kinetic-backports main restricted universe multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu kinetic-backports main restricted universe multiverse
    

    Dann habe ich folgendes gemacht;

    sudo apt update
    sudo apt upgrade
    

    Jetzt lädt und installiert er etwa 2GB Daten.



  • Jetzt nimmt mich es echt wunder, wieso er soviel runtergeladen und installiert hat ?
    Sourcen waren das bestimmt nicht.
    Wen ich folgendes mache, werden die Sourcen als tar.gz in den Home-Ordner kopiert.

    sudo apt source libsdl2-2.0-0 
    

    Irgendwie habe ich das Gefühl, das ist mit den "deb"-Kommandos in der "sources.list" zusammen und habe somit ein aktuelleres Mint/Ubuntu runtergeladen ?


  • Mod

    Deine Änderungen an der sources.list hat halt einen riesigen Index von allen Quelltexten erstellt, die es auch nur irgendwo auf der Welt gibt. Den du wahrscheinlich niemals brauchen wirst. Da hätten bestimmt auch ein paar weniger Quellenangaben genügt. Die libsdl liegt beispielsweise im main universe. Das universe dürfte aber sowieso eine der größten Komponenten der Distribution sein, insofern dürftest du nicht all zu viel unnötig indiziert haben. Die Quellen zu den anderen Distributionen (security, updates, etc.) wären halt nicht nötig gewesen. Schadet aber auch nicht.

    @Mathuas sagte in Sourcen von Libs herunterladen. ( Alle Debian basierenden Systeme ):

    Wen ich folgendes mache, werden die Sourcen als tar.gz in den Home-Ordner kopiert.
    sudo apt source libsdl2-2.0-0

    Das sudo ist ungewöhnlich, du willst doch nur Text herunterladen und keine Änderungen am System machen.



  • @SeppJ sagte in Sourcen von Libs herunterladen. ( Alle Debian basierenden Systeme ):

    Da hätten bestimmt auch ein paar weniger Quellenangaben genügt.

    Meinst du, da hätte eine Zeile mit "deb-scr" genügt.

    Das sudo ist ungewöhnlich, du willst doch nur Text herunterladen und keine Änderungen am System machen.
    Stimmt, du hast recht für "apt source" wird kein Rootrecht gebraucht. Am besten ein Ordner erstellen und dort dann den Befehl ausführen.

    Ich habe dazu noch eine Frage.
    Wie kann ich es Code::Blocks mitteilen, wen ich bei einem Befehl "find declaration of:.." wähle, das er die *.c und nicht zu dem *.h geht ?
    Oder kann man gar die Sourcen in einen Ordner wie /usr/scr kopieren ?
    Oder gar automatisch per "apt" machen ?


  • Mod

    @Mathuas sagte in Sourcen von Libs herunterladen. ( Alle Debian basierenden Systeme ):

    @SeppJ sagte in Sourcen von Libs herunterladen. ( Alle Debian basierenden Systeme ):

    Da hätten bestimmt auch ein paar weniger Quellenangaben genügt.

    Meinst du, da hätte eine Zeile mit "deb-scr" genügt.

    Ja.

    Das sudo ist ungewöhnlich, du willst doch nur Text herunterladen und keine Änderungen am System machen.
    Stimmt, du hast recht für "apt source" wird kein Rootrecht gebraucht. Am besten ein Ordner erstellen und dort dann den Befehl ausführen.

    Ich habe dazu noch eine Frage.
    Wie kann ich es Code::Blocks mitteilen, wen ich bei einem Befehl "find declaration of:.." wähle, das er die *.c und nicht zu dem *.h geht ?
    Oder kann man gar die Sourcen in einen Ordner wie /usr/scr kopieren ?
    Oder gar automatisch per "apt" machen ?

    Eine Deklaration (das aus dem Header) ist etwas anderes als eine Definition (der eigentliche Quelltext). Eigentlich solltest du niemals wissen brauchen, wie die Funktionen einer Fremdbibliothek genau definiert sind. Was hast du überhaupt vor? Willst du an der SDL weiterentwickeln oder warum meinst du, die Sourcen zu benötigen? Deine Fragen derzeit deuten auf ein XY-Problem hin.



  • Ich bin einfach neugierig, wie gewisse Sachen gelöst sind. Und dann ist es einfacher, wen man einfach mit "Find Declaration" durchforsten kann.


Anmelden zum Antworten