Mac M1 reports an error when installing Redis through homebrew (perl: unknown or unsupported macOS version: :dunno)

Directory

  • 〇.Solution
  • 1. Problem phenomenon
  • 2. Try to solve
  • 3. Start the service
  • 4. Log in to the client

〇、Solution

To upgrade homebrew, the command is as follows:

brew update-reset

1. Problem

Install Redis through the command brew install redis. The exception is as follows:

fatal: not in a git directory
Warning: No remote 'origin' in /opt/homebrew/Library/Taps/homebrew/homebrew-services, skipping update!
Warning: You are using macOS 14.
We do not provide support for this pre-release version.
It is expected behavior that some formula will fail to build in this pre-release version.
It is expected behavior that Homebrew will be buggy and slow.
Do not create any issues about this on Homebrew's GitHub repositories.
Do not create any issues even if you think this message is unrelated.
Any opened issues will be immediately closed without response.
Do not ask for help from MacHomebrew on Twitter.
You may ask for help in Homebrew's discussions but are unlikely to receive a response.
Try to figure out the problem yourself and submit a fix as a pull request.
We will review it but may or may not accept it.

==> Downloading https://www.openssl.org/source/openssl-1.1.1s.tar.gz
Already downloaded: /Users/heyday/Library/Caches/Homebrew/downloads/c475ad5547bf6708c42aaf180620e38a33a1798ae3c6a59725b6bf60f52f2249--openssl-1.1.1s.tar.gz
==> Downloading https://download.redis.io/releases/redis-7.0.5.tar.gz
Already downloaded: /Users/heyday/Library/Caches/Homebrew/downloads/1901d254697ab7e72b48bc6e85b1375acbbcfb740ee1eab1358b21ffa211c8ba--redis-7.0.5.tar.gz
==> Installing dependencies for redis: [email protected]
==> Installing redis dependency: [email protected]
Error: An exception occurred within a child process:
  FormulaUnreadableError: perl: unknown or unsupported macOS version: :dunno

2. Try to solve

Refer to the blog post After brew reports an error after MAC upgrade, run the command brew update-reset and the results are as follows:

==> Fetching /opt/homebrew...
remote: Enumerating objects: 27472, done.
remote: Counting objects: 100% (3242/3242), done.
remote: Total 27472 (delta 3242), reused 3242 (delta 3242), pack-reused 24230
Receiving objects: 100% (27472/27472), 10.60 MiB | 13.25 MiB/s, done.
Resolving deltas: 100% (18433/18433), completed with 1014 local objects.
From https://mirrors.ustc.edu.cn/brew
   aea140c04..e57a87cfe master -> origin/master
 * [new tag] 3.6.14 -> 3.6.14
 * [new tag] 3.6.15 -> 3.6.15
 * [new tag] 3.6.16 -> 3.6.16
...
* [new tag] 4.1.7 -> 4.1.7
 * [new tag] 4.1.8 -> 4.1.8
 * [new tag] 4.1.9 -> 4.1.9

==> Resetting /opt/homebrew...
branch 'master' set up to track 'origin/master'.
Reset branch 'master'
Your branch is up to date with 'origin/master'.

==> Fetching /opt/homebrew/Library/Taps/homebrew/homebrew-cask...
remote: Enumerating objects: 113910, done.
remote: Counting objects: 100% (8170/8170), done.
remote: Total 113910 (delta 8170), reused 8170 (delta 8170), pack-reused 105740
Receiving objects: 100% (113910/113910), 57.91 MiB | 22.36 MiB/s, done.
Resolving deltas: 100% (85215/85215), completed with 1709 local objects.
From https://mirrors.ustc.edu.cn/homebrew-cask
   d0ac851913..3233b1b002 master -> origin/master

==> Resetting /opt/homebrew/Library/Taps/homebrew/homebrew-cask...
branch 'master' set up to track 'origin/master'.
Reset branch 'master'
Your branch is up to date with 'origin/master'.

==> Fetching /opt/homebrew/Library/Taps/homebrew/homebrew-core...
remote: Enumerating objects: 330567, done.
remote: Counting objects: 100% (19485/19485), done.
remote: Total 330567 (delta 19485), reused 19485 (delta 19485), pack-reused 311082
Receiving objects: 100% (330567/330567), 148.87 MiB | 4.08 MiB/s, done.
Resolving deltas: 100% (244544/244544), completed with 3769 local objects.
From https://mirrors.ustc.edu.cn/homebrew-core
   cd5dc44cfa5..f348ed27b41 master -> origin/master

==> Resetting /opt/homebrew/Library/Taps/homebrew/homebrew-core...
branch 'master' set up to track 'origin/master'.
Reset branch 'master'
Your branch is up to date with 'origin/master'.

Warning: No remote 'origin' in /opt/homebrew/Library/Taps/homebrew/homebrew-services, skipping update and reset!

