Zum Hauptinhalt springen

Verwaltung des Ruyi-Pakets

Aktualisieren des lokalen Paket-Cache

Holen Sie sich den Inhalt der entfernten Softwarequelle und aktualisieren Sie den lokalen Paket-Cache. Standardmäßig wird das auf GitHub gehostete Spiegelbild verwendet:

$ ruyi update

Der Paket-Cache wird im Benutzerverzeichnis gespeichert, normalerweise unter ~/.cache/ruyi/packages-index/; wenn die Umgebungsvariable XDG_CACHE_HOME gesetzt ist, befindet sich das Verzeichnis unter $XDG_CACHE_HOME/ruyi/packages-index/.

ruyi update fehlgeschlagen

Da die aktuellen Paketindexinformationen im GitHub-Repository gehostet werden, kann es bei instabilen Repository-Zugriffen erforderlich sein, in der Konfigurationsdatei ein alternatives Repository zu konfigurieren.

Die Konfigurationsdatei des Ruyi-Paketmanagers wird standardmäßig unter ~/.config/ruyi/config.toml gespeichert, wenn XDG_CONFIG_HOME konfiguriert ist, befindet sie sich unter $XDG_CONFIG_HOME/ruyi/config.toml. Wenn die Datei nicht existiert, können Sie sie selbst erstellen.

[repo]
local = ""
remote = "https://mirror.iscas.ac.cn/git/ruyisdk/packages-index.git"
branch = "main"

Dabei steht local für das lokale Cache-Verzeichnis, remote für die Adresse des entfernten Spiegelservers und branch für den Git-Zweig, in dem sich das Spiegelbild befindet.

Speichern Sie die Konfiguration und versuchen Sie erneut, den lokalen Cache zu aktualisieren:

$ ruyi update

Nachrichten lesen

Als Sie im vorherigen Abschnitt ruyi update ausgeführt haben, um die lokale Softwarequelle zu aktualisieren, haben Sie wahrscheinlich gesehen, dass der Ruyi-Paketmanager ungelesene Nachrichten (news item(s)) aufgelistet hat. Hier können Sie rechtzeitig über die Aktualisierungen der Ruyi-Pakete oder andere wichtige Mitteilungen informiert werden.

Durch Ausführen von ruyi news list können Sie ebenfalls diese Seite aufrufen. Der Unterschied besteht darin, dass alle Nachrichten angezeigt werden, während ungelesene Nachrichten in unterstützten Terminals grün hervorgehoben werden.

Sie können die folgenden Befehle verwenden, um Nachrichten zu durchsuchen, zu lesen und als gelesen zu markieren:

$ ruyi news list -h
$ ruyi news list
$ ruyi news list --new # Nur ungelesene Nachrichten auflisten

$ ruyi news read -h
$ ruyi news read 1 # Nachricht mit der ID 1 lesen
$ ruyi news read # Alle ungelesenen Nachrichten lesen
$ ruyi news read --quiet # Nichts ausgeben, nur ungelesene Nachrichten als gelesen markieren

Ruyi markiert ungelesene Nachrichten, indem es die Titel in ~/.local/state/ruyi/news.read.txt speichert. Wenn XDG_STATE_HOME konfiguriert ist, befindet sich der Dateipfad unter $XDG_STATE_HOME/ruyi/news.read.txt.

Pakete auflisten

Ruyi-Pakete sind grob in mehrere Kategorien unterteilt:

  • toolchain Werkzeugkette
  • source Quellpaket
  • emulator Emulator
  • board-image Systemabbild
  • analyzer Analysetools
  • extra Sonstiges

Die Versionsnummern der Pakete folgen strikt den Semver-Richtlinien, was bedeutet, dass sie von den upstream-Versionen abweichen können.

Pakete werden in offiziell veröffentlichte Pakete und Vorabversionen (prerelease) unterteilt. Vorabversionen werden vor der offiziellen Veröffentlichung dieser Version durch upstream bereitgestellt, beheben jedoch Bugs der zuletzt veröffentlichten Version.

Einige früh veröffentlichte Ruyi-Pakete haben auch slug eingeführt, um Versionen zu kennzeichnen. Dies ist ein veraltetes Feature, das in Zukunft vollständig entfernt wird.

Verwenden Sie den Befehl ruyi list, um alle verfügbaren Pakete aufzulisten. Beachten Sie, dass selbst wenn ein Paket/eine Version nicht mit dem aktuellen Systemarchitektur kompatibel ist, es dennoch aufgelistet wird.

