Icloud-for-linux-git package cannot download

I will just start with the usual…


 ╭─fenris@fenris in ~ as 🧙 took 16ms
 ╰─λ sudo garuda-inxi
System:
  Kernel: 6.10.0-zen1-2-zen arch: x86_64 bits: 64 compiler: gcc v: 14.1.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=cd6e149b-2970-476f-b742-e3dc1120bedc rw rootflags=subvol=@
    quiet rd.luks.uuid=264cadad-c8c3-46fe-b132-32f30ff8b69c
    rd.luks.uuid=0dd705d1-74f7-4ae7-8f55-96ae57f524b8
    resume=/dev/mapper/luks-0dd705d1-74f7-4ae7-8f55-96ae57f524b8 loglevel=3
    ibt=off
  Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.43 wm: xfwm4 v: 4.18.0
    with: xfce4-panel tools: xfce4-screensaver avail: xautolock dm: LightDM
    v: 1.32.0 Distro: Garuda base: Arch Linux
Machine:
  Type: Desktop Mobo: AZW model: MINI S v: 10 serial: N/A part-nu: 01
    uuid: 03000200-0400-0500-0006-000700080009 UEFI: American Megatrends LLC.
    v: ADLNV104 date: 02/06/2023
CPU:
  Info: model: Intel N100 socket: U3E1 bits: 64 type: MCP arch: Alder Lake
    level: v3 note: check built: 2021+ process: Intel 7 (10nm ESF) family: 6
    model-id: 0xBE (190) stepping: 0 microcode: 0x17
  Topology: cpus: 1x cores: 4 smt: <unsupported> cache: L1: 384 KiB
    desc: d-4x32 KiB; i-4x64 KiB L2: 2 MiB desc: 1x2 MiB L3: 6 MiB desc: 1x6 MiB
  Speed (MHz): avg: 1268 high: 1400 min/max: 700/3400 base/boost: 2871/3400
    scaling: driver: intel_pstate governor: powersave volts: 1.0 V
    ext-clock: 100 MHz cores: 1: 910 2: 1400 3: 1398 4: 1364 bogomips: 6451
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
Graphics:
  Device-1: Intel Alder Lake-N [UHD Graphics] driver: i915 v: kernel
    alternate: xe arch: Gen-12.2 process: Intel 10nm built: 2021-22+ ports:
    active: HDMI-A-1 empty: HDMI-A-2 bus-ID: 00:02.0 chip-ID: 8086:46d1
    class-ID: 0300
  Device-2: Creative Live! Cam Sync 1080p V2 driver: snd-usb-audio,uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.3:7
    chip-ID: 041e:40a0 class-ID: 0102 serial: <filter>
  Display: x11 server: X.Org v: 21.1.13 compositor: xfwm4 v: 4.18.0 driver:
    X: loaded: modesetting alternate: fbdev,intel,vesa dri: iris gpu: i915
    display-ID: :0.0 screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.00x11.22")
    s-diag: 582mm (22.93")
  Monitor-1: HDMI-A-1 mapped: HDMI-1 model: Acer G247HYL serial: <filter>
    built: 2016 res: 1920x1080 hz: 60 dpi: 93 gamma: 1.2
    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") ratio: 16:9 modes:
    max: 1920x1080 min: 720x400
  API: Vulkan v: 1.3.279 layers: 5 device: 0 type: integrated-gpu
    name: Intel Graphics (ADL-N) driver: mesa intel v: 24.1.4-arch1.2
    device-ID: 8086:46d1 surfaces: xcb,xlib device: 1 type: cpu name: llvmpipe
    (LLVM 18.1.8 256 bits) driver: mesa llvmpipe v: 24.1.4-arch1.2 (LLVM
    18.1.8) device-ID: 10005:0000 surfaces: xcb,xlib
  API: OpenGL Message: Unable to show GL data. glxinfo is missing.
Audio:
  Device-1: Intel Alder Lake-N PCH High Definition Audio driver: snd_hda_intel
    v: kernel alternate: snd_soc_avs,snd_sof_pci_intel_tgl bus-ID: 00:1f.3
    chip-ID: 8086:54c8 class-ID: 0403
  Device-2: Creative Live! Cam Sync 1080p V2 driver: snd-usb-audio,uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-4.3:7
    chip-ID: 041e:40a0 class-ID: 0102 serial: <filter>
  API: ALSA v: k6.10.0-zen1-2-zen status: kernel-api with: aoss
    type: oss-emulator tools: N/A
  Server-1: PipeWire v: 1.2.1 status: n/a (root, process) with:
    1: pipewire-pulse status: active 2: wireplumber status: active
    3: pipewire-alsa type: plugin 4: pw-jack type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel CNVi: Wi-Fi driver: iwlwifi v: kernel bus-ID: 00:14.3
    chip-ID: 8086:54f0 class-ID: 0280
  IF: wlo1 state: down mac: <filter>
  Device-2: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: 3000
    bus-ID: 01:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp1s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Device-3: ASIX AX88179 Gigabit Ethernet driver: ax88179_178a type: USB
    rev: 3.0 speed: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 bus-ID: 2-4.1:5
    chip-ID: 0b95:1790 class-ID: ff00 serial: <filter>
  IF: enp0s20f0u4u1 state: down mac: <filter>
  IF-ID-1: tun0 state: unknown speed: 10000 Mbps duplex: full mac: N/A
  IF-ID-2: vmnet1 state: unknown speed: N/A duplex: N/A mac: <filter>
  IF-ID-3: vmnet8 state: unknown speed: N/A duplex: N/A mac: <filter>
  Info: services: NetworkManager, smbd, sshd, systemd-timesyncd,
    wpa_supplicant
Bluetooth:
  Device-1: Intel AX201 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-10:6 chip-ID: 8087:0026
    class-ID: e001
  Report: btmgmt ID: hci0 rfk-id: 1 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: <filter> bt-v: 5.2 lmp-v: 11
    status: discoverable: no pairing: no
Drives:
  Local Storage: total: 4.55 TiB used: 3.34 TiB (73.3%)
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung model: SSD 990 PRO 1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: 4B2QJXD7 temp: 65.8 C
    scheme: GPT
  SMART: yes health: PASSED on: 83d 17h cycles: 23
    read-units: 66,271,013 [33.9 TB] written-units: 16,169,857 [8.27 TB]
  ID-2: /dev/sda maj-min: 8:0 vendor: Seagate model: ST2000LM015-2E8174
    family: Barracuda 2.5 5400 size: 1.82 TiB block-size: physical: 4096 B
    logical: 512 B sata: 3.1 speed: 6.0 Gb/s tech: HDD rpm: 5400
    serial: <filter> fw-rev: 0001 temp: 58 C scheme: GPT
  SMART: yes state: enabled health: PASSED on: 202d 5h cycles: 150
    read: 21.71 TiB written: 25.46 TiB Old-Age: g-sense error rate: 102
    Pre-Fail: attribute: Spin_Retry_Count value: 100 worst: 100 threshold: 97
  ID-3: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST2000LM015-2E8174
    size: 1.82 TiB block-size: physical: 4096 B logical: 512 B type: USB
    rev: 3.2 spd: 10 Gb/s lanes: 1 mode: 3.2 gen-2x1 tech: HDD rpm: 5400
    serial: <filter> fw-rev: 0202 scheme: MBR
  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
Partition:
  ID-1: / raw-size: 914.27 GiB size: 914.27 GiB (100.00%)
    used: 494.08 GiB (54.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 254:0 mapped: luks-264cadad-c8c3-46fe-b132-32f30ff8b69c
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 728 KiB (0.2%) fs: vfat block-size: 512 B dev: /dev/nvme0n1p1
    maj-min: 259:1
  ID-3: /home raw-size: 914.27 GiB size: 914.27 GiB (100.00%)
    used: 494.08 GiB (54.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 254:0 mapped: luks-264cadad-c8c3-46fe-b132-32f30ff8b69c
  ID-4: /var/log raw-size: 914.27 GiB size: 914.27 GiB (100.00%)
    used: 494.08 GiB (54.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 254:0 mapped: luks-264cadad-c8c3-46fe-b132-32f30ff8b69c
  ID-5: /var/tmp raw-size: 914.27 GiB size: 914.27 GiB (100.00%)
    used: 494.08 GiB (54.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 254:0 mapped: luks-264cadad-c8c3-46fe-b132-32f30ff8b69c
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: partition size: 16.94 GiB used: 0 KiB (0.0%)
    priority: -2 dev: /dev/dm-1 maj-min: 254:1
    mapped: luks-0dd705d1-74f7-4ae7-8f55-96ae57f524b8
  ID-2: swap-2 type: zram size: 15.4 GiB used: 12.4 GiB (80.5%)
    priority: 100 comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 4
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 78.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 16 GiB available: 15.4 GiB used: 12.67 GiB (82.3%)
    igpu: 60 MiB
  Processes: 413 Power: uptime: 1d 13h 15m states: freeze,mem,disk
    suspend: deep avail: s2idle wakeups: 0 hibernate: platform avail: shutdown,
    reboot, suspend, test_resume image: 6.14 GiB
    services: upowerd,xfce4-power-manager Init: systemd v: 256
    default: graphical tool: systemctl
  Packages: 1983 pm: pacman pkgs: 1977 libs: 508 tools: pamac,paru,yay
    pm: snap pkgs: 6 Compilers: clang: 18.1.8 gcc: 14.1.1
    Shell: garuda-inxi (sudo) default: Bash v: 5.2.26
    running-in: xfce4-terminal inxi: 3.3.35
Garuda (2.6.26-1):
  System install date:     2024-04-11
  Last full system update: 2024-07-26 ↻
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       No/Undetected
  Failed units:            vmware-workstation-server.service vmware.service 

 ╭─fenris@fenris in ~ as 🧙 took 5s
 ╰─λ 

Here is the issue, I had this “iCloud for Linux” package installed in Garuda so I can access my contact list and things for easy access. For a long time I installed it using snapd, but removed it recently for 2 reasons. First all the icons disappeared, and then by doing my part by recommending Garuda to others, I saw on the website to try and avoid snapd and flatpack when ever possible. At that point I removed it off my system, and cleaned it up.

I then disovered icloud-for-linux-git was listed in the Aur package database by doing paru icloud at this point I downloaded all the required packages needed to proceed to the build phase but then I encounter some problems. So apparently network related connectivity problems keep timing out the connection to get more of the install components. This is what is going on…

 ╭─fenris@fenris in /mnt/veracrypt36/Videos as 🧙 took 12s
 ╰─λ paru icloud
11 aur/python-micloud 0.5-2 [+0 ~0.00] [Orphaned]
    Library for connecting to Xiaomi MiCloud
10 aur/huaweicloudmeeting 8.11.1-1 [+0 ~0.00] [Orphaned]
    HuaWei Cloud Meeting
 9 aur/huaweicloud-obs-obsutil-git v5.1.15.r2.45ac956-1 [+0 ~0.00] [Orphaned]
    A command line tool for accessing and managing OBS on HUAWEI CLOUD
 8 aur/huaweicloud-obs-obsutil-bin 5.4.11-1 [+0 ~0.00]
    A command line tool for accessing and managing OBS on HUAWEI CLOUD
 7 aur/huaweicloud-obs-obsfs-git 1.83.9ee91c6-1 [+0 ~0.00] [Orphaned]
    A file system tool provided by Object Storage Service (OBS) for mounting OBS parallel 
    file systems
 6 aur/icloudpd-bin 1.23.0-1 [+1 ~0.05]
    A command-line tool to download photos from iCloud
 5 aur/huaweicloudmeeting-bin 9.12.5-4 [+1 ~0.02]
    HuaWei Cloud Meeting."云端"协同的会议解决方案,全平台接入,全球覆盖,提供高清、稳定、安全、高效的极简会议体验
 4 aur/icloud-for-linux-git r38.66d3cd9-1 [+4 ~0.03]
    iCloud for Linux
 3 blackarch/icloudbrutter 15.1f64f19-2 [19.11 KiB 50.00 KiB] (blackarch blackarch-cracker)
    Tool for AppleID Bruteforce.
 2 blackarch/findmyiphone 19.aef3ac8-1 [5.06 KiB 33.00 KiB] (blackarch blackarch-mobile blackarch-recon)
    Locates all devices associated with an iCloud account
 1 extra/alicloud-vault 1.3.4-3 [3.31 MiB 12.01 MiB]
    Vault for securely storing and accessing Alibaba Cloud credentials in development 
    environments
:: Packages to install (eg: 1 2 3, 1-3):
:: 4
:: Resolving dependencies...
:: Calculating conflicts...
:: Calculating inner conflicts...

Repo (6)                  Old Version  New Version    Make Only
extra/libngtcp2                        1.6.0-1        No
extra/node-gyp                         10.2.0-1       No
extra/nodejs                           22.5.1-1       No
extra/nodejs-nopt                      7.2.0-2        No
extra/npm                              10.8.2-1       No
extra/semver                           7.6.3-1        No

Aur (1)                   Old Version  New Version    Make Only
aur/icloud-for-linux-git               r38.66d3cd9-1  No

:: Proceed to review? [Y/n]: 

:: Downloading PKGBUILDs...
 PKGBUILDs up to date
 nothing new to review
resolving dependencies...
looking for conflicting packages...

Package (6)        New Version  Net Change  Download Size

extra/libngtcp2    1.6.0-1        0.46 MiB       0.15 MiB
extra/node-gyp     10.2.0-1       7.39 MiB       1.15 MiB
extra/nodejs       22.5.1-1      56.04 MiB      13.91 MiB
extra/nodejs-nopt  7.2.0-2        0.03 MiB       0.01 MiB
extra/npm          10.8.2-1       7.52 MiB       1.44 MiB
extra/semver       7.6.3-1        0.09 MiB       0.03 MiB

Total Download Size:   16.69 MiB
Total Installed Size:  71.52 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 semver-7.6.3-1-any          29.1 KiB  6.73 KiB/s 00:04 [------------------------------] 100%
 nodejs-nopt-7.2.0-2-any     13.0 KiB  11.1 KiB/s 00:01 [------------------------------] 100%
 libngtcp2-1.6.0-1-x86_64   149.5 KiB  12.6 KiB/s 00:12 [------------------------------] 100%
 node-gyp-10.2.0-1-any     1179.7 KiB  52.4 KiB/s 00:22 [------------------------------] 100%
 npm-10.8.2-1-any          1477.1 KiB  52.9 KiB/s 00:28 [------------------------------] 100%
 nodejs-22.5.1-1-x86_64       3.9 MiB   138 KiB/s 00:29 [------------------------------] 100%
 Total (6/6)                 16.7 MiB   116 KiB/s 02:27 [------------------------------] 100%
error: failed retrieving file 'nodejs-22.5.1-1-x86_64.pkg.tar.zst' from mirror.osbeck.com : HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)
error: failed retrieving file 'nodejs-22.5.1-1-x86_64.pkg.tar.zst' from mirror.moson.org : Connection time-out
(6/6) checking keys in keyring                          [------------------------------] 100%
(6/6) checking package integrity                        [------------------------------] 100%
(6/6) loading package files                             [------------------------------] 100%
(6/6) checking for file conflicts                       [------------------------------] 100%
(6/6) checking available disk space                     [------------------------------] 100%
:: Running pre-transaction hooks...
(1/1) Performing snapper pre snapshots for the following configurations...
==> root: 3128
:: Processing package changes...
(1/6) installing libngtcp2                              [------------------------------] 100%
(2/6) installing nodejs                                 [------------------------------] 100%
Optional dependencies for nodejs
    npm: nodejs package manager [pending]
(3/6) installing nodejs-nopt                            [------------------------------] 100%
(4/6) installing semver                                 [------------------------------] 100%
(5/6) installing node-gyp                               [------------------------------] 100%
Optional dependencies for node-gyp
    gcc: to build C++ modules [installed]
    make: to build C++ modules [installed]
    python: to build C++ modules [installed]
(6/6) installing npm                                    [------------------------------] 100%
Optional dependencies for npm
    git: for dependencies using Git URL's [installed]
:: Running post-transaction hooks...
(1/7) Arming ConditionNeedsUpdate...
(2/7) Foreign/AUR package notification
bin32-lightscribe 1.18.27.10-5
dbus-sharp 0.8.1-4
dbus-sharp-glib 0.6.0-4
eclipse-java 2:4.32-1
edrawmax-bin 13.0.0-0
gtkglext 1.2.0-17
nanovna-saver-git v0.6.4.r3.gf3f1ed0-1
nini 1.1.0-6
notify-sharp 0.4.1-3
openoffice-bin 4.1.15-1
peazip-gtk2-bin 9.8.0-1
polyclipping-debug 6.4.2-4
snapd 2.63-1
trezor-suite-appimage 24.7.2-1
trezor-udev 1-3
vmware-unlocker 4.2.5-2
(3/7) Orphaned package notification...
autoconf-archive 1:2023.02.20-2
bin32-lightscribe 1.18.27.10-5
cauchy 0.9.0-4
cjson 1.7.18-1
cmocka 1.1.7-2
dotnet-runtime 8.0.6.sdk106-1
electron28 28.3.3-2
electron29 1:29.4.5-1
electron30 30.3.1-1
fontobene-qt-qt6 1.0.0-2
fontobene-qt5 0.2.0-4
gcab 1.6-2
gdk-pixbuf-xlib 2.40.2-3
go 2:1.22.5-1
go-tools 4:0.23.0-1
intltool 0.51.0-6
java-service-wrapper 3.5.54-1
kactivities5 5.116.0-1
kcontacts5 5.116.0-1
kdelibs4support 5.116.0-1
kdiagram5 2.8.0-1
kinit 5.116.0-1
kross 5.116.0-1
ldns 1.8.3-2
lib32-libcanberra 1:0.30+r2+gc0620e4-2
libsmbios 2.4.3-7
libspnav 1.1-2
libstdc++5 3.3.6-9
libutempter 1.2.1-4
nini 1.1.0-6
notify-sharp 0.4.1-3
poppler-qt5 24.06.1-1
python-atspi 2.46.1-2
python-build 1.2.1-3
python-docutils 1:0.21.2-1
python-installer 0.7.0-8
python-pycurl 7.45.3-1
python-setuptools-scm 8.1.0-1
python-shiboken2 5.15.13-3
qscintilla-qt5 2.14.1-2
quazip-qt5 1.4-1
ripgrep 14.1.0-1
stfl 0.24-5
thunarx-python 1:0.5.2-2.4
wayland-protocols 1.36-1
webrtc-audio-processing 0.3.1-5
(4/7) Checking for .pacnew and .pacsave files...
.pac* files found:
/etc/pacman.d/blackarch-mirrorlist.pacnew
/etc/passwd.pacnew
/etc/locale.gen.pacnew
/etc/pacman.d/mirrorlist.pacnew
/etc/sudoers.pacnew
Please check and merge
(5/7) Generating Menu Items...
(6/7) Performing snapper post snapshots for the following configurations...
==> root: 3129
(7/7) Syncing all file systems...
fetching devel info...
==> Making package: icloud-for-linux-git r38.66d3cd9-1 (Fri 26 Jul 2024 06:52:27 AM)
==> Retrieving sources...
  -> Cloning icloud-for-linux git repo...
Cloning into bare repository '/home/fenris/.cache/paru/clone/icloud-for-linux-git/icloud-for-linux'...
remote: Enumerating objects: 407, done.
remote: Counting objects: 100% (94/94), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 407 (delta 79), reused 76 (delta 76), pack-reused 313
Receiving objects: 100% (407/407), 564.90 KiB | 90.00 KiB/s, done.
Resolving deltas: 100% (248/248), done.
==> Validating source files with sha256sums...
    icloud-for-linux ... Skipped
==> Making package: icloud-for-linux-git r38.66d3cd9-1 (Fri 26 Jul 2024 06:52:43 AM)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating icloud-for-linux git repo...
==> Validating source files with sha256sums...
    icloud-for-linux ... Skipped
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Creating working copy of icloud-for-linux git repo...
Cloning into 'icloud-for-linux'...
done.
==> Starting pkgver()...
==> Sources are ready.
icloud-for-linux-git-r38.66d3cd9-1: parsing pkg list...
==> Making package: icloud-for-linux-git r38.66d3cd9-1 (Fri 26 Jul 2024 06:52:47 AM)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting pkgver()...
==> Starting build()...
npm error code ETIMEDOUT
npm error errno ETIMEDOUT
npm error network request to https://registry.npmjs.org/electron failed, reason: 
npm error network This is a problem related to network connectivity.
npm error network In most cases you are behind a proxy or have bad network settings.
npm error network
npm error network If you are behind a proxy, please make sure that the
npm error network 'proxy' config is set properly.  See: 'npm help config'
npm error A complete log of this run can be found in: /home/fenris/.npm/_logs/2024-07-26T11_52_47_817Z-debug-0.log
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'icloud-for-linux-git-r38.66d3cd9-1': 
error: packages failed to build: icloud-for-linux-git-r38.66d3cd9-1

Now why I’m here is because i don’t know how to get around these networking related problems. This error keeps happening every time I attempt to install the packages. Any ideas? :thinking:

This should be the part to be investigated.
Are you behind a proxy?
Have you tried with or without VPN?
Maybe check also in that log and give a look here for other ideas:

And, as usual, reboot:

You never can say…

1 Like

No, I’m not behind a proxy

Yes, I have turned off my VPN

I’m wondering if I should just manually download it off of the Arch Linux website and manually compile it with git myself

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.