Συζήτηση για το ρόλο και την ανάγκη των PPΑ

Αυτός είναι ένας καλός λόγος να αποφεύγουμε να φορτώνουμε ppa αλόγιαστα στο σύστημα μας, πιστεύω δεν χρειάζεται να βάζουμε και ppa για εφαρμογές τύπου youtube -dl :P

Εδώ είναι που βρίσκω την λογική των snap/flatpak κτλ ως την καλύτερη, εφαρμογές πακεταρισμένες από του ίδιους του dev , όλα τα απαραίτητα αρχεία/βιβλιοθήκες σε ένα αρχείο ανεξάρτητο από το σύστημα και τις άλλες εφαρμογές που δεν θα μπλέκονται το ένα με το άλλο και που θα ενημερώνεται συνεχώς.

:face_vomiting::face_vomiting::face_vomiting::face_vomiting:
Ποια θα είναι η επόμενη λύση; να πακετάρουμε ολόκληρα τα windows10 με κάθε εφαρμογή σε ένα αρχείο; Όλες αυτές οι ιστορίες με το «πακετάρισμα» λύνουν το λάθος πρόβλημα.

Υπερβάλλεις τώρα, από την στιγμή που αυτός ο τρόπος είναι cross platform με όλες σχεδόν τις διανομές και εξαλείφει το πρόβλημα που ανέφερες πιο πάνω , το βρίσκω μια χαρά, τώρα αν είναι λίγο μεγάλα αυτά τα πακέτα δεν με απασχολεί προσωπικά, giga, ram , cpu ταχύτητες δικτύου πλέον δεν τα κοιτάμε με το σταγονόμετρο, περισσεύουν για τον μέσο χρήστη ;)

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

Αυτό που ποτέ δεν περισσεύει όμως είναι η μνήμη RAM. Αν κάθε πακέτο έρθει με όλες τις βιβλιοθήκες του, τότε δεν είναι απαραίτητο να έρθει με καμία βιβλιοθήκη και να έχουν όλες στατική σύνδεση. Η δυναμική σύνδεση, παρά τα προβλήματα που έχει με τις εξαρτήσεις και το DLL Hell, χρησιμοποιείτε για να μειώσει τις ανάγκες σε μνήμη.

Παρακάτω τρέχω την εντολή

ldd `which gnome-terminal.real` 
Περίληψη
	linux-vdso.so.1 (0x00007ffef4d94000)
	libvte-2.91.so.0 => /usr/lib/x86_64-linux-gnu/libvte-2.91.so.0 (0x00007f5ae0a3c000)
	libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f5ae0134000)
	libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f5adfe3e000)
	libdconf.so.1 => /usr/lib/x86_64-linux-gnu/libdconf.so.1 (0x00007f5adfc30000)
	libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f5adf891000)
	libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f5adf63d000)
	libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f5adf326000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f5adf11f000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f5adede7000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5adebc8000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5ade7d7000)
	libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f5ade5ca000)
	libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f5ade37d000)
	libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f5ade157000)
	libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f5adde3a000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f5addc1d000)
	libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f5add8b8000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5add52f000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5add191000)
	libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f5adcf8d000)
	libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f5adcd7d000)
	libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f5adcb77000)
	libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f5adc96e000)
	libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f5adc74a000)
	libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f5adc519000)
	libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f5adc218000)
	libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f5adc002000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f5adbdbd000)
	libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f5adbbba000)
	libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f5adb9af000)
	libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f5adb7a5000)
	libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f5adb5a2000)
	libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f5adb39f000)
	libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f5adb160000)
	libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f5adaf58000)
	libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f5adad56000)
	libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f5adab47000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f5ada935000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5ada72d000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f5ada505000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f5ada2ea000)
	libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f5ada096000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f5ad9e8e000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5ad9c1c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5ae0eb7000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f5ad99f4000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5ad97f0000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f5ad953c000)
	libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f5ad9333000)
	libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f5ad908e000)
	libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f5ad8e5c000)
	libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f5ad8c59000)
	libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f5ad8a4c000)
	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f5ad8842000)
	libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f5ad8513000)
	libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f5ad82f6000)
	libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f5ad7f78000)
	libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f5ad7d65000)
	libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f5ad7b2f000)
	libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f5ad78fb000)
	libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f5ad767a000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5ad7462000)
	libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f5ad7215000)
	libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f5ad6fe5000)
	libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f5ad6d47000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f5ad6b15000)
	libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f5ad68c8000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f5ad66c4000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f5ad64be000)
	libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f5ad62b7000)
	libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f5ad6033000)
	libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f5ad5e06000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f5ad5bf1000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f5ad59cb000)
	liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f5ad57af000)
	libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f5ad5494000)
	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f5ad527f000)

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

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