Hier ist ein Beispiel auf einer x86_64-Maschine; die tatsächliche Liste wird länger sein:

$ ruyi list
List of available packages:

* source/milkv-duo-examples
- 0.20240719.0+git.52ae647a (latest)
* source/ruyisdk-demo
- 0.20231114.0 (latest)
* source/coremark
- 1.0.2-pre.20230125 (prerelease, latest-prerelease)
- 1.0.1 (latest)
* toolchain/llvm-plct
- 17.0.6-ruyi.20240511 (latest)
* toolchain/llvm-upstream
- 17.0.5-ruyi.20231121 (latest) slug: llvm-upstream-20231121
* toolchain/gnu-milkv-milkv-duo-elf-bin
- 0.20240731.0+git.67688c7335e7 (latest)
* analyzer/dynamorio-riscv
- 10.93.19979-ruyi.20240914 (latest, no binary for current host)
- 10.0.19748-ruyi.20240128 (no binary for current host)
* board-image/uboot-revyos-sipeed-lc4a-8g
- 0.20240127.0 (latest)
* board-image/uboot-oerv-sipeed-lpi4a-8g
- 0.2309.1 (latest)
* board-image/canmv-linux-sdk-demo-canaan-k230d-rv64ilp32
- 0.20240731.0 (latest)
- 0.20240717.0 ()
* emulator/qemu-user-riscv-xthead
- 6.1.0-ruyi.20231207+g03813c9fe8 (latest)
* emulator/box64-upstream
- 0.3.1-pre.ruyi.20240901+git.9178effd (prerelease, latest-prerelease, no binary for current host)
- 0.3.0-ruyi.20240718 (latest, no binary for current host)
- 0.2.9-pre.ruyi.20240702+git.4b0b3fc9 (prerelease, no binary for current host)
- 0.2.8-ruyi.20240702 (no binary for current host)
* emulator/qemu-user-riscv-upstream
- 8.2.0-ruyi.20240128 (latest)
- 8.1.2-ruyi.20231121 ()
* extra/wps-office
- 12.1.0-r.17900 (latest)
- 12.1.0-r.17885 ()

Der Befehl list bietet auch die Parameter --verbose oder -v an, um detailliertere Informationen auszugeben, was fast alle Informationen aus der Softwarequelle druckt. Da die Ausgabe sehr lang sein kann, wird empfohlen, die Ausgabe in eine Datei oder in Tools wie less umzuleiten.

Zeilen wie toolchain/llvm-plct stellen den Namen eines Pakets dar, der bei der Verwendung des install-Befehls angegeben werden muss. In den meisten Fällen reicht es aus, nur den Namen nach dem / anzugeben, in diesem Beispiel also llvm-plct.

Nach dem Paketnamen folgt eine Liste von Versionsnummern. Diese Versionsnummern können verwendet werden, um eine bestimmte Version eines Pakets oder eine Version, die dem angegebenen Ausdruck entspricht, zu installieren. Der Inhalt in Klammern hinter der Versionsnummer kennzeichnet einige Informationen zu dieser Version.

latest

Kennzeichnet die neueste Version eines Pakets, die auch die Version ist, die standardmäßig mit dem install-Befehl installiert wird.

prerelease

Eine Vorabversion. Dies bedeutet, dass dieses Paket diese Version vor der Veröffentlichung durch upstream bereitgestellt hat. Neue Versionen beheben oft Bugs der alten Version, insbesondere wenn eine Vorabversion als notwendig erachtet wird.

Standardmäßig ignoriert der Ruyi-Paketmanager Vorabversionen. Sie können den Ruyi-Paketmanager so konfigurieren, dass Vorabversionen installiert werden, müssen jedoch die damit verbundenen Risiken selbst tragen.

latest-prerelease

Die neueste Vorabversion. Wenn die Installation von Vorabversionen erlaubt ist und diese Version neuer ist als die latest-Version, wird dies die Version sein, die standardmäßig mit dem install-Befehl installiert wird.

Wenn Sie tatsächlich eine Vorabversion installieren müssen, können Sie die Konfiguration in der Konfigurationsdatei hinzufügen:

[packages]
prereleases = true

no binary for current host

Dies bedeutet, dass für diese Paketversion kein Binärpaket für die lokale Architektur bereitgestellt wird.

In bestimmten Szenarien sollten Pakete, die nicht für die lokale Architektur bestimmt sind, installiert werden, z. B. wenn Sie box64 auf einer riscv64-Maschine verwenden, um WPS Office auszuführen.

