Создание новых элементов с помощью xmlstarlet

Después de reinstalar glx -desvíos, pude eliminar otros paquetes.

$ sudo apt-get install glx-diversions --reinstall
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgles2:i386 libnvidia-eglcore libnvidia-eglcore:i386 libwayland-client0:i386 libwayland-server0:i386
  linux-image-4.12.0-2-amd64 linux-image-4.13.0-1-amd64
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
5 not fully installed or removed.
Need to get 0 B/11.2 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database... 525146 files and directories currently installed.)
Preparing to unpack.../glx-diversions_0.8.3_amd64.deb...
Unpacking glx-diversions (0.8.3) over (0.8.3)...
Setting up glx-diversions (0.8.3)...
Processing triggers for glx-alternative-mesa (0.8.3)...
update-alternatives: updating alternative /usr/lib/mesa-diverted because link group glx has changed slave links
Setting up glx-alternative-nvidia (0.8.3)...
Processing triggers for glx-alternative-nvidia (0.8.3)...
Setting up nvidia-alternative (390.48-3)...
Processing triggers for nvidia-alternative (390.48-3)...
update-alternatives: using /usr/lib/nvidia/current to provide /usr/lib/nvidia/nvidia (nvidia) in auto mode
Setting up libnvidia-cfg1:amd64 (390.48-3)...
Setting up libglx-nvidia0:amd64 (390.48-3)...
Processing triggers for libc-bin (2.27-3)...
Processing triggers for update-glx (0.8.3)...
Processing triggers for glx-alternative-nvidia (0.8.3)...
update-alternatives: using /usr/lib/nvidia to provide /usr/lib/glx (glx) in auto mode
Processing triggers for libc-bin (2.27-3)...
Processing triggers for initramfs-tools (0.130)...
update-initramfs: Generating /boot/initrd.img-4.16.0-1-amd64
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver9_33.bin for module i915

$ sudo apt-get remove nvidia-alternative
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  glx-alternative-nvidia libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgles2:i386 libnvidia-eglcore libnvidia-eglcore:i386 libnvidia-glcore
  libwayland-client0:i386 libwayland-server0:i386 linux-image-4.12.0-2-amd64 linux-image-4.13.0-1-amd64
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libglx-nvidia0 libnvidia-cfg1 nvidia-alternative nvidia-persistenced nvidia-vulkan-icd
0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded.
After this operation, 2,497 kB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database... 525184 files and directories currently installed.)
Removing nvidia-vulkan-icd:amd64 (390.48-3)...
Removing libglx-nvidia0:amd64 (390.48-3)...
Removing nvidia-persistenced (390.25-1)...
Removing libnvidia-cfg1:amd64 (390.48-3)...
Removing nvidia-alternative (390.48-3)...
Processing triggers for glx-alternative-nvidia (0.8.3)...
Processing triggers for libc-bin (2.27-3)...
Processing triggers for man-db (2.8.3-2)...
Processing triggers for update-glx (0.8.3)...
Processing triggers for glx-alternative-nvidia (0.8.3)...
update-alternatives: warning: forcing reinstallation of alternative /usr/lib/nvidia because link group glx is broken
update-alternatives: warning: skip creation of /usr/lib/x86_64-linux-gnu/libnvidia-cfg.so.1 because associated file /usr/lib/x86_64-linux-gnu/nvidia/libnvidia-cfg.so.1 (of link group glx) doesn't exist
update-alternatives: warning: skip creation of /etc/modprobe.d/nvidia-blacklists-nouveau.conf because associated file /etc/nvidia/nvidia-blacklists-nouveau.conf (of link group glx) doesn't exist
update-alternatives: warning: skip creation of /etc/modules-load.d/nvidia.conf because associated file /etc/nvidia/nvidia-load.conf (of link group glx) doesn't exist
update-alternatives: warning: skip creation of /etc/modprobe.d/nvidia.conf because associated file /etc/nvidia/nvidia-modprobe.conf (of link group glx) doesn't exist
update-alternatives: using /usr/lib/mesa-diverted to provide /usr/lib/glx (glx) in auto mode
Processing triggers for libc-bin (2.27-3)...
Processing triggers for initramfs-tools (0.130)...
update-initramfs: Generating /boot/initrd.img-4.16.0-1-amd64
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver9_33.bin for module i915

$ sudo apt-get remove glx-alternative-nvidia
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgles2:i386 libnvidia-eglcore libnvidia-eglcore:i386 libnvidia-glcore libwayland-client0:i386
  libwayland-server0:i386 linux-image-4.12.0-2-amd64 linux-image-4.13.0-1-amd64
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  glx-alternative-nvidia
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 47.1 kB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database... 525128 files and directories currently installed.)
Removing glx-alternative-nvidia (0.8.3)...
3
07.06.2019, 10:32
1 ответ

В вашем xmlstarletвызове опечатка(lelvelb):

xmlstarlet ed -a /levela/lelvelb -t elem -n levelc -v "" \
    -i //levelc -t elem -n "element1" -v "value1" \
    file.xml

Для добавления подузла необходимо использовать операцию -s, а не -aили-i:

xmlstarlet ed -s /levela/levelb -t elem -n levelc -v "" \
    -s //levelc -t elem -n "element1" -v "value1" \
    file.xml

Получается

<?xml version="1.0"?>
<levela>
  <levelb>
  <levelc><element1>value1</element1><element2>value2</element2></levelc></levelb>
</levela>

При необходимости можно добавить другие -sоперации. Вы также можете удалить пустой -vвместо levelc.

Если вы хотите изменить сам file.xml, вместо получения результата преобразования на стандартном выходе xmlstarletдобавьте параметр -Lвed:

xmlstarlet ed -L -s /levela/levelb -t elem -n levelc -v "" \
    -s //levelc -t elem -n "element1" -v "value1" \
    file.xml
2
27.01.2020, 21:24

Теги

Похожие вопросы