1124 lines
27 KiB
Markdown
1124 lines
27 KiB
Markdown
# Homebrew
|
||
|
||
|
||
|
||
**[:fa-link: https://docs.brew.sh](https://docs.brew.sh)**
|
||
|
||
[:fa-link: formulae.brew.sh](http://braumeister.org)
|
||
|
||
|
||
|
||
|
||
### Update Homebrew et les formules:
|
||
|
||
```bash
|
||
$ brew update
|
||
```
|
||
|
||
### Chercher les M-à-J:
|
||
|
||
```bash
|
||
$ brew outdated
|
||
|
||
# --verbose
|
||
```
|
||
|
||
### Mettre tout à jour:
|
||
|
||
```bash
|
||
$ brew upgrade
|
||
|
||
# --cleanup Met à jour et supprime les anciennes versions installées.
|
||
```
|
||
|
||
### Toutes les commandes:
|
||
|
||
```bash
|
||
$ brew commands
|
||
==> Built-in commands
|
||
--cache deps list search
|
||
--caskroom desc log shellenv
|
||
--cellar developer migrate tap-info
|
||
--env docs missing tap
|
||
--prefix doctor nodenv-sync uninstall
|
||
--repository fetch options unlink
|
||
--version formulae outdated unpin
|
||
analytics gist-logs pin untap
|
||
autoremove help postgresql-upgrade-database update-report
|
||
casks home postinstall update-reset
|
||
cleanup info pyenv-sync update
|
||
commands install rbenv-sync upgrade
|
||
completions leaves readall uses
|
||
config link reinstall vendor-install
|
||
|
||
==> Built-in developer commands
|
||
audit contributions generate-man-completions prof typecheck
|
||
bottle create install-bundler-gems release unbottled
|
||
bump-cask-pr determine-test-runners irb rubocop unpack
|
||
bump-formula-pr dispatch-build-bottle linkage ruby update-license-data
|
||
bump-revision edit livecheck sh update-maintainers
|
||
bump-unversioned-casks extract pr-automerge style update-python-resources
|
||
bump formula pr-publish tap-new update-sponsors
|
||
cat generate-cask-api pr-pull test update-test
|
||
command generate-formula-api pr-upload tests vendor-gems
|
||
|
||
==> External commands
|
||
bundle services
|
||
|
||
```
|
||
|
||
|
||
|
||
### Formules:
|
||
|
||
#### Mettre à jour une formule:
|
||
|
||
```bash
|
||
$ brew upgrade <formula>
|
||
|
||
# --cleanup Met à jour et supprime les anciennes versions installées.
|
||
```
|
||
|
||
#### Installer une formule:
|
||
|
||
```bash
|
||
$ brew install <formula>
|
||
|
||
$ brew install --verbose --debug <formula>
|
||
|
||
# --build-from-source Compile la formule depuis la source même si une bottle est disponible. Les dépendances sont installées depuis les bottles.
|
||
```
|
||
|
||
#### Installer une formule d’ailleurs la branche:
|
||
|
||
```bash
|
||
$ brew install https://raw.github.com/user/repo/branch/formula.rb
|
||
```
|
||
|
||
#### Reinstaller une formule depuis les sources:
|
||
|
||
```bash
|
||
$ brew reinstall -s <formula>
|
||
```
|
||
|
||
#### Desinstaller une formule:
|
||
|
||
```bash
|
||
$ brew uninstall <formula>
|
||
|
||
# --force toutes les versions de la formule seront effacées
|
||
# --ignore-dependencies desinstallera même si des dépendances restent installées
|
||
```
|
||
|
||
#### Desinstaller les anciennes versions d’une formule:
|
||
|
||
```bash
|
||
$ brew cleanup <formula>
|
||
|
||
# Supprime toutes les anciennes dans la Cellar et dans le Cache.
|
||
|
||
# --dry-run (ou -n) montre ce qui va être supprimer mais n'enlève rien.
|
||
# --prune=days supprime les fichiers du Cache plus vieux que <days> jours.
|
||
```
|
||
|
||
#### Desinstaller toutes les anciennes versions:
|
||
|
||
```bash
|
||
$ brew cleanup
|
||
|
||
# (-n ou --dry-run) voir tout ce qui sera désinstaller
|
||
```
|
||
|
||
#### Empecher la m-à-j d’un package:
|
||
|
||
```bash
|
||
$ brew pin <formula>
|
||
```
|
||
```bash
|
||
bruno@SilverBook:/usr/local/Cellar/terminal-notifier/1.8.0$ brew pin terminal-notifier
|
||
```
|
||
|
||
```bash
|
||
$ brew pin php
|
||
|
||
$ brew info php
|
||
php: stable 7.4.0 (bottled) [pinned at 7.3.12]
|
||
```
|
||
|
||
Liste des paquets 'pinned':
|
||
|
||
```bash
|
||
$ brew list --pinned
|
||
php
|
||
```
|
||
|
||
Essayer de mettre-à-jour un paquet 'pinned':
|
||
|
||
```bash
|
||
$ brew upgrade -n php
|
||
Error: Not upgrading 1 pinned package:
|
||
php 7.4.0
|
||
==> No packages to upgrade
|
||
```
|
||
|
||
|
||
|
||
#### Re-permettre la m-à-j:
|
||
|
||
```bash
|
||
$ brew unpin <formula>
|
||
```
|
||
|
||
#### Liste des formules installées:
|
||
|
||
```bash
|
||
$ brew list
|
||
|
||
# --versions affiche la verion en plus.
|
||
# --pinned affiche les formules pinned
|
||
```
|
||
|
||
#### Afficher des infos sur une formule installée:
|
||
|
||
```bash
|
||
$ brew info <formula>
|
||
```
|
||
```bash
|
||
$ brew info terminal-notifier
|
||
|
||
terminal-notifier: stable 1.8.0 (bottled), HEAD
|
||
|
||
Send macOS User Notifications from the command-line
|
||
|
||
https://github.com/julienXX/terminal-notifier
|
||
|
||
/usr/local/Cellar/terminal-notifier/1.7.1 (14 files, 2MB)
|
||
|
||
Poured from bottle on 2016-10-19 at 07:24:46
|
||
|
||
/usr/local/Cellar/terminal-notifier/1.8.0 (5 files, 99.8KB) *
|
||
|
||
Poured from bottle on 2017-08-12 at 20:20:48
|
||
|
||
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terminal-notifier.rb
|
||
|
||
==> Requirements
|
||
|
||
Build: xcode ✔
|
||
|
||
Required: macOS >= 10.8 ✔
|
||
```
|
||
|
||
#### Description d'une formule:
|
||
|
||
```bash
|
||
$ brew desc <formula>
|
||
```
|
||
|
||
```bash
|
||
$ brew desc httpd
|
||
httpd: Apache HTTP server
|
||
```
|
||
|
||
#### Afficher les options d'une formule:
|
||
|
||
```bash
|
||
$ brew options <formula>
|
||
```
|
||
|
||
```bash
|
||
$ brew options php72
|
||
--with-argon2
|
||
Include libargon2 password hashing support
|
||
--with-cgi
|
||
Enable building of the CGI executable (implies --without-fpm)
|
||
--with-debug
|
||
Compile with debugging symbols
|
||
|
||
# --compact sur une seule ligne
|
||
```
|
||
|
||
#### Chercher une formule (avec description):
|
||
|
||
```bash
|
||
$ brew search --desc <formula>
|
||
```
|
||
|
||
```bash
|
||
$ brew search --desc pdf
|
||
|
||
briss: Crop PDF files
|
||
|
||
diff-pdf: Visually compare two PDF files
|
||
```
|
||
|
||
#### Activer une autre version:
|
||
|
||
```bash
|
||
$ brew switch <formula>
|
||
```
|
||
```bash
|
||
bruno@SilverBook:/usr/local/Cellar/terminal-notifier/1.8.0$ brew switch terminal-notifier 1.7.1
|
||
|
||
Cleaning /usr/local/Cellar/terminal-notifier/1.7.1
|
||
|
||
Cleaning /usr/local/Cellar/terminal-notifier/1.8.0
|
||
|
||
1 links created for /usr/local/Cellar/terminal-notifier/1.7.1
|
||
```
|
||
|
||
#### Installer une ancienne version d'une formule:
|
||
|
||
Exemple avec [annie](https://github.com/iawia002/annie), un téléchargeur de vidéo. La version courante est la dernière (0.9.6)
|
||
|
||
```bash
|
||
~ master*
|
||
❯ annie -v
|
||
|
||
annie: version 0.9.6, A fast, simple and clean video downloader.
|
||
```
|
||
|
||
|
||
|
||
```bash
|
||
~ master*
|
||
❯ cd "$(brew --repo homebrew/core)"
|
||
```
|
||
|
||
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core master
|
||
❯ git log Formula/annie.rb
|
||
commit 377c142a619f2b2563c4c01b06f2560707fa3228
|
||
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
|
||
Date: Fri Nov 8 10:23:24 2019 +0000
|
||
|
||
annie: update 0.9.6 bottle.
|
||
|
||
commit e3201eb44c3eade6f113f616b67315ae13f5a70b
|
||
Author: iawia002 <xuxinzhao@caicloud.io>
|
||
Date: Fri Nov 8 18:15:49 2019 +0800
|
||
|
||
annie 0.9.6
|
||
|
||
Closes #46491.
|
||
|
||
Signed-off-by: Rui Chen <rchen@meetup.com>
|
||
|
||
commit ef762f724ce45afb0007f7d3b96a8f10ceeb3b58
|
||
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
|
||
Date: Fri Oct 11 21:56:45 2019 +0000
|
||
|
||
annie: update 0.9.5 bottle.
|
||
|
||
commit 249669ab6a53335d85d8973c8e82f182903434ca
|
||
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
|
||
Date: Tue Aug 13 14:30:19 2019 +0000
|
||
|
||
annie: update 0.9.5 bottle.
|
||
|
||
commit 5fa1c6903f84cc22c2cbed751de6125cab4fe214
|
||
Author: iawia002 <xuxinzhao@caicloud.io>
|
||
Date: Tue Aug 13 22:22:21 2019 +0800
|
||
|
||
annie 0.9.5
|
||
|
||
Closes #43069.
|
||
|
||
Signed-off-by: Thierry Moisan <thierry.moisan@gmail.com>
|
||
|
||
```
|
||
|
||
Création d'une nouvelle branche pour l'ancienne version:
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core master 19s
|
||
❯ git checkout -b annie-0.9.5 ef762f724ce45afb0007f7d3b96a8f10ceeb3b58
|
||
Basculement sur la nouvelle branche 'annie-0.9.5'
|
||
```
|
||
|
||
Unlink la version courante:
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core annie-0.9.5
|
||
❯ brew unlink annie
|
||
Unlinking /usr/local/Cellar/annie/0.9.6... 1 symlinks removed
|
||
```
|
||
|
||
Installation de la version 0.9.5:
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core annie-0.9.5
|
||
❯ HOMEBREW_NO_AUTO_UPDATE=1 brew install annie
|
||
==> Downloading https://homebrew.bintray.com/bottles/annie-0.9.5.catalina.bottle.tar.gz
|
||
==> Downloading from https://akamai.bintray.com/06/06ff55a2834ad01a262b66f181a8c99800157ec0f465f80e0cc3518be7ebd1da?__gda__=exp=1575195423~hmac=edc063962f1a5b12a715444b0f1eff
|
||
######################################################################## 100.0%
|
||
==> Pouring annie-0.9.5.catalina.bottle.tar.gz
|
||
🍺 /usr/local/Cellar/annie/0.9.5: 5 files, 8.6MB
|
||
```
|
||
|
||
L'ancienne version 0.9.5 est bien active:
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core annie-0.9.5
|
||
❯ annie -v
|
||
|
||
annie: version 0.9.5, A fast, simple and clean video downloader.
|
||
```
|
||
|
||
Retour sur la branche 'master'
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core annie-0.9.5
|
||
❯ git checkout master
|
||
Basculement sur la branche 'master'
|
||
Votre branche est à jour avec 'origin/master'.
|
||
```
|
||
|
||
Suppression de l'ancienne branche 0.9.5
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core master
|
||
❯ git branch -d annie-0.9.5
|
||
Branche annie-0.9.5 supprimée (précédemment ef762f72).
|
||
```
|
||
|
||
Liste des versions installés:
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core master
|
||
❯ brew list annie --versions
|
||
annie 0.9.6 0.9.5
|
||
```
|
||
|
||
Info sur la formule 'annie'
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core master
|
||
❯ brew info annie
|
||
annie: stable 0.9.6 (bottled)
|
||
Fast, simple and clean video downloader
|
||
https://github.com/iawia002/annie
|
||
/usr/local/Cellar/annie/0.9.5 (5 files, 8.6MB) *
|
||
Poured from bottle on 2019-12-01 at 11:05:06
|
||
/usr/local/Cellar/annie/0.9.6 (5 files, 8.6MB)
|
||
Poured from bottle on 2019-12-01 at 10:57:11
|
||
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/annie.rb
|
||
```
|
||
|
||
Changement de version:
|
||
|
||
```bash
|
||
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core master
|
||
❯ brew switch annie 0.9.6
|
||
Cleaning /usr/local/Cellar/annie/0.9.6
|
||
Cleaning /usr/local/Cellar/annie/0.9.5
|
||
1 links created for /usr/local/Cellar/annie/0.9.6
|
||
```
|
||
|
||
|
||
|
||
#### Configurer (arguments) une formule:
|
||
|
||
```bash
|
||
$ brew edit <formula>
|
||
```
|
||
|
||
#### Afficher la homepage de Homebrew:
|
||
|
||
```bash
|
||
$ brew home
|
||
```
|
||
|
||
#### Afficher la homepage de la formule:
|
||
|
||
```bash
|
||
$ brew home <formula>
|
||
```
|
||
|
||
#### Log:
|
||
|
||
```bash
|
||
$ brew log <formula>
|
||
```
|
||
|
||
#### « keg-only »
|
||
|
||
La formule est installée dans Cellar. Elle n’est pas linkée dans /usr/local (elle n'est pas appelable directement, faire /usr/local/my-command_keg-only)
|
||
|
||
<u>Pour la linker:</u>
|
||
|
||
```bash
|
||
$ brew link
|
||
```
|
||
|
||
#### Changer de version de PHP:
|
||
|
||
```bash
|
||
$ brew unlink php54 && brew link php53
|
||
```
|
||
|
||
####
|
||
|
||
### Dépendances:
|
||
|
||
#### Voir les dépendances:
|
||
|
||
```bash
|
||
$ brew deps <formula>
|
||
```
|
||
|
||
```bash
|
||
$ brew deps httpd
|
||
apr
|
||
apr-util
|
||
boost
|
||
c-ares
|
||
jansson
|
||
jemalloc
|
||
libev
|
||
libevent
|
||
nghttp2
|
||
openssl
|
||
pcre
|
||
|
||
# --tree Présentation comme arbre
|
||
```
|
||
|
||
#### Montrer les formules installées qui ne sont pas des dépendances d'autres formules installées:
|
||
|
||
```bash
|
||
$ brew leaves
|
||
```
|
||
|
||
#### Montrer les dépendances manquantes:
|
||
|
||
```bash
|
||
$ brew missing
|
||
$ brew missing <formula>
|
||
```
|
||
|
||
#### Dépendances inverses:
|
||
|
||
```bash
|
||
$ brew uses x264 --installed
|
||
ffmpeg
|
||
```
|
||
|
||
```bash
|
||
$ brew list -1 | while read cask; do echo -ne "\x1B[1;34m $cask \x1B[0m"; brew uses $cask --installed | awk '{printf(" %s ", $0)}'; echo ""; done
|
||
ack
|
||
aom ffmpeg
|
||
apr apr-util httpd php php@7.2
|
||
.../...
|
||
x264 ffmpeg
|
||
```
|
||
|
||
|
||
|
||
### Outils:
|
||
|
||
#### Vérifier le système:
|
||
|
||
```bash
|
||
$ brew doctor
|
||
```
|
||
|
||
#### Prune (supprimer les liens symboliques morts):
|
||
|
||
```bash
|
||
$ brew prune
|
||
|
||
# --dry-run
|
||
```
|
||
|
||
#### Où va tout ce que télécharge Homebrew (cache):
|
||
|
||
```bash
|
||
$ brew --cache
|
||
|
||
/Users/bruno/Library/Caches/Homebrew
|
||
```
|
||
|
||
```bash
|
||
$ cd /Users/bruno/Library/Caches/Homebrew
|
||
total 2616544
|
||
drwxr-xr-x 92 bruno staff 2944 17 jan 17:19 .
|
||
drwx------+ 194 bruno staff 6208 18 jan 18:57 ..
|
||
drwxr-xr-x 11 bruno staff 352 18 jan 18:54 Cask
|
||
-rw-r--r-- 1 bruno staff 400053 28 oct 08:20 apr-1.6.3.high_sierra.bottle.tar.gz
|
||
-rw-r--r-- 1 bruno staff 242481 3 nov 02:01 apr-util-1.6.1_1.high_sierra.bottle.tar.gz
|
||
-rw-r--r-- 1 bruno staff 88679443 19 déc 10:23 boost-1.66.0.high_sierra.bottle.tar.gz
|
||
-rw-r--r-- 1 bruno staff 3434 16 déc 20:15 brew-pip-0.4.1.tar.gz
|
||
-rw-r--r-- 1 bruno staff 12310915 21 nov 13:01 cmake-3.10.0.high_sierra.bottle.tar.gz
|
||
```
|
||
|
||
#### Affiche le chemin de Cellar:
|
||
|
||
```bash
|
||
$ brew --Cellar
|
||
/usr/local/Cellar
|
||
|
||
$ brew --Cellar httpd
|
||
/usr/local/Cellar/httpd
|
||
```
|
||
|
||
#### Sauvegarder sa configuration Homebrew:
|
||
|
||
Liste des packages, taps et casks installés:
|
||
|
||
```bash
|
||
$ brew tap Homebrew/bundle
|
||
$ brew bundle dump
|
||
```
|
||
|
||
Ceci crée un fichier <u>Brewfile</u> que l'on peut éditer.
|
||
|
||
```bash
|
||
tap 'homebrew/php'
|
||
brew 'homebrew/php/php71', args: ['with-imap']
|
||
brew 'shpotify'
|
||
cask 'spotify'
|
||
```
|
||
|
||
#### Restaurer sa configuration:
|
||
|
||
```bash
|
||
# Se positionner dans le répertoire contenant le fichier Brewfile
|
||
|
||
$ brew bundle
|
||
```
|
||
|
||
|
||
|
||
### Services:
|
||
|
||
#### Liste des services gérés par brew services:
|
||
|
||
```bash
|
||
bruno@SilverBook:~$ brew services list
|
||
|
||
Name Status User File
|
||
dbus none
|
||
emacs none
|
||
httpd started bruno ~/Library/LaunchAgents/homebrew.mxcl.httpd.plist
|
||
mariadb started bruno ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
|
||
php started bruno ~/Library/LaunchAgents/homebrew.mxcl.php.plist
|
||
php@7.4 none
|
||
redis started bruno ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
|
||
unbound none
|
||
```
|
||
|
||
#### Lancer au démarrage:
|
||
|
||
```bash
|
||
$ brew services start mysql
|
||
```
|
||
|
||
#### Démarrer (pas au boot):
|
||
|
||
```bash
|
||
$ brew services run mysql
|
||
```
|
||
|
||
#### Arrêter le service:
|
||
|
||
```bash
|
||
$ brew services stop mysql
|
||
```
|
||
|
||
#### Redémarrer le service:
|
||
|
||
```bash
|
||
$ brew services restart mysql
|
||
```
|
||
|
||
|
||
|
||
### Taps (third-party repositories):
|
||
|
||
[:fa-link: brew tap](https://docs.brew.sh/Taps.html) rajoute des repositories à **brew**
|
||
|
||
#### Liste les repos tapped:
|
||
|
||
```bash
|
||
$ brew tap
|
||
homebrew/bundle
|
||
homebrew/cask
|
||
homebrew/cask-drivers
|
||
homebrew/cask-fonts
|
||
homebrew/core
|
||
homebrew/services
|
||
joedrago/repo
|
||
shivammathur/extensions
|
||
shivammathur/php
|
||
sidneys/homebrew
|
||
```
|
||
|
||
<u>Les tap sont situés là:</u>
|
||
|
||
```bash
|
||
/opt/homebrew/Library/Taps $ ls
|
||
homebrew joedrago shivammathur sidneys
|
||
```
|
||
|
||
#### Ajouter un repo:
|
||
|
||
```bash
|
||
$ brew tap <tapname>
|
||
```
|
||
|
||
#### Supprimer un repo:
|
||
|
||
```bash
|
||
$ brew untap <tapname>
|
||
```
|
||
|
||
#### Configuration de Homebrew (brew config):
|
||
|
||
```bash
|
||
$ brew config
|
||
HOMEBREW_VERSION: 3.6.10
|
||
ORIGIN: https://github.com/Homebrew/brew
|
||
HEAD: eaf887656ffb8e9e35ccf08081814d4735637564
|
||
Last commit: 13 hours ago
|
||
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
|
||
Core tap HEAD: 27b9f0718bb03e5ea933b5ceb5cd0cadb2bbd4a0
|
||
Core tap last commit: 19 minutes ago
|
||
Core tap branch: master
|
||
HOMEBREW_PREFIX: /opt/homebrew
|
||
HOMEBREW_CASK_OPTS: []
|
||
HOMEBREW_EDITOR: nano
|
||
HOMEBREW_MAKE_JOBS: 8
|
||
Homebrew Ruby: 2.6.8 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
|
||
CPU: octa-core 64-bit arm_firestorm_icestorm
|
||
Clang: 14.0.0 build 1400
|
||
Git: 2.38.1 => /opt/homebrew/bin/git
|
||
Curl: 7.79.1 => /usr/bin/curl
|
||
macOS: 12.6-arm64
|
||
CLT: 14.1.0.0.1.1663981106
|
||
Xcode: 14.0.1
|
||
Rosetta 2: false
|
||
```
|
||
|
||
#### Afficher les formules qui ont le paquet cité comme dépendance (brew uses):
|
||
|
||
```bash
|
||
$ brew uses autoconf
|
||
asdf autoconf-archive automake crosstool-ng node-build php php@7.2 php@7.3 pyenv ruby-build vice
|
||
|
||
# afficher uniquement les paquets installés
|
||
|
||
$ brew uses --installed autoconf
|
||
php php@7.2 php@7.3 pyenv
|
||
|
||
$ brew info python@3.7
|
||
python@3.7: stable 3.7.9 (bottled) [keg-only]
|
||
Interpreted, interactive, object-oriented programming language
|
||
https://www.python.org/
|
||
Not installed
|
||
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.7.rb
|
||
License: Python-2.0
|
||
==> Dependencies
|
||
Build: pkg-config ✔
|
||
Required: gdbm ✔, openssl@1.1 ✔, readline ✔, sqlite ✔, xz ✔
|
||
```
|
||
|
||
#### Voir les dépendances d'un paquet:
|
||
|
||
```bash
|
||
$ brew deps thefuck
|
||
gdbm
|
||
openssl@1.1
|
||
python@3.8
|
||
readline
|
||
sqlite
|
||
xz
|
||
```
|
||
|
||
#### Voir tous les packages installés, ainsi que tous les packages installés qui en dépendent:
|
||
|
||
```bash
|
||
$ brew list -1 | while read cask; do echo -ne "\x1B[1;34m $cask \x1B[0m"; brew uses $cask --installed | awk '{printf(" %s ", $0)}'; echo ""; done
|
||
annie
|
||
antibody
|
||
aom ffmpeg
|
||
apr apr-util httpd php php@7.2 php@7.3
|
||
apr-util httpd php php@7.2 php@7.3
|
||
argon2 php php@7.2 php@7.3
|
||
argyll-cms displaycal
|
||
aspell php php@7.2 php@7.3
|
||
atk gtk+ gtk+3
|
||
autoconf php php@7.2 php@7.3 pyenv
|
||
```
|
||
|
||
|
||
|
||
### Commandes externes:
|
||
|
||
#### brew caveats:
|
||
|
||
Affiche les avertissements pour toutes les formules installées.
|
||
|
||
```bash
|
||
$ brew tap zgracem/caveats
|
||
$ brew caveats
|
||
|
||
==> libtool
|
||
In order to prevent conflicts with Apple's own libtool we have prepended a "g"
|
||
so, you have instead: glibtool and glibtoolize.
|
||
==> lua
|
||
You may also want luarocks:
|
||
brew install luarocks
|
||
==> mariadb
|
||
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
|
||
server starting up correctly.
|
||
|
||
MySQL is configured to only allow connections from localhost by default
|
||
|
||
To connect:
|
||
mysql -uroot
|
||
|
||
To have launchd start mariadb now and restart at login:
|
||
brew services start mariadb
|
||
Or, if you don't want/need a background service you can just run:
|
||
mysql.server start
|
||
==> mono
|
||
To use the assemblies from other formulae you need to set:
|
||
export MONO_GAC_PREFIX="/usr/local"
|
||
```
|
||
|
||
|
||
|
||
### Environnement:
|
||
|
||
- `HOMEBREW_AUTO_UPDATE_SECS`: If set, Homebrew will only check for autoupdates once per this seconds interval.
|
||
|
||
*Default:* `300`.
|
||
|
||
- `HOMEBREW_GITHUB_API_TOKEN`: A personal access token for the GitHub API, used by Homebrew for features such as `brew search`. You can create one at https://github.com/settings/tokens. If set, GitHub will allow you a greater number of API requests. For more information, see: https://developer.github.com/v3/#rate-limiting
|
||
|
||
*Note:* Homebrew doesn’t require permissions for any of the scopes.
|
||
|
||
- `HOMEBREW_NO_AUTO_UPDATE`: If set, Homebrew will not auto-update before running `brew install`, `brew upgrade` or `brew tap`.
|
||
|
||
- `HOMEBREW_VERBOSE`: If set, Homebrew always assumes `--verbose` when running commands.
|
||
|
||
- `HOMEBREW_NO_INSTALL_CLEANUP`: Si n'est pas mis, `brew cleanup` est lancé tous les 30 jours.
|
||
|
||
|
||
|
||
### coreutils (GNU Tools)
|
||
|
||
Installer la version GNU des outils lignes de commande (OSX utilise la version BSD):
|
||
|
||
```bash
|
||
$ brew install coreutils
|
||
```
|
||
|
||
Les outils GNU sont préfixés par la lettre **g** (**g**ls, **g**cat, **g**chmod...), permettant d'utiliser également leur pendant BSD (ls, cat, chmod...)
|
||
|
||
*Les outils GNU sont installés dans /usr/local/bin/*
|
||
|
||
*Un alias sans le préfixe **g** est crée dans /usr/local/opt/coreutils/libexec/gnubin/* ou */opt/homebrew/opt/coreutils/libexec/gnubin*
|
||
|
||
|
||
|
||
```bash
|
||
❯ ls /opt/homebrew/opt/coreutils/libexec/gnubin/
|
||
'['
|
||
b2sum, base32, base64, basename, basenc,
|
||
cat, chcon, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut
|
||
date, dd, df, dir, dircolors, dirname, du,
|
||
echo, env, expand, expr,
|
||
factor, false, fmt, fold,
|
||
groups
|
||
head, hostid,
|
||
id, install,
|
||
join
|
||
kill
|
||
link, ln, logname ,ls
|
||
md5sum, mkdir, mkfifo, mknod, mktemp, mv
|
||
nice, nl, nohup, nproc, numfmt,
|
||
od
|
||
paste, pathchk, pinky, pr, printenv, printf, ptx, pwd,
|
||
readlink, realpath, rm, rmdir, runcon,
|
||
seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, sync
|
||
tac, tail, tee, test, timeout, touch, tr, true, truncate, tsort, tty,
|
||
uname, unexpand, uniq, unlink, uptime, users,
|
||
vdir
|
||
wc, who, whoami
|
||
yes
|
||
```
|
||
|
||
On peut ajouter le dossier /usr/local/opt/coreutils/libexec/gnubin (/opt/homebrew/opt/coreutils/libexec/gnubin) dans le $PATH. Les outils GNU sont alors disponibles sans préfixe, à la place des outils BSD.
|
||
|
||
De même pour les man (`MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"`)
|
||
|
||
```bash
|
||
# AVEC PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
|
||
|
||
❯ which ls
|
||
/opt/homebrew/opt/coreutils/libexec/gnubin/ls
|
||
|
||
❯ which gls
|
||
/opt/homebrew/bin/gls
|
||
(gls -> ../Cellar/coreutils/8.31/bin/gls)
|
||
|
||
❯ which /bin/ls
|
||
/bin/ls
|
||
|
||
❯ ls --version
|
||
ls (GNU coreutils) 9.1
|
||
|
||
❯ gls --version
|
||
ls (GNU coreutils) 9.1
|
||
|
||
|
||
# SANS PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
|
||
|
||
❯ which ls
|
||
/bin/ls
|
||
|
||
❯ which gls
|
||
/opt/homebrew/bin/gls
|
||
|
||
❯ which /bin/ls
|
||
/bin/ls
|
||
|
||
❯ ls --version
|
||
ls: illegal option -- -
|
||
|
||
❯ gls --version
|
||
ls (GNU coreutils) 9.1
|
||
```
|
||
|
||
Utiliser date ou gdate:
|
||
|
||
```bash
|
||
gnudate() {
|
||
if hash gdate 2>/dev/null; then
|
||
gdate "$@"
|
||
else
|
||
date "$@"
|
||
fi
|
||
}
|
||
```
|
||
|
||
|
||
|
||
#### findutils (GNU Tools)
|
||
|
||
Comprend les versions GNU de *find, locate, xargs* (pas de updatedb dans osx )
|
||
|
||
```bash
|
||
$ brew install findutils
|
||
|
||
# SANS PATH="/opt/homebrew/opt/findutils/libexec/gnubin:$PATH"
|
||
|
||
$ which find
|
||
/usr/bin/find
|
||
|
||
$ which gfind
|
||
/opt/homebrew/bin/gfind
|
||
|
||
$ gfind --version
|
||
find (GNU findutils) 4.9.0
|
||
Packaged by Homebrew
|
||
Copyright (C) 2022 Free Software Foundation, Inc.
|
||
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
|
||
This is free software: you are free to change and redistribute it.
|
||
There is NO WARRANTY, to the extent permitted by law.
|
||
|
||
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
|
||
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)
|
||
```
|
||
|
||
Ajouter `PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"` et `PATH="/opt/homebrew/opt/coreutils/libexec/gnuman:$PATH"` au $PATH pour accéder aux commandes sans le préfixe **g**.
|
||
|
||
|
||
|
||
<u>Autres paquets GNU:</u>
|
||
|
||
- gnu-getopt (keg-only)
|
||
- gnutls
|
||
- grep (ggrep)(`PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"`)
|
||
- moreutils (https://joeyh.name/code/moreutils/)
|
||
- gnu-sed
|
||
- gawk
|
||
- gnu-tar
|
||
- ...
|
||
|
||
|
||
|
||
### Erreurs:
|
||
|
||
#### 1. `require': cannot load such file -- active_support/core_ext/object/blank (LoadError)
|
||
|
||
```bash
|
||
# Erreur sur chaque commande brew...
|
||
|
||
% brew doctor
|
||
Traceback (most recent call last):
|
||
4: from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `<main>'
|
||
3: from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `require_relative'
|
||
2: from /usr/local/Homebrew/Library/Homebrew/global.rb:13:in `<top (required)>'
|
||
1: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
|
||
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- active_support/core_ext/object/blank (LoadError)
|
||
|
||
|
||
```
|
||
|
||
<u>Solution:</u> Lancer **brew update-reset** pour réparer:
|
||
|
||
```bash
|
||
% brew update-reset
|
||
==> Fetching /usr/local/Homebrew...
|
||
remote: Enumerating objects: 38, done.
|
||
remote: Counting objects: 100% (38/38), done.
|
||
remote: Compressing objects: 100% (31/31), done.
|
||
remote: Total 38 (delta 5), reused 31 (delta 2), pack-reused 0
|
||
Unpacking objects: 100% (38/38), done.
|
||
From https://github.com/Homebrew/brew
|
||
|
||
* [new branch] dependabot/bundler/Library/Homebrew/rubocop-rspec-1.37.0 -> origin/dependabot/bundler/Library/Homebrew/rubocop-rspec-1.37.0
|
||
|
||
==> Resetting /usr/local/Homebrew...
|
||
Branch 'master' set up to track remote branch 'master' from 'origin'.
|
||
Reset branch 'master'
|
||
Your branch is up to date with 'origin/master'.
|
||
|
||
==> Fetching /usr/local/Homebrew/Library/Taps/getantibody/homebrew-tap...
|
||
|
||
==> Resetting /usr/local/Homebrew/Library/Taps/getantibody/homebrew-tap...
|
||
Branch 'master' set up to track remote branch 'master' from 'origin'.
|
||
Reset branch 'master'
|
||
Your branch is up to date with 'origin/master'.
|
||
```
|
||
|
||
|
||
|
||
#### 2. Some taps are not on the default git origin branch
|
||
|
||
`brew doctor` dit:
|
||
|
||
```bash
|
||
Warning: Some taps are not on the default git origin branch and may not receive
|
||
updates. If this is a surprise to you, check out the default branch with:
|
||
git -C $(brew --repo shivammathur/extensions) checkout master
|
||
```
|
||
|
||
Lancer `git -C $(brew --repo shivammathur/extensions) checkout master`:
|
||
|
||
```bash
|
||
git -C $(brew --repo shivammathur/extensions) checkout master
|
||
.github/scripts/edit.sh: needs merge
|
||
.github/workflows/tests-all.yml: needs merge
|
||
Formula/vips@7.0.rb: needs merge
|
||
Formula/vips@7.1.rb: needs merge
|
||
Formula/vips@7.2.rb: needs merge
|
||
Formula/vips@7.3.rb: needs merge
|
||
Formula/vips@7.4.rb: needs merge
|
||
Formula/vips@8.0.rb: needs merge
|
||
Formula/vips@8.1.rb: needs merge
|
||
error: vous devez d'abord résoudre votre index courant
|
||
```
|
||
|
||
<u>Solution:</u>
|
||
|
||
If you want to keep the changes you made to those formula there is nothing you need to do. `brew doctor` only provides information and if you don't have problems you don't need to change anything.
|
||
|
||
If you want to discard the changes, the easiest way would be:
|
||
|
||
```bash
|
||
git -C $(brew --repo shivammathur/extensions) add .
|
||
git -C $(brew --repo shivammathur/extensions) reset --hard origin/master
|
||
git -C $(brew --repo shivammathur/extensions) checkout master
|
||
```
|
||
|
||
La dernière commande dit:
|
||
|
||
```bash
|
||
HEAD's previous position was on 13d8b20 imap@8.1: update 8.1.0 bottle.
|
||
Switching to the 'master' branch
|
||
Your branch and 'origin / master' have diverged,
|
||
and have 1 and 54 different commits each respectively.
|
||
(use "git pull" to merge the remote branch into yours)
|
||
```
|
||
|
||
Pour corriger, lancer:
|
||
|
||
```bash
|
||
git -C $(brew --repo shivammathur/extensions) reset --hard origin/master
|
||
```
|
||
|
||
|
||
|
||
#### 3. fatal: It seems that there is already a rebase-merge directory
|
||
|
||
```bash
|
||
fatal: It seems that there is already a rebase-merge directory, and
|
||
I wonder if you are in the middle of another rebase. If that is the case, please try
|
||
git rebase (--continue | --abort | --skip)
|
||
If that is not the case, please
|
||
rm -fr ".git/rebase-merge"
|
||
and run me again. I am stopping in case you still have something valuable there.
|
||
```
|
||
|
||
Pour corriger, lancer:
|
||
|
||
```bash
|
||
brew update-reset
|
||
```
|
||
|
||
|
||
|
||
#### 4. error: Unable to create '/opt/homebrew/Library/Taps/homebrew/homebrew-core/.git/index.lock': File exists.
|
||
|
||
```bash
|
||
error: Unable to create '/opt/homebrew/Library/Taps/homebrew/homebrew-core/.git/index.lock': File exists.
|
||
|
||
Another git process seems to be running in this repository, e.g.
|
||
an editor opened by 'git commit'. Please make sure all processes
|
||
are terminated then try again. If it still fails, a git process
|
||
may have crashed in this repository earlier:
|
||
remove the file manually to continue.
|
||
error: could not detach HEAD
|
||
```
|
||
|
||
Pour corriger, lancer:
|
||
|
||
```bash
|
||
rm /opt/homebrew/Library/Taps/homebrew/homebrew-core/.git/index.lock
|
||
```
|
||
|
||
|
||
|
||
### Réinstaller Homebrew
|
||
|
||
```bash
|
||
cd $HOME
|
||
|
||
brew bundle dump
|
||
brew bundle cleanup
|
||
|
||
# Désinstaller Homebrew
|
||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
|
||
|
||
cd $(brew --prefix)
|
||
# Supprimer manuellement les restes
|
||
|
||
cd $HOME
|
||
|
||
# Réinstaller Homebrew
|
||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
||
brew bundle install
|
||
```
|
||
|
||
|
||
|
||
### Cask:
|
||
|
||
### [:fa-link: Homebrew-Cask](brew-cask.md) |