3 «Μου αρέσει»

oops . my bad, @lucinos

@Asfodelus
Για μένα η χρήση των snap/flatpak είναι να αντικαταστήσουν τα ppa, δηλαδή για τις 2-3 εφαρμογές που θέλουμε να ενημερώνονται για τους χ/ψ λόγους…όχι για τα πάντα (γιατί έχω ακούσει ότι σε μερικές εφαρμογές είναι πιο αργές πχ στην έναρξη τους , στις περιπτώσεις του snap από ότι θυμάμαι) οπότε τα θεωρώ ειδικού σκοπού η χρήση τους.
Αυτό με την μνήμη ομολογώ δεν το είχα σκεφτεί τι επιπτώσεις μπορεί να έχει, εκεί πάω πάσο, αλλά αν γίνει χρήση με μέτρο όπως ανέφερα πιο πάνω δεν πιστεύω να είναι πρόβλημα.
Τέλος όσον αφορά τι παλιές βιβλιοθήκες εκεί ελπίζεις στη καλή διάθεση του κάθε dev, αλλά αν χρησιμοποιεί κανείς τα συγκεκριμένο πακετάρισμα για γνωστές εφαρμογές δεν νομίζω να υπάρχει και εκεί θέμα.

Αυτό δεν είναι υπάρχει σαν πρόβλημα, η κοινότητα επιμένει να πιστεύει ότι είναι αλλά η αλήθεια είναι ότι κανείς μπορεί πολύ εύκολα να φτιάξει κοινά εκτελέσιμα (κοινά, όχι κάτι ιδιαίτερο, δεν μιλώ για ειδική τεχνολογία) που απλά τρέχουν παντού. Και κανείς απλά τα τρέχει ως χρήστης, δεν υπάρχει λόγος να τα βάλει στο σύστημα.

Φυσικά υπάρχει η περίπτωση που δεν είναι κάποια απλή εφαρμογή αυτό που θες αλλά πραγματικά κάτι στο ίδιο το σύστημα. Σε αυτήν την περίπτωση το σωστό είναι πάρα πολύ απλά βάλε καινούργια διανομή μην προσποιείσαι ότι έχεις ubuntu 18.04 βάζεις ένα ppa και η διανομή σου είναι lts. Μόλις τής άλλαξες τα σωθικά. Είναι σαν κάποιος να έχει windows 7 και να θέλει να τρέξει dx12. Ναι μεν είναι αλήθεια ότι αν θέλει η MS μπορεί υποστηρίξει το dx12 και στα 7, δεν υπάρχει θεωρητικός λόγος να είναι αδύνατον, αλλά αποφασίζει ότι δεν την συμφέρει. Ο χρήστης θα πρέπει να τρέξει καινούργια windows.

Ο λόγος ύπαρξης του PPA ( από το Personal Package Archive) είναι για να δώσει σε οποιοδήποτε θέλει να μπορεί να πακετάρει την εφαρμογή του και να την παρέχει σε χρήστες UBUNTU. Έπειτα να μπορεί να στέλνει updates της εφαρμογής που έχει φτιάξει και να την λαμβάνουν αυτόματα όλοι οι χρήστες του.
Αυτό είναι και ο λόγος που χρειάστηκε πριν περίπου 8 χρόνια (αν θυμάμαι καλά ) να φτιάξω PPA για την εφαρμογή που έχω φτιάξει και συντηρώ :slight_smile:

Ο μόνος τρόπος που οι χρήστες του θα μπορούσαν να λαμβάνουν ενημερώσεις όταν έβγαζα νέα έκδοση ήταν να του φτιάξω PPA. Μάλιστα το πήγα ένα βήμα παραπέρα και οποίος έκανε εγκατάσταση το .deb αυτό ελέγχει αν ο χρήστης έχει το PPA και αν δεν υπάρχει του το βάζει αυτόματα όποτε λαμβάνει πάντα την νέα έκδοση του ucaresystem.

Βέβαια δεν είναι τόσο απλή η διαδικασία. Οποίος ενδιαφέρεται να μάθει τι τραβάει ένας «πακετας» Debian πακέτων διαβάστε τον παρακάτω οδηγό :

9 «Μου αρέσει»

