Stavo cercando di installare un pacchetto per il sistema operativo robotico (ROS). E vado avanti e digito sudo apt-get install <package>
Dopo l'installazione, vedo un elenco di file in /opt/share
cartelle, che sono i pacchetti che voglio.
Ma se vado in src
, il codice sorgente (file .cpp) non è presente.
Posso vedere il codice sorgente se vado alle pagine github dello sviluppatore, ma come mai il pacchetto viene installato senza utilizzare il codice sorgente? Come posso scaricare il codice sorgente e installare il pacchetto usando apt-get install
comando?
Risposta accettata:
Per impostazione predefinita apt-get install
non scarica i codici sorgente dei pacchetti. Esiste un apt-get
specifico opzione per fare ciò che è source
.
Da man apt-get
:
source
source fa sì che apt-get prenda i pacchetti sorgente. APT esaminerà i pacchetti disponibili per decidere quale pacchetto sorgente
recuperare. Quindi troverà e scaricherà nella directory corrente la versione più recente disponibile di quel pacchetto sorgente
rispettando la versione predefinita, impostata con l'opzione APT::Default-Release, l'opzione -t o per pacchetto con il
sintassi pkg/release, se possibile.
I pacchetti sorgente vengono tracciati separatamente dai pacchetti binari tramite le righe deb-src nel file sources.list(5). Ciò significa
che dovrai aggiungere una tale riga per ogni repository da cui vuoi ottenere i sorgenti; altrimenti probabilmente otterrai
o la versione sorgente sbagliata (troppo vecchia/troppo nuova) o nessuna.
Quindi la sintassi per scaricare il pacchetto sorgente di qualcosa nella directory corrente sarebbe (non è necessario essere root
):
apt-get source <package_name>
Nota anche che come man
pages dice che devi avere il deb-src
repository abilitati per tutti i normali deb
repository di cui si desidera tenere traccia dei pacchetti sorgente. Il modo più semplice per farlo sarebbe semplicemente aggiungere -src
all'iniziale deb
del repository originale stringa:
deb http://archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted
In una nota diversa, potresti aver controllato /usr/src
directory che è il luogo designato per tutti i sorgenti del kernel.