distutils Python - Ξέρει κανείς πώς να το χρησιμοποιήσει;




Έγραψα ένα γρήγορο πρόγραμμα σε Python για να προσθέσετε ένα γραφικό περιβάλλον GTK σε ένα πρόγραμμα cli. Αναρωτιόμουν πώς μπορώ να δημιουργήσει ένα πρόγραμμα εγκατάστασης χρησιμοποιώντας distutils. Δεδομένου ότι είναι απλά ένα frontend GUI για μια εφαρμογή γραμμής εντολών λειτουργεί μόνο σε * nix ούτως ή άλλως οπότε δεν ανησυχώ γι 'αυτό είναι διαγώνια πλατφόρμα.


Κύριος στόχος μου είναι να δημιουργηθεί ένα πακέτο .deb για τους χρήστες debian / ubuntu, αλλά δεν καταλαβαίνω κάνει / να ρυθμίσετε τα αρχεία. Έχω κατά κύριο λόγο ήταν ένας προγραμματιστής web μέχρι τώρα.


Ευχαριστώ για τη βοήθειά σου!


**edit** : Ξέρει κανείς από ένα έργο που χρησιμοποιεί distutils έτσι θα μπορούσα να το δείτε σε δράση και, ξέρετε, στην πραγματικότητα δοκιμάστε κτίριο αυτό;


Εδώ είναι μερικές χρήσιμες συνδέσεις