Τα PPA καλα ειναι… για αυτο που εχουν δημιουργηθει και ο ελεγχος τους ειναι ευθυνη του εκαστοτε developer ή τελος παντων δημιουργου ενος project αλλα στο Debian και σε αλλες διανομες που χρησιμοποιουν παρομοιες διαδικασιες, καθε αλλαγη που γινεται σε καποιο πακετο ειτε για debugging ειτε για καινουργια features ξαναπακεταρεται και περναει testing για να καταληξει στην Stable ή στα backports της Stable εκδοσης. Αυτος ειναι ενας απο τους λογους που το Debian εχει “παλια” πακετα.

Μια ακομα πτυχη που δεν εχει αναφερθει ειναι η διαφορα στο ρυθμο ανανεωσης των πακετων. Το Debian πχ αλλαζει εκδοση καθε 2-3 χρονια και βγαινει οποτε ειναι ετοιμο. Ενω το Ubuntu και τα παραγωγα του, καθε 6 μηνες. Το Debian για να κλεισει λιγο το κενο μεταξυ καινουργιων πακετων και παλιων χρησιμοποιει τα backports και το Ubuntu εχει και αυτο τα δικα του backports. Σε διανομες που εχουν πιο γρηγορους ρυθμους… υπαρχουν αντοιστιχα των backports οπως πχ το AUR στις διανομες που στιριζονται στο Arch Linux και υποθετω οτι κατι αντιστοιχο θα υπαρχει για τα CentOS και Fedora.

Επισεις, πρεπει ο καθε χρηστης να ξερει οτι ειναι πολυ καλητερο (αν και λιγο πιο αβολο παρολα αυτα προτιμοτερο για λογους ασφαλειας) να δοκιμασει Flatpaks και Snaps και AppImages αλλα και ξεκαρφωτα deb/rpm πακετα μεσα απο VM για τον απλουστατο λογο οτι αν ο μη γενειτω γινει καμια στραβη μετα δεν θα λεμε οτι μας φταιει το Flatpak/Snap/AppImage/DEB πακετο, το λειτουργικο αλλα και οτιδηπωτε αλλο εκτως απο τον εαυτο μας, γιατι δεν πηραμε τις σωστες προφυλαξεις. Προσεχουμε για να εχουμε

Ενα τελευταιο σημειο που θελω να θηξω. Ποσες φορες ειναι οι χρηστες (και εμεις οι ιδιοι κατ’επεκταση) σηγουροι οτι χρειαζομαστε την συγκεκριμενη τελευταια εκδοση του αγαπημενου μας προγραμματος και πρεπει να παμε σε λυσεις εκτος διανομης; Καταλαβαινω και ειναι απολυτως λογικο οταν προκειται για διορθωση λαθων αλλα ποσοι απο μας χρειαζομαστε ΟΛΑ τα καινουργια features που μας δινουν οι ποιο φρεσκιες εκδοσεις;

Μηπως σε πολλες φασεις μας εχει φαει το συνδρομο του μπιχλιμπιδατου λογισμικου και “κελαιδαμε” στο ρυθμο του “οι τελευταιες εκδοσεις του αγαπημενου μας προγραμματος ειναι οι καλητερες” και δεν κανουμε ποτε αναλυση των αναγκων μας, αλλα και του τι χρησιμοποιουμε και πως;

6 «Μου αρέσει»

Σπανια χρησιμοποιω ppa. Και δεν χρησιμοποιω σχεδον ποτε snap/flatpak και αλλα τετοια.

Απο τη στιγμη που σχεδον ολα τα προγραμματα εχουν deb, κατεβαζω το εκαστοτε για το λειτουργικο που εχω και dpkg -i…

Για εναν μεσο χρηστη ειναι η πιο απλη διαδικασια για να εγκαταστησει λογισμικο που δεν βρισκει στα αποθετηρια.

Δεν εχει ενημερωσεις αλλα μπορει να τις κανει χειροκινητα οταν πιστευει οτι χρειαζεται. Με αυτον τον τροπο, αν κατι σπασει θα το βρει αμεσα αφου θα ειναι αυτο που εγκατεστησε.

Τα snap κτλ θεωρω οτι μπορουν να βοηθησουν νεους χρηστες, αφου διευκολυνουν την εγκατασταση πακετων προγραμματων τα οποια σε αλλη περιπτωση θα χρειαζοντουσαν αρκετο documentation για να το πραξουν και φυσικα εχουν παντα ενημερωμενο λογισμικο χωρις να χρειαζεται να ανησυχουν.

Για την ιστορια συνηθως κατεβαζω απο το κατωθι

https://pkgs.org/download/mixxx

2 «Μου αρέσει»

Νομίζω για κάποια προγράμματα είναι μονόδρομος τα ppa (π.χ kodi). Για αρκετά χρόνια χρησιμοποιούσα μόνο 2 ppa (utappia - xbmc) και πρόσφατα teejee (timeshift).

1 «Μου αρέσει»