Check the homebrew version (brew --version), the result is:

Homebrew 4.1.15
Homebrew/homebrew-core (git revision f348ed27b41; last commit 2023-10-10)
Homebrew/homebrew-cask (git revision 3233b1b002; last commit 2023-10-09)

Final Solution
The above brew update-reset upgrade command is the solution to this problem. After the homebrew upgrade is completed, re-run the Redis installation command brew install redis. The results are as follows:

==> Downloading https://formulae.brew.sh/api/formula.jws.json
################################################ ################################################ ################################################ ######################## 100.0%
==> Downloading https://formulae.brew.sh/api/cask.jws.json
################################################ ################################################ ################################################ ######################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/redis/manifests/7.2.1-1
################################################ ################################################ ################################################ ######################## 100.0%
==> Fetching dependencies for redis: ca-certificates and openssl@3
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2023-08-22
################################################ ################################################ ################################################ ######################## 100.0%
==> Fetching ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:a331e92e7a759571296581f029e5cc2ec7cee70cd92dc0b5f8eb76095f94a21a
################################################ ################################################ ################################################ ######################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/3/manifests/3.1.3
################################################ ################################################ ################################################ ######################## 100.0%
==> Fetching openssl@3
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/3/blobs/sha256:fd6e90e00f1c395feb60d0244eb66583caab494f8e0a0988afaa838511265d98
################################################ ################################################ ################################################ ######################## 100.0%
==> Fetching redis
==> Downloading https://ghcr.io/v2/homebrew/core/redis/blobs/sha256:53943e914be8be83327314d5e23a550f4b6ee31cb4ebebe85e27aa1bce80968a
################################################ ################################################ ################################################ ######################## 100.0%
==> Installing dependencies for redis: ca-certificates and openssl@3
==> Installing redis dependency: ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2023-08-22
Already downloaded: /Users/heyday/Library/Caches/Homebrew/downloads/a8cd32e30cae0b7335779e93a6554f294f09485802fc253a3a8be441337a6115--ca-certificates-2023-08-22.bottle_manifest.json
==> Pouring ca-certificates--2023-08-22.arm64_sonoma.bottle.tar.gz
==> Downloading https://formulae.brew.sh/api/formula.jws.json
-=O=- # # # #
==> Regenerating CA certificate bundle from keychain, this may take a while...
/opt/homebrew/Cellar/ca-certificates/2023-08-22: 3 files, 221.7KB
==> Installing redis dependency: openssl@3
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/3/manifests/3.1.3
Already downloaded: /Users/heyday/Library/Caches/Homebrew/downloads/f038f540886a6a94c000296efb3058dc47e867eef00f0c6836b8ff310bc04daa--openssl@3-3.1.3.bottle_manifest.json
==> Pouring [email protected]_sonoma.bottle.tar.gz
 /opt/homebrew/Cellar/openssl@3/3.1.3: 6,495 files, 28.4MB
==> Installing redis
==> Pouring redis--7.2.1.arm64_sonoma.bottle.1.tar.gz
==> Caveats
To start redis now and restart at login:
  brew services start redis
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/redis/bin/redis-server /opt/homebrew/etc/redis.conf
==> Summary
 /opt/homebrew/Cellar/redis/7.2.1: 14 files, 2.4MB
==> Running `brew cleanup redis`...
Disable this behavior by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/heyday/Library/Caches/Homebrew/redis--7.0.5.tar.gz... (2.8MB)
Removing: /Users/heyday/Library/Caches/Homebrew/redis--7.0.5... (1003.0KB)
==> Caveats
==>redis
To start redis now and restart at login:
  brew services start redis
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/redis/bin/redis-server /opt/homebrew/etc/redis.conf

At this point, Redis has been installed successfully!

3. Start the service

Next, you need to start the Redis service and log in to the client. The test is simple and practical.
Use the redis-server command to start the Redis service. The startup results are as follows:

