
Γράφω τα εργαλεία που χρησιμοποιούνται σε ένα κοινό χώρο εργασίας. Δεδομένου ότι υπάρχουν πολλαπλά λειτουργικά συστήματα που εργάζονται σε αυτό το χώρο, χρησιμοποιούμε συνήθως Python και να τυποποιήσουν την έκδοση που είναι εγκατεστημένη σε όλη μηχανές. Ωστόσο, αν ήθελα να γράψω κάποια πράγματα σε C, αναρωτιόμουν αν ίσως θα μπορούσε να έχει η εφαρμογή τυλιγμένο σε μια Python script, που ανιχνεύεται το λειτουργικό σύστημα και απολύθηκε από τη σωστή έκδοση της εφαρμογής C. Κάθε πλατφόρμα έχει στη διάθεσή του ΣΣΚ και χρησιμοποιεί το ίδιο κέλυφος.


Μια ιδέα ήταν να έχουμε το C καταρτίζονται για τους χρήστες τοπικό ~ / bin, με σύγκριση χρονική σήμανση με τον κωδικό C έτσι δεν είναι καταρτίζονται κάθε επιχείρηση, αλλά μόνο όταν ο κώδικας ενημερώνεται. Ένας άλλος ήταν να το υπολογίσουν ακριβώς για κάθε πλατφόρμα, και έχουν το σενάριο περιτύλιγμα επιλέξετε το κατάλληλο εκτελέσιμο.


Είναι ένα αποδεκτό / σταθερή διαδικασία για αυτό; Υπάρχουν αλιεύματα εκεί; Υπάρχουν εναλλακτικές λύσεις (αν υποτεθεί ότι η απόλυτη ανάγκη να χρησιμοποιούν τη μητρική κωδικό C) εκεί;


*Διευκρίνιση: Πολλαπλές OS είναι που εμπλέκονται που δεν μοιράζονται ABI. Π.χ. OS X, διάφορα Linuxes, BSD κλπ θα πρέπει να είναι σε θέση να ενημερώσει τον κώδικα στη θέση στους κοινόχρηστους φακέλους και να έχει το νέο κώδικα εργασίας περισσότερο ή λιγότερο ακαριαία. Διανομή δυαδικό ή την πηγή πακέτα είναι λιγότερο από το ιδανικό.*

 
Χρησιμοποιώντας C σε ένα περιβάλλον από κοινού POSIX πολυ-πλατφόρμα
===================================================================



Ξέρετε, θα πρέπει να εξετάσουμε στατική σύνδεση.


Αυτές τις μέρες, όλοι μας έχουμε τεράστια σκληρούς δίσκους, και μερικές επιπλέον megabytes (για τη μεταφορά γύρω από libc και τι όχι) δεν είναι πραγματικά ότι μεγάλη μια διαπραγμάτευση πια. 


Μπορείτε επίσης να δοκιμάσετε τις εφαρμογές που τρέχουν σας στο chroot () φυλακές και διανομή εκείνους.

 

Ανάλογα με το συνδυασμό ΛΣ os σας, ίσως είναι καλύτερα να δημιουργεί πακέτα για κάθε κατηγορία συστήματος.


Εναλλακτικά, αν όλοι μοιράζονται την ίδια ABI και το υλικό της αρχιτεκτονικής, θα μπορούσε επίσης να συγκεντρώνει στατική εκτελέσιμα.

 

Επίσης, θα μπορούσατε να χρησιμοποιήσετε autoconf και διανείμετε την εφαρμογή σας σε μορφή πηγαίου μόνο. :)

 

Δρομολόγηση ενός παράδειγμα διερμηνέα Python απλά να επιλέξετε το σωστό δυαδικό να τρέξει θα είναι πολύ βαρύτερο από ό, τι χρειάζεστε. Θα διανείμει ένα αρχείο .RC κέλυφος που παρέχει ψευδώνυμα.


Στην / μοιράστηκε / bin, βάζετε τα διάφορα δυαδικά: / Shared / bin / toolname-mac, / μοιράστηκε / bin / toolname-debian-x86, / μοιράστηκε / bin / toolname-NetBSD-Dreamcast, κ.λπ. Στη συνέχεια, στο πλαίσιο της κοινής κοινόχρηστο κέλυφος .RC αρχείο, βάζετε τη λογική για να ρυθμίσετε τα ψευδώνυμα σύμφωνα με πλατφόρμα, έτσι ώστε σε OSX, παίρνει το ψευδώνυμο toolname = / Shared / bin / toolname-mac, και ούτω καθεξής.


Αυτό δεν θα λειτουργεί τόσο καλά, αν θέλετε να προσθέσετε νέα εργαλεία όλη την ώρα, επειδή οι χρήστες θα πρέπει να φορτώσετε εκ νέου τα ψευδώνυμα.


Δεν θα συνιστούσα διανομή εργαλείων με αυτόν τον τρόπο, όμως. Δοκιμής και αξιολόγησης νέων χτίζει από τα εργαλεία που θα πρέπει να λαμβάνουν αρκετό χρόνο και προσπάθεια ότι ο επιπλέον χρόνος που απαιτείται για τη διανομή των εργαλείων για τους χρήστες είναι ασήμαντο. Μπορείτε φαίνεται να είναι η βελτιστοποίηση για να μειώσει το χρόνο της διανομής. Αντικατάσταση εργαλεία που γρήγορα σε ένα ζωντανό περιβάλλον είναι πολύ πιθανό να οδηγήσει σε χρονοβόρες και σύγχυση downtime αν κάτι πάει στραβά εγγράφως και κατασκευή των εργαλείων - ειδικά όταν λεπτές θέματα cross-platform παρεισφρήσουν in.

 