* [Ubuntu Python Οδηγός συσκευασίας](https://wiki.ubuntu.com/PackagingGuide/Python)


Ο οδηγός αυτός είναι ***πολύ*** χρήσιμη. Δεν ξέρω πώς το έχασα κατά τη διάρκεια της αρχικής μου κύμα gooling. Θα σας καθοδηγεί ακόμα και μέσα από τη συσκευασία μέχρι μια υπάρχουσα εφαρμογή πύθωνα
* [Η MOTU έργο του Ubuntu](https://wiki.ubuntu.com/MOTU/GettingStarted)


Αυτή είναι η επίσημη πακέτο διατήρηση του έργου σε ubuntu. Ο καθένας μπορεί να συμμετάσχει, και υπάρχουν πολλά tutorials και πληροφορίες σχετικά με τη δημιουργία πακέτων, όλων των τύπων, τα οποία περιλαμβάνουν το παραπάνω «οδηγό συσκευασία python».
* [Python distutils να deb; - Ars Technica Φόρουμ συζητήσεων](http://episteme.arstechnica.com/eve/forums/a/tpc/f/96509133/m/808004952931)


Σύμφωνα με αυτή τη συζήτηση, δεν μπορείτε να χρησιμοποιήσετε μόνο distutils. Αυτό δεν ακολουθεί τη μορφή πακέτων του Debian (ή κάτι τέτοιο). Υποθέτω ότι είναι ο λόγος που πρέπει dh\_make όπως φαίνεται στον οδηγό συσκευασίας Ubuntu
* [«Μια εντολή bdist\_deb για distutils](http://osdir.com/ml/linux.debian.devel.python/2004-10/msg00013.html)


Αυτός έχει κάποια ενδιαφέρουσα συζήτηση (είναι επίσης πως βρήκα τον οδηγό ubuntu) για τη συνένωση ένα zip αρχείο και ένα shell script για τη δημιουργία κάποιου είδους καθολική εκτελέσιμο (τίποτα με python και bash που είναι). Περίεργο. Επιτρέψτε μου να ξέρω αν κάποιος βρίσκει περισσότερες πληροφορίες σχετικά με αυτήν την πρακτική, επειδή ποτέ δεν έχω ακούσει για αυτό.
* [Περιγραφή της μορφής deb και πώς distutils ταιριάζουν - python λίστα](http://mail.python.org/pipermail/distutils-sig/2000-May/001000.html)
Δείτε τις [distutils απλό παράδειγμα](http://docs.python.org/dist/simple-example.html) . Αυτό είναι βασικά αυτό που είναι σαν, εκτός από πραγματική εγκατάσταση scripts συνήθως περιέχουν λίγο περισσότερες πληροφορίες. Δεν έχω δει κάποια που είναι ουσιαστικά πιο περίπλοκη, όμως. Στην ουσία, το μόνο που θα δώσει μια λίστα με το τι πρέπει να εγκατασταθεί. Μερικές φορές θα πρέπει να δώσει κάποιες DICTS χαρτογράφηση δεδομένου ότι η πηγή και να εγκατασταθεί δέντρα μπορεί να μην είναι το ίδιο.


Εδώ είναι μια πραγματική ζωή (ανώνυμα) παράδειγμα:



```
#!/usr/bin/python 

from distutils.core import setup 

setup (name = 'Initech Package 3', 
          description = "Services and libraries ABC, DEF", 
          author = "That Guy, Initech Ltd", 
          author_email = "that.guy@initech.com", 
          version = '1.0.5', 
          package_dir = {'Package3' : 'site-packages/Package3'}, 
          packages = ['Package3', 'Package3.Queries'], 
          data_files = [ 
                       ('/etc/Package3', ['etc/Package3/ExternalResources.conf']) 
          ])

```
κατέβασε το πακέτο perl-cddb με την εντολή :

git clone https://aur.archlinux.org/perl-cddb.gitμπες μέσα στον φάκελο που δημιουργήθηκε και άνοιξε το αρχείο pkgbuild με έναν texteditor της επιλογής σου.

στη συνέχεια κάνε comment την γραμμή :

make test

να γίνει δηλαδή έτσι :

#make test

σώσε και τ… τελικα κατι καταφερα χαρη στο ‘‘xorg-x11-utils xdotool’’. :slightly\_smiling\_face:

(σε wayland δεν πρεπει να δουλεψει).

ubuntu:

sudo apt install xbindkeys x11-utils xdotool

fedora:

sudo dnf install xbindkeys xorg-x11-utils xdotool

(για ποντικι με 6+ πληκτρα.)

δημιουργια ενος (κρυφου) αρχειου σ… δε χρειάζεται να πειράξεις καθόλου το /tmp.

μπορείς να αλλάξεις προσωρινά τον φάκελο όπου θα γίνει το build προσθέτοντας το builddir=/diadromi/fakelou ακριβώς πριν από το makepkg. αν θέλεις να το κάνεις μόνιμα (δεν το συνιστώ), αλλάζεις την αντίστοιχη γραμμή στο /etc/makepkg.conf. [@fotisv](/u/fotisv) δεν είναι αυτός ο τρόπος εγκατάστασης των .deb πακέτων. αντί αυτού δώσε στο τερματικό σου

sudo dpkg -i keybase\_i386.deb καλώς ήρθες [@andili](/u/andili) στην παρέα μας

σύμφωνα με [αυτόν](https://forums.linuxmint.com/viewtopic.php?t=285028) τον οδηγό δώσε στο τερματικό σου

sudo apt install git dkms build-essential

git clone https://github.com/tomaspinho/rtl8821ce.git

cd rtl8821ce

sudo ./dkms-install.sh

κάνε επανεκκίνηση και απενεργοποίησε το secure boot στο bios και λογικά θα δουλέ… πάτε και κοιτάζετε αυλού. γιατί κύριε ; :stuck\_out\_tongue:

[εικόνα]

[εισαγωγή στο xinput και ενα setup με πολλά ποντίκια ταυτόχρονα](https://linux-user.gr/t/eisagwgh-sto-xinput-kai-ena-setup-me-polla-pontikia-taytochrona/981) [γενικά περί linux](/c/genika)

στο παρόν οδηγό θα καταλάβουμε πως λειτουργεί το σύστημα κάτω από το καπάκι και τι συμβαίνει στον υπολογιστή όταν πατήσουμε… ρώτησα στα forum του arch και τελικά είναι θέμα virtualbox. έφτιαξα ένα startup.nsh για να ανοίγει τον grub στο διαμέρισμα efi και έφτιαξε.

<https://wiki.archlinux.org/index.php/virtualbox#installation_in_efi_mode> καλησπέρα καλώς ήρθες φίλε, τρέξε την εντολή που σου λέει :

sudo dpkg --configure -a

και δώσε μας αποτελέσματα, μέσα σε code tags για να είναι ευανάγνωστα. <p><strong> συνολικά: </strong></p><p>τόσο το put όσο και το post μπορούν να χρησιμοποιηθούν για τη δημιουργία.</p><p>πρέπει να ρωτήσετε "σε τι εκτελείτε τη δράση;" να διακρίνετε τι πρέπει να χρησιμοποιείτε. ας υποθέσουμε ότι σχεδιάζετε ένα api για να κάνετε ερωτήσεις. εάν θέλετε να χρησιμοποιήσετε το post τότε θα το κάνετε σε μια λίστα ερωτήσεων. εάν θέλετε να χρησιμοποιήσετε το put τότε θα το κάνετε αυτό σε μια συγκεκριμένη ερώτηση.</p><p><strong> μεγάλη και οι δύο μπορούν να χρησιμοποιηθούν, έτσι ποιο πρέπει να χρησιμοποιήσω στο restful σχεδιασμό μου: </strong></p><p>δεν χρειάζεται να υποστηρίζετε τόσο το put όσο και το post.</p><p>το οποίο χρησιμοποιείται παραμένει στο χέρι σας. αλλά θυμηθείτε να χρησιμοποιήσετε το σωστό, ανάλογα με το αντικείμενο που αναφέρετε στο αίτημα.</p><p>μερικές σκέψεις:</p><ul> <li>ονομάζετε ρητά τα αντικείμενα url που δημιουργείτε ή αφήστε το διακομιστή να αποφασίσει; εάν τους ονομάσετε τότε χρησιμοποιήστε put. εάν αφήσετε τον διακομιστή να αποφασίσει στη συνέχεια, χρησιμοποιήστε το post.</li> <li>put είναι idempotent, οπότε αν put ένα αντικείμενο δύο φορές, δεν έχει καμία επίδραση. αυτή είναι μια ιδιοκτησία της νίκαιας, οπότε θα μπορούσα να χρησιμοποιήσω το put όταν ήταν δυνατόν.</li> <li>μπορείτε να ενημερώσετε ή να δημιουργήσετε έναν πόρο με put με την ίδια διεύθυνση url αντικειμένου</li> <li>με το post μπορείτε να έχετε 2 αιτήματα που εισέρχονται ταυτόχρονα για τροποποιήσεις σε μια διεύθυνση url και μπορεί να ενημερώσουν διαφορετικά μέρη του αντικειμένου.</li> </ul><p><strong> ένα παράδειγμα: </strong></p><p> <a href="https://stackoverflow.com/questions/256349/what-are-the-best-common-restful-url-verbs-and-actions/256359#256359">έγραψα τα εξής ως μέρος μιας άλλης απάντησης σχετικά με το so</a> :</p><blockquote> <p><strong> post: </strong></p> <p>χρησιμοποιείται για την τροποποίηση και την ενημέρωση ενός πόρου</p> <pre><code>post /questions/&lt;existing\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>σημειώστε ότι το ακόλουθο είναι ένα σφάλμα:</p> <pre><code>post /questions/&lt;new\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>εάν η διεύθυνση url δεν έχει δημιουργηθεί ακόμη, δεν θα πρέπει να χρησιμοποιείτε το post για να το δημιουργήσετε ενώ καθορίζετε το όνομα. αυτό θα πρέπει να έχει ως αποτέλεσμα ένα σφάλμα 'πόρος δεν βρέθηκε' επειδή το <code>&lt;new\_question&gt;</code> δεν υπάρχει ακόμα. πρέπει πρώτα να τοποθετήσετε τον πόρο <code>&lt;new\_question&gt;</code> στον διακομιστή.</p> <p>θα μπορούσατε όμως να κάνετε κάτι τέτοιο για να δημιουργήσετε πόρους χρησιμοποιώντας post:</p> <pre><code>post /questions http/1.1 host: www.example.com/ </code></pre> <p>σημειώστε ότι σε αυτήν την περίπτωση το όνομα του πόρου δεν έχει καθοριστεί, η διαδρομή url των νέων αντικειμένων θα σας επιστραφεί.</p> <p><strong> σημειωση: </strong></p> <p>χρησιμοποιείται για τη δημιουργία ενός πόρου ή για την αντικατάστασή του. ενώ ορίσετε τους πόρους νέα διεύθυνση url.</p> <p>για έναν νέο πόρο:</p> <pre><code>put /questions/&lt;new\_question&gt; http/1.1 host: www.example.com/ </code></pre> <p>για να αντικαταστήσετε μια υπάρχουσα πηγή:</p> <pre><code>put /questions/&lt;existing\_question&gt; http/1.1 host: www.example.com/ </code></pre></blockquote> τελικά το έφτιαξα σβήνοντας οτιδήποτε στο σύστημα έχει σχέση με flatpak και επανεγκατάσταση. πιο συγκεκριμένα 
sudo find ~/ -name "flatpak" | xargs rm -r
sudo find / -name "flatpak" | xargs rm -r
sudo apt install flatpak

ολίγον τι επικίνδυνο αλλά δούλεψε.