Wie finde ich heraus, ob ein installiertes Paket noch notwendig ist

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Itaka

Benutzer
Registriert
14. Dez. 2009
Beiträge
379
Reaktionspunkte
18
Punkte
18
Ich möchte meine alte DS in eine neue Hardware umziehen. In den 10 Jahren Laufzeit habe ich auch dies und das ausprobiert. Grund genug sich die Frage zu stellen, welche Packete eigentlich obsolet sind. Einige Packet wurden durch andere vorausgesetzt. Wie geht man vor um heraus zufinden was es nicht mehr braucht.
 
Ich weiß nicht, ob sich das verallgemeinern lässt, aber bei den Synology Paketen, bei denen ich das bisher probiert habe, kam dann, wenn man auf "deinstallieren" klickt, ein Hinweis auf die Abhängigkeit verbunden mit der Möglichkeit, die Deinstallation abzubrechen.
 
Ok danke, den Weg probiere ich
 
Du kannst das auch ohne eine versuchte Deinstallation auf der Kommandozeile machen. Das geht mit "synopkg" und dem Parameter "--depend-on".

Hier mal als Beispiel von meiner Maschine:
Code:
root@GalacticaNAS091:~# synopkg list --name
QuickConnect
DownloadStation
SynoOnlinePack_v2
StorageManager
Python2
ActiveBackup
SMBService
ReplicationService
SupportService
ContainerManager
FileStation
SnapshotReplication
HyperBackup
ScsiTarget
PHP7.4
Perl
SecureSignIn
LogCenter
root@GalacticaNAS091:~# synopkg list --name --depend-on PHP7.4
HyperBackup
root@GalacticaNAS091:~# synopkg list --name --depend-on Perl

root@GalacticaNAS091:~# synopkg list --name --depend-on ReplicationService
SnapshotReplication
root@GalacticaNAS091:~#
 
Ich hab mal schnell ein kleines Skript gebaut, was das für alle Pakete ausgibt:

Code:
root@GalacticaNAS091:~# /volume1/Temp/scripts/dependencies.sh
Following packages depending on PHP7.4:
HyperBackup
Following packages depending on Python2:
DownloadStation
Following packages depending on QuickConnect:
SupportService
Following packages depending on ReplicationService:
SnapshotReplication
Following packages depending on ScsiTarget:
SnapshotReplication
Following packages depending on SMBService:
ActiveBackup
 

Anhänge

Ich habe nur folgendes gefunden Node.js V18 und V12 sind installiert. Erkenne ich es korrekt, dass mit V18 dann V12 nicht mehr notwendig ist?
 
Nicht zwangsläufig, aber da sollte mein "dreckiger" Ansatz funktionieren - also einfach 'mal bei V12 auf "deinstallieren" drücken. Wenn nicht gemeckert wird, dann kannste das 'rausschmeißen. Danke an @Adama für die saubere Variante! 👌
 
Ich hab mal schnell ein kleines Skript gebaut, was das für alle Pakete ausgibt:
Vielen Dank.
Allerdings funktionierte bei mir das Zählen der Arrayelemente nicht korrekt und hab es mal etwas angepasst:
Bash:
#!/bin/bash

mapfile -t PACKAGES < <( synopkg list --name | sort )

printf "folgende Paket haben Abhängigkeiten:\n"
for PACKAGE in "${PACKAGES[@]}"; do
    mapfile -t DEPENDS < <( synopkg list --name --depend-on "$PACKAGE" | sort )
    if [ ${#DEPENDS[@]} -ge 1 ] && [ -n "${DEPENDS[0]}" ]; then
        echo "Following packages depending on $PACKAGE:"
        echo "    ${DEPENDS[@]}"
    fi
done


printf "\nfolgende Pakete haben KEINE Abhängigkeiten:\n"
for PACKAGE in "${PACKAGES[@]}"; do
    mapfile -t DEPENDS < <( synopkg list --name --depend-on "$PACKAGE" | sort )
    if [ ${#DEPENDS[@]} -le 1 ] && [ -z "${DEPENDS[0]}" ]; then
        echo "    $PACKAGE:"
    fi
done
 
@geimist Das wundert mich jetzt ein wenig, was bekommst du denn, wenn du mein Skript nimmst?
 
Es fing damit an:
Code:
Following packages depending on Contacts:
Calendar
Following packages depending on ContainerManager:
DocumentViewer
Following packages depending on MailServer:
MailStation
Following packages depending on Node.js_v18:
Spreadsheet
/volume3/DEV/dependencies_syno_packages.sh: line 9: [: too many arguments
/volume3/DEV/dependencies_syno_packages.sh: line 9: [: MailStation: binary operator expected
/volume3/DEV/dependencies_syno_packages.sh: line 9: [: HyperBackup: unary operator expected
Following packages depending on PHP8.0:
phpMyAdmin
/volume3/DEV/dependencies_syno_packages.sh: line 9: [: NoteStation: binary operator expected

Auch "leere" Arrays enthalten ein Element, welches leer ist. Das führte mich dann zu meiner Anpasssung.
(Zeile 9 ist die Prüfung, ob das Array leer ist).
 
Hmmm, du hast wohl ein paar mehr Pakete als ich installiert...

Kannst du mal in meinem Skript, nur so aus Neugier die Zeile
Code:
    if [ "${DEPENDS[@]}" ]
auf
Code:
    if [ -n "${DEPENDS[@]}" ]
ändern?
 
Das gleiche Ergebnis (ähnlich Test mit […]) ➜ line 9: [: too many arguments
[ -n "${DEPENDS[@]}" ] expandiert zu [ -n "elem1" "elem2" ... ], was zu einem Syntaxfehler führt, weil […] (oder test) nur mit einem Argument für -n umgehen kann.

Übrigens ist sind nicht die leeren Arrays das ursprüngliche Problem, sondern mehrere Ergebnisse (also ein Array mit mehreren Elementen). Das hatte ich etwas missverständlich ausgedrückt.
 
  • Like
Reaktionen: Adama
Ah, ok, dann bin ich im Bilde.

War ja auch schnell aus der Hüfte geschossen und hatte bei mir keine Probleme gemacht...
 
  • Like
Reaktionen: geimist
Also seit DSM 7.* siehst du direkt im Package Center zu jedem Package die verwendeten Packages unter Dependent Packages
Siehe Beispiel
 

Anhänge

  • synology-forum-dependent-packages.png
    synology-forum-dependent-packages.png
    59,2 KB · Aufrufe: 17
  • Like
Reaktionen: Benie und dil88
Die Paketabhängigkeiten hatten wir schon.
Dann kommen noch die ganzen Klienten, die man rund herum verteilt hat und nun “vergessen” hat, weil sie einfach funktionieren.
Die Arbeit das rauszufinden, muss man leider selber machen. q
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat