Страничка на GitHub: github.com/Macchina-CLI/macchina
Проверим, есть ли у нас Rust и Cargo:
rustc --version
cargo --version
Пробуем собрать программу в текущей папке:
cargo build --release
Без аргумента --release Cargo по умолчанию собирает debug-сборку.
Если не произошло никаких ошибок, то бинарник должен лежать в ./target/release/macchina.
Если всё оk – можно запустить программу:
./target/release/macchina
Или можно установить в систему:
cargo install --path .
Здесь аргумент --path . указывает на каталог, в котором лежит Cargo.toml.
cargo install --path . создаёт временный каталог, копирует туда исходники проекта, собирает проект заново (всегда в --release, со своим профилем), кладёт бинарник в ~/.cargo/bin/ и удаляет временные файлы. Папка target моего проекта вообще не используется.
Cargo установил бинарник в ~/.cargo/bin/macchina. Если директории $HOME/.cargo/bin ещё нет в нашем PATH, то нужно её добавить:
export PATH="$HOME/.cargo/bin:$PATH"
Теперь система видит macchina и можно запускать его так:
macchina
По умолчанию при установке в систему темы и ascii-логотипы не копируются из папки с исходниками в ~/.config/macchina/. А также не создаётся конфиг ~/.config/macchina/macchina.toml. Поэтому сделаем всё это вручную. А также установим man-странички:
cp -r ~/Downloads/macchina/contrib/themes ~/.config/macchina/
cp -r ~/Downloads/macchina/contrib/ascii ~/.config/macchina/
touch ~/.config/macchina/macchina.toml
mkdir -p ~/.local/share/man/man1 ~/.local/share/man/man7
cp ~/Downloads/macchina/doc/macchina.1 ~/.local/share/man/man1/
cp ~/Downloads/macchina/doc/macchina.7 ~/.local/share/man/man7/
Теперь нам нужно в конфиге указать тему, которую мы хотим использовать:
# ~/.config/macchina/macchina.toml
theme = "Helium"
А в теме отключаем скрытие ascii-лого и указываем путь к нему:
# ~/.config/macchina/themes/Helium.toml
...
hide_ascii = false
...
[custom_ascii]
path = "~/.config/macchina/ascii/archlinux.ascii"
...
Проверяем, видит ли man наши странички:
man 1 macchina
# Нет справочной страницы для macchina в разделе 1
У меня не видит.
Проверим, какие пути видит наша система:
manpath
# /usr/local/man:/usr/local/share/man:/usr/share/man:/usr/lib/jvm/default/man
echo $MANPATH
# тут пусто – ничего не выводится
manpath сначала проверяет файл /etc/man_db.conf на наличие путей, а затем проверяет переменную среды $MANPATH. И если эта переменная содержит пути, то manpath тоже добавляет их к списку путей, которые нужно проверить на наличие man-страничек.
export MANPATH="$HOME/.local/share/man:$MANPATH"
manpath
# manpath: предупреждение: найдена переменная среды $MANPATH, добавляется в конец /etc/man_db.conf
# /home/mark/.local/share/man:/usr/local/man:/usr/local/share/man:/usr/share/man:/usr/lib/jvm/default/man
Теперь система видит папку ~/.local/share/man и man-странички оттуда доступны для man-db:
man 1 macchina # выводит первый раздел
man 7 macchina # выводит седьмой раздел
rm ~/.cargo/macchina # Удаляем бинарник
rm -r ~/.config/macchina # Удаляем конфиг, темы и лого
# Удаляем документацию:
rm ~/.local/share/man/man1/macchina.1
rm ~/.local/share/man/man7/macchina.7
# Собираем проект
cargo build --release
# Устанавливаем (пересобрав):
cargo install --path .
# Копируем темы и asci-лого:
cp -r ~/Downloads/macchina/contrib/themes ~/.config/macchina/
cp -r ~/Downloads/macchina/contrib/ascii ~/.config/macchina/
# Создаём конфиг
touch ~/.config/macchina/macchina.toml
# Создаём папки для документации, если их ещё нет:
mkdir -p ~/.local/share/man/man1 ~/.local/share/man/man7
# И копируем туда man-странички:
cp ~/Downloads/macchina/doc/macchina.1 ~/.local/share/man/man1/
cp ~/Downloads/macchina/doc/macchina.7 ~/.local/share/man/man7/
# Удаляем всё, что поставили:
rm ~/.cargo/macchina
rm -r ~/.config/macchina
rm ~/.local/share/man/man1/macchina.1
rm ~/.local/share/man/man7/macchina.7