18066:C 10 Oct 2023 16:14:48.320 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
18066:C 10 Oct 2023 16:14:48.320 * Redis version=7.2.1, bits=64, commit=00000000, modified=0, pid=18066, just started
18066:C 10 Oct 2023 16:14:48.320 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
18066:M 10 Oct 2023 16:14:48.320 * Increased maximum number of open files to 10032 (it was originally set to 256).
18066:M 10 Oct 2023 16:14:48.320 * monotonic clock: POSIX clock_gettime
                _._
           _.-``__ ''-._
      _.-`` `. `_. ''-._ Redis 7.2.1 (00000000/0) 64 bit
  .-`` .-```. ```\/ _.,_ ''-._
 ( ' , .-` | `, ) Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
 | `-._ `._ / _.-' | PID: 18066
  `-._ `-._ `-./ _.-' _.-'
 |`-._`-._ `-.__.-' _.-'_.-'|
 | `-._`-._ _.-'_.-' | https://redis.io
  `-._ `-._`-.__.-'_.-' _.-'
 |`-._`-._ `-.__.-' _.-'_.-'|
 | `-._`-._ _.-'_.-' |
  `-._ `-._`-.__.-'_.-' _.-'
      `-._ `-.__.-' _.-'
          `-._ _.-'
              `-.__.-'

18066:M 10 Oct 2023 16:14:48.321 # WARNING: The TCP backlog setting of 511 cannot be enforced because kern.ipc.somaxconn is set to the lower value of 128.
18066:M 10 Oct 2023 16:14:48.322 * Server initialized
18066:M 10 Oct 2023 16:14:48.322 * Ready to accept connections tcp

4. Log in to the client

Log in to the client through redis-cli -p 6379 (or redis-cli). Test results:

127.0.0.1:6379> hset office id 16 name finance
(integer) 2
127.0.0.1:6379> hget office
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget office id
"16"
127.0.0.1:6379> hget office name
"finance"
127.0.0.1:6379> set a 'bbb'
OK
127.0.0.1:6379> get a
"bbb"

Check the Redis information through the info command. The result is:

127.0.0.1:6379> info
# Server
redis_version:7.2.1
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7b8617dd94058f85
redis_mode:standalone
os:Darwin 23.0.0 arm64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:select
atomicvar_api:c11-builtin
gcc_version:4.2.1
process_id:18066
process_supervised:no
run_id:ebee4f34c6d4a9765df9b2af8076613a363a4b4e
tcp_port:6379
server_time_usec:1696927718666614
uptime_in_seconds:2030
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:2428902
executable:/opt/homebrew/opt/redis-server
config_file:
io_threads_active:0
listener0:name=tcp,bind=*,bind=-::*,port=6379

#Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:16
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
total_blocking_keys:0
total_blocking_keys_on_nokey:0

#Memory
used_memory:914816
used_memory_human:893.38K
used_memory_rss:7110656
used_memory_rss_human:6.78M
used_memory_peak:1130576
used_memory_peak_human:1.08M
used_memory_peak_perc:80.92%
used_memory_overhead:771176
used_memory_startup:769024
used_memory_dataset:143640
used_memory_dataset_perc:98.52%
allocator_allocated:895120
allocator_active:7078912
allocator_resident:7078912
total_system_memory:68719476736
total_system_memory_human:64.00G
used_memory_lua:31744
used_memory_vm_eval:31744
used_memory_lua_human:31.00K
used_memory_scripts_eval:0
number_of_cached_scripts:0
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:64512
used_memory_vm_total_human:63.00K
used_memory_functions:216
used_memory_scripts:216
used_memory_scripts_human:216B
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:7.91
allocator_frag_bytes:6183792
allocator_rss_ratio:1.00
allocator_rss_bytes:0
rss_overhead_ratio:1.00
rss_overhead_bytes:31744
mem_fragmentation_ratio:7.94
mem_fragmentation_bytes:6215536
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_clients_slaves:0
mem_clients_normal:1824
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:libc
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

#Persistence
loading:0
async_loading:0
current_cow_peak:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:3
rdb_bgsave_in_progress:0
rdb_last_save_time:1696925688
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_saves:0
rdb_last_cow_size:0
rdb_last_load_keys_expired:0
rdb_last_load_keys_loaded:0
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_rewrites:0
aof_rewrites_consecutive_failures:0
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

#Stats
total_connections_received:2
total_commands_processed:11
instantaneous_ops_per_sec:0
total_net_input_bytes:527
total_net_output_bytes:409203
total_net_repl_input_bytes:0
total_net_repl_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
instantaneous_input_repl_kbps:0.00
instantaneous_output_repl_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:62
evicted_keys:0
evicted_clients:0
total_eviction_exceeded_time:0
current_eviction_exceeded_time:0
keyspace_hits:6
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
pubsubshard_channels:0
latest_fork_usec:0
total_forks:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
total_active_defrag_time:0
current_active_defrag_time:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:5
dump_payload_sanitizations:0
total_reads_processed:17
total_writes_processed:21
io_threaded_reads_processed:0
io_threaded_writes_processed:0
reply_buffer_shrinks:2
reply_buffer_expands:0
eventloop_cycles:19625
eventloop_duration_sum:2617787
eventloop_duration_cmd_sum:2100
instantaneous_eventloop_cycles_per_sec:9
instantaneous_eventloop_duration_usec:292
acl_access_denied_auth:0
acl_access_denied_cmd:0
acl_access_denied_key:0
acl_access_denied_channel:0

#Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:ab7606e5334f65e93b29c63f072666c60ab8186b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:2.177440
used_cpu_user:0.937600
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000

#Modules

#Errorstats
errorstat_ERR:count=5

#Cluster
cluster_enabled:0

#Keyspace
db0:keys=2,expires=0,avg_ttl=0

It can be seen that the version is 7.2.1, which is the latest stable version.