In diesem Fall können Sie angeben, dass ein Binärpaket für eine bestimmte Architektur installiert werden soll:

$ ruyi install --host x86_64 wps-office

Installation von Binärpaketen

In der Regel sind die Pakete in den folgenden Kategorien Binärpakete:

  • toolchain Werkzeugkette
  • emulator Emulator
  • board-image Systemabbild
  • analyzer Analysetools
  • extra Sonstiges

Diese Pakete können mit dem install-Befehl installiert werden, z. B. um die GNU upstream gcc-Werkzeugkette zu installieren:

$ ruyi install gnu-upstream
$ ruyi install toolchain/gnu-upstream

Die oben genannte Methode zur Installation durch Angabe des Paketnamens installiert standardmäßig das als latest gekennzeichnete gnu-upstream-Paket. Wenn Sie eine bestimmte ältere Version von gnu-upstream installieren möchten, können Sie dies durch Angabe der Version tun:

$ ruyi install 'gnu-upstream(0.20231118.0)'
$ ruyi install 'gnu-upstream(>=0.20231118.0)'

Die Ausdrücke unterstützen die Operatoren <, >, ==, <=, >= und !=.

Wenn Sie mehrere Pakete installieren möchten:

$ ruyi install gnu-plct gnu-upsteam llvm-plct llvm-upstream

In einigen speziellen Fällen, wie z. B. wenn Sie versehentlich Dateien eines installierten Pakets gelöscht haben, können Sie das Paket erneut installieren, um es wiederherzustellen:

$ ruyi install --reinstall gnu-upstream

Die vom Paketmanager heruntergeladenen Pakete werden unter ~/.cache/ruyi/distfiles/ gespeichert. Wenn XDG_CACHE_HOME angegeben ist, befindet sich der Pfad unter $XDG_CACHE_HOME/ruyi/distfiles/. Diese Pakete liegen normalerweise in komprimierter Form vor und müssen mit Systemwerkzeugen entpackt werden. Wenn die entsprechenden Werkzeuge im System fehlen, wird eine entsprechende Warnung ausgegeben.

Der install-Befehl installiert standardmäßig nur Binärpakete, die mit der lokalen Architektur übereinstimmen. Die entpackten Binärpakete werden im Verzeichnis ~/.local/share/ruyi/binaries/$(uname -m)/ gespeichert. Wenn XDG_DATA_HOME angegeben ist, befindet sich der Pfad unter $XDG_DATA_HOME/ruyi/binaries/$(uname -m)/.

Da Systemabbilder ebenfalls Binärdateien sind, kann der install-Befehl auch zum Herunterladen und Entpacken verwendet werden. In der Regel werden diese Pakete jedoch zusammen mit der Flash-Funktion von Ruyi verwendet. Die entpackten Abbilddateien werden im Verzeichnis ~/.local/share/ruyi/blobs/ gespeichert. Wenn XDG_DATA_HOME angegeben ist, befindet sich der Pfad unter $XDG_DATA_HOME/ruyi/blobs/.

Installation von Quellpaketen

Die folgenden Kategorien von Paketen sind offensichtlich Quellpakete:

  • source Quellpaket

Quellpakete können mit dem extract-Befehl heruntergeladen und im aktuellen Verzeichnis entpackt werden:

$ ruyi extract ruyisdk-demo
$ ls
README.md rvv-autovec

Der extract-Befehl unterstützt die gleichen Versionsausdrücke wie der install-Befehl.

Deinstallation von Paketen

Der Ruyi-Paketmanager hat keine Funktion implementiert, um ein bestimmtes Ruyi-Paket zu deinstallieren. Sie können jedoch den folgenden Befehl verwenden, um alle heruntergeladenen und installierten Pakete zu löschen:

$ ruyi self clean --distfiles --installed-pkgs

Wenn Sie darauf bestehen, ein bestimmtes Paket zu löschen, obwohl dies nicht empfohlen wird, können Sie es manuell löschen. Wenn Sie versehentlich einige Dateien gelöscht haben, Ruyi jedoch weiterhin glaubt, dass das Paket installiert ist, können Sie versuchen, es mit install --reinstall wiederherzustellen.

Bitte beachten Sie, dass, wenn ein Werkzeugkettenpaket gelöscht wird, bereits erstellte virtuelle Umgebungen, die von diesem Paket abhängen, ungültig werden und beim Aktivieren dieser Build-Umgebung keine entsprechenden Warnungen angezeigt werden.