Install Git Alpine Linux

Aug 28, 2018 I found the best way to get golang up running in alpine linux is to install it from source. This is also way followed in the official alpine go docker images. FROM alpine:3.12 ARG GOLANGVERSION=1.14.3 #we need the go version installed from apk to bootstrap the custom version built from source RUN apk update && apk add go gcc bash musl-dev openssl-dev ca-certificates && update-ca-certificates. $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ajeetraina/alpine-git latest cb913e37a593 16 seconds ago 26.6MB ajeetraina/labs-git v1.0 cb913e37a593 16 seconds ago 26.6MB Create a container docker run -itd ajeetraina/labs-git:v1.0 /bin/sh. Install Git on Mac OS X Install Git on Windows Install Git on Linux. (tested on many freshly minted Alpine Linux containers to test it out). Yes i did the git clone command works but the git inside the terraform module does not work.

  1. Install Git Alpine Linux Command
  2. Install Git Alpine Linux Download




This page explains the basics to get started. But before actually installing, it can also help to skim through the Frequenty Asked Questions (FAQ).

Tip: This is a wiki!

If something isn't correct (anymore), or still incomplete, you will have to try figuring it out, or ask for the correct solution in the community.

And then carefully edit the wiki page.

Just as those before you did it for you.


  • 2Installation Overview
  • 3Additional Details
    • 3.2Flashing (direct data writing) the installation image-file onto a device or media
  • 4Additional Documentation

Minimal Hardware Requirements

  • At least 100 MB of RAM. [A graphical desktop system may require up to 1 GB minimum.]
  • At least 0-700 MB space on a writable storage device. [Only required in 'sys' or 'data' mode installations (explained below). It is optional in 'diskless' mode, only needed to save newer data and configurations states of a running system.]

For more information please check Requirements

Installation Overview

The general course of action

[Note: For single-board-computer (SBC) architectures which can not boot .iso images, see Alpine on ARM for peculiarities.]


As usual, the regular installation procedure starts with three basic steps (additional details for all the steps follow below):


1.) Downloading and verifying the proper stable-release ISO installation image-file for the computer's architecture, and the corresponding sha256 (checksum) and GPG (signature) files.

2.) Either burning the ISO image-file onto a blank CD/DVD/Blu-ray disk with disk burning software, or flashing the installation image onto a bootable storage device (USB-device, CF-/MMC-/SD-card, floppy, ...).

3.) Booting the computer from the prepared disk or storage device.


The boot process copies the entire operating system into the RAM memory, then runs it from there, after which, the command line environment does not depend on reading from the (possibly slow) initial boot media.

Log-in is possible as the user root. Initially, the root user has no password.

An interactive script named setup-alpine is available at the command prompt to configure and install the initial Alpine Linux system.

The setup-alpine question-and-answer dialog can configure installations that boot into one of three different Alpinelinux disk modes, 'diskless', 'data', and 'sys'. These are explained in more detail in the following subsections. However, a newly installed system may always be configured into a fully usable, standalone, 'diskless' live-system by runing setup-alpine and answering 'none' when asked for the disk to use, where to store configs, and the location for the package cache.

Once a 'diskless' system is configured by running setup-alpine, it's possible to use the apk package manager to install any desired tool that may be missing in the live system to configure available hardware.

Specific hardware configuration may be desired, for example, for available disk drives. e.g. If you need to install a custom partition or filesystem scheme, and if the installation should not use and/or overwrite the entire disk (details below).

After the desired adjustments have been made using the 'diskless' system, setup-lbu and setup-apkcache may be run to add persistent configuration and package cache storage to the running 'diskless' system. After that, the system state may be saved with lbu commit. Or, setup-disk may be run to add a 'data' mode partition, or do a classic full install of the 'diskless' system onto a 'sys' disk or partition.

More setup-scripts are available to configure other specifics. They may be run separately to set up a system, or to adjust only specific parts later. For example, to set up a graphical environment (covered in Post-Install below).

Diskless Mode

This is the default boot mode of the .iso images. setup-alpine configures this if 'disk=none' is selected during installation. It means the entire operating system and all applications are loaded into, then run from, RAM. This is extremely fast and can save on unnecessary disk spin-ups, power, and wear. It is similar to what is called a 'frugal' install running with the 'toram' option as with some other distros, but without the need toremaster the install media.

Custom configurations and package selections may be preserved across reboots with the Alpine local backup tool lbu. It enables committing and reverting system states using .apkovl files that are saved to writable storage and loaded when booting. If additional or updated packages have been added to the system, these may also be made available for automatic (re)installation during the boot phase, by enabling a local package cache on the writable storage.

[FIXME-1: Storing local configs and the package cache on an internal disk still requires some manual steps to have the partition listed, i.e. making a /etc/fstab entry, mountpoint, and mount, *before* running setup-alpine. And requires manually committing the configuration to disk afterwards.]

To allow for local backups, setup-alpine can be told to store the configs and the package cache on a writable partition. (Later, directories on that same partition or another available partition may also be mounted as /home, or for important applications, e.g. to keep their run-time and user data on it.)

The boot device of the newly configured local 'diskless' system may remain the initial (and possibly read-only) installation media. But it is also possible to copy the boot system to a partition (e.g. /dev/sdXY) with setup-bootable.

Data Disk Mode

This mode also runs from system RAM, thus it enjoys the same accelerated operation speed as 'diskless' mode. However, swap storage and the entire /var directory tree get mounted from a persistent storage device (two newly created partitions). The directory /var holds e.g. all log files, mailspools, databases, etc., as well as lbu backup commits and the package cache. This mode is useful for having RAM accelerated servers with variable amounts of user-data that exceed the available RAM size. It enables the entire current system state (not just the boot state) to survive a system crash in accordance with the particular filesystem guarantees.

Install Git Alpine Linux Command

[FIXME-2: Setup-alpine can not yet configure storage of the lbu configs to the 'data disk' after selecting one. It's still necessary to first select to save configs to 'none' in setup-alpine (the new data partition is not listed), and to manually edit /etc/lbu/lbu.conf to set e.g. LBU_MEDIA=sdXY, then execute a corresponding echo '/dev/sdXY /media/sdXY vfat rw 0 0' >> /etc/fstab afterwards, and save the config with lbu commit to have the partition (here, denoted as sdXY) mounted when booting.]

In data disk mode, the boot device may also remain the initial (and possibly read-only) installation media, or be copied to a partition (e.g. /dev/sdXY) with setup-bootable.

System Disk Mode

This is a traditional hard-disk install.

If this mode is selected, the setup-alpine script creates three partitions on the selected storage device, /boot, swap and / (the filesystem root). This mode may, for example, be used for generic desktop and development machines.

For custom partitioning, see Setting_up_disks_manually.

To install along side another operating systems, see Installing_Alpine_on_HDD_dualbooting.

Additional Details

This material needs expanding ...

This 'Additional Details' section needs to be consolidated with the work at https://docs.alpinelinux.org (not finished) (Restructuring things there, moving and linking from here or there?).


Verifying the downloaded image-file

Commands to verify the checksum and GPG signature of a downloaded image-file on different systems.
OS typeSHA256 checkSHA256 calculation (to be compared manually)GPG signature verification
Linuxsha256sum -c alpine-*.iso.sha256curl https://alpinelinux.org/keys/ncopa.asc gpg --import ;

gpg --verify alpine-<version>.iso.asc alpine-<version>.iso

MACOS- ? -shasum -a 256 alpine-*.iso- ? -
BSD- ? -/usr/local/bin/shasum -a 256 alpine-*.iso- ? -
Windows (PowerShell installed)- ? -Get-FileHash .alpine-<image-version>.iso -Algorithm SHA256- ? -

Flashing (direct data writing) the installation image-file onto a device or media

Unix/Linux

Under Unix (and thus Linux), 'everything is a file' and the data in the image-file can be written to a device or media with the dd command. Afterward, executing the eject command removes the target device from the system and ensures the write cache is completely flushed.

Be careful to correctly identify the target device as any data on it will be lost! All connected 'bulk storage devices' can be listed with lsblk and blkid.

For example, if /dev/sdX is the desired target device, first make sure you un-mount all mounted partitions of the target device. For example sdX1 and sdX2:


For dd's output-file (of=), however, do not specify a partition number. For example, write to sdX, not sdX1:

Warning: This will overwrite the target device /dev/sdX, so before executing, make sure you have a backup of the data if you can't afford to lose it.

Windows

For example, there is the Rufus program. Rufus will enable you to create bootable USB flash drives under Windows.

Rufus has been tested and works for Alpine Linux 3.12.x with the following settings:

  • Partition scheme: MBR
  • Target system: BIOS or UEFI
  • File system: FAT32
  • Cluster size: 4096 bytes (default)

Verifying the written installation media

After detaching and re-attaching the device, a bit-wise comparison can verify the data written to the device (instead of just data buffered in RAM). If the comparison terminates with an end-of-file error on the .iso file side, all the contents from the image have been written (and re-read) successfully:

Install Git Alpine Linux Download

Booting from external devices

Insert the boot media to a proper drive or port of the computer and turn the machine on, or restart it, if already running.

If the computer does not automatically boot from the desired device, one needs to bring up the boot menu and choose the media to boot from. Depending on the computer, the menu may be accessed by repeatedly pressing a key quickly when booting starts. Some computers require that you press the button before starting the computer and hold it down while the computer boots. Typical keys are: `F9`-`F12`, sometimes `F7` or `F8`. If these don't bring up the boot menu, it may be necessary to enter the BIOS configuration and adjust the boot settings, for which typical keys are: `Del.` `F1` `F2` `F6` or `Esc.`

Custom partitioning of the harddisk

It is possible to specify configurations for RAID, encryption, LVM, etc. as well as manual partitioning.

For 'diskless' or 'data disk' mode installs, manual partitioning may be needed to prepare the harddisk for committing local backups of the system state with lbu commit, a package cache, or to use it as the /var mount.

For a 'sys' install, custom partitioning is needed only if the desired scheme differs from overwriting an entire disk, or creating the default /boot, swap and root partitions.

See Setting_up_disks_manually for the alpine options for RAID, encryption, LVM, etc. and manual partitioning.

Questions asked by setup-alpine

Example setup-alpine session

The setup-alpine script offers the following configuration options:

  • Keyboard Layout (Local keyboard language and usage mode, e.g. us and variant of us-nodeadkeys.)
  • Hostname (The name for the computer.)
  • Network (For example, automatic IP address discovery with the 'DHCP' protocol.)
  • DNS Servers (Domain Name Servers to query. For privacy reasons it is NOT recommended to route every local request to servers like google's 8.8.8.8 .)
  • Timezone
  • Proxy (Proxy server to use for accessing the web. Use 'none' for direct connections to the internet.)
  • Mirror (From where to download packages. Choose the organization you trust giving your usage patterns to.)
  • SSH (Secure SHell remote access server. 'Openssh' is part of the default install image. Use 'none' to disable remote login, e.g. on laptops.)
  • NTP (Network Time Protocol client used for keeping the system clock in sync with a time server. Package 'chrony' is part of the default install image.)
  • Disk Mode (Select between diskless (disk='none'), 'data' or 'sys', as described above.)
Warning: The data on a chosen device will be overwritten!


Preparing for the first boot

If setup-alpine has finished configuring the 'sys' disk mode, the system should be ready to reboot right away (see next subsection).

If the new local system was configured to run in 'diskless' or 'data' mode, and you do not want keep booting from the initial (and possibly read-only) installation media, the boot system needs to be copied to another device or partition.

The target partition may be identified using lsblk (after installing it with apk add lsblk) and/or blkid, similar to previously identifying the initial installation media device.

The procedure to copy the boot system is explained at setup-bootable

Once everything is in place, save your customized configuration with lbu commit before rebooting.

Rebooting and testing the new system

First, remove the initial installation media from the boot drive, or detach it fron the port it's connected to.

The system may now be power-cycled or rebooted to confirm everything is working correctly.

The relevant commands for this are poweroff or reboot.

Completing the installation

The installation script installs only the base operating system. No applications e.g. web server, mail server, desktop environment, or web browser are installed, and root is the only user.

Please look under 'Post-Install' below, for some common things to do after installation.

Installing

  • Kernels(kernel selection, e.g. for VMs or RPi)
  • Directly booting an ISO file(without flashing it to a disk or device)
  • Setting up Networking(including non-standard configurations)


  • How to make a custom ISO image with mkimage(installation media with its own configuration)


Post-Install

Language support

  • Fix unicode defaults: sed -i s/#unicode='NO'nn#/#unicode='NO'nnunicode='YES'nn#/ /etc/rc.conf
  • apk add musl-locales Installs a limited set of locales (languages) for musl (C library) generated console messages.
  • Listing defined locales is possible with locales -a
  • cp /etc/profile.d/locale.sh /etc/profile.d/locale.sh.sh Copies the default locale settings. Then the custom override file can be edited nano /etc/profile.d/locale.sh.sh.
  • apk add lang Pulls in the translation packages of all installed packages.
  • apk list hunspell* To list available hunspell dictionary packages.
  • apk list *-xy *-xy-* To list translation packages for your specific (xy) language (for example, pt for Portuguese).

Documentation

  • apk add man-pages Installs basic manual pages.
  • apk add mandoc Installs the man command to be able to open man pages.
  • apk add mandoc-apropos Installs the apropos command to search in man pages.
  • apk add docs Installs all the *-doc sub-packages of installed packages.


  • Setting up a new user(to allow remote, console, or graphical logins)


  • Enable Community Repository(access to additional packages)
  • Package Management (apk)(how to search/add/del packages etc.)
  • setup-xorg-base(setup graphical base environment)
    • Xfce_Setup / Gnome_Setup / KDE / MATE (desktop environments)
  • How to get regular stuff working(things one may miss in a too lightweight installation )


  • Local backup utility lbu(persisting RAM system configurations)
    • Back Up a Flash Memory Installation('diskless mode' systems)
    • Manually_editing_a_existing_apkovl(the stored custom configs)


  • Init System (OpenRC)(configure a service to automatically boot at next reboot)


  • Hosting services on Alpine(links to several mail/web/ssh server setup pages)
  • Running applications and services in their own Firejail Security Sandbox


  • Upgrading Alpine(checking for and installing updates)

Additional Help and Information

  • Comparison with other distros(how common things are done on Alpine)
  • Running glibc programs(installation and development)


  • Wiki etiquetteto collaborate on this documentation


Tip: Alpine linux packages stay close to the upstream design. Therefore, all upstream documentation about configuring a software package, as well as good configuration guides from other distributions that stay close to upstream, e.g. those in the Arch Wiki, are to a large degree, also applicable to configuring the software on alpine linux, thus can be very useful.

There may still be something useful to find and sort out of some 'newbie' install notes in this wiki, but beware that these pages can lack explanations and contain highly opinionated content, redundantly on many convoluted pages.

Retrieved from 'http://wiki.alpinelinux.org/w/index.php?title=Installation&oldid=20079'

Rclone is a Go program and comes as a single binary file.

Quickstart

  • Download the relevant binary.
  • Extract the rclone or rclone.exe binary from the archive
  • Run rclone config to setup. See rclone config docs for more details.
  • Optionally configure automatic execution.

See below for some expanded Linux / macOS instructions.

See the Usage section of the docs for how to use rclone, orrun rclone -h.

Already installed rclone can be easily updated to the latest versionusing the rclone selfupdate command.

Script installation

To install rclone on Linux/macOS/BSD systems, run:

For beta installation, run:

Install

Note that this script checks the version of rclone installed first andwon't re-download if not needed.

Linux installation from precompiled binary

Fetch and unpack

Copy binary file

Install manpage

Run rclone config to setup. See rclone config docs for more details.

macOS installation with brew

macOS installation from precompiled binary, using curl

To avoid problems with macOS gatekeeper enforcing the binary to be signed andnotarized it is enough to download with curl.

Download the latest version of rclone.

Unzip the download and cd to the extracted folder.

Move rclone to your $PATH. You will be prompted for your password.

(the mkdir command is safe to run, even if the directory already exists).

Remove the leftover files.

Run rclone config to setup. See rclone config docs for more details.

macOS installation from precompiled binary, using a web browser

When downloading a binary with a web browser, the browser will set the macOSgatekeeper quarantine attribute. Starting from Catalina, when attempting to runrclone, a pop-up will appear saying:

The simplest fix is to run

Install with docker

The rclone maintains a docker image for rclone.These images are autobuilt by docker hub from the rclone source basedon a minimal Alpine linux image.

The :latest tag will always point to the latest stable release. Youcan use the :beta tag to get the latest build from master. You canalso use version tags, e.g. :1.49.1, :1.49 or :1.

Install Git Alpine Linux

There are a few command line options to consider when starting an rclone Docker containerfrom the rclone image.

  • You need to mount the host rclone config dir at /config/rclone into the Dockercontainer. Due to the fact that rclone updates tokens inside its config file, and thatthe update process involves a file rename, you need to mount the whole host rcloneconfig dir, not just the single host rclone config file.

  • You need to mount a host data dir at /data into the Docker container.

  • By default, the rclone binary inside a Docker container runs with UID=0 (root).As a result, all files created in a run will have UID=0. If your config and data filesreside on the host with a non-root UID:GID, you need to pass these on the containerstart command line.

  • If you want to access the RC interface (either via the API or the Web UI), it isrequired to set the --rc-addr to :5572 in order to connect to it from outsidethe container. An explanation about why this is necessary is present here.

    • NOTE: Users running this container with the docker network set to host shouldprobably set it to listen to localhost only, with 127.0.0.1:5572 as the value for--rc-addr
  • It is possible to use rclone mount inside a userspace Docker container, and exposethe resulting fuse mount to the host. The exact docker run options to do that mightvary slightly between hosts. See, e.g. the discussion in thisthread.

    You also need to mount the host /etc/passwd and /etc/group for fuse to work insidethe container.

Here are some commands tested on an Ubuntu 18.04.3 host:

Install from source

Make sure you have at least Go go1.13installed. Download go if necessary. Thelatest release is recommended. Then

This will leave you a checked out version of rclone you can modify andsend pull requests with. If you use make instead of go build thenthe rclone build will have the correct version information in it.

You can also build the latest stable rclone with:

or the latest version (equivalent to the beta) with

These will build the binary in $(go env GOPATH)/bin(~/go/bin/rclone by default) after downloading the source to the gomodule cache. Note - do not use the -u flag here. This causes goto try to update the dependencies that rclone uses and sometimes thesedon't work with the current version of rclone.

Installation with Ansible

This can be done with Stefan Weichinger's ansiblerole.

Instructions

  1. git clone https://github.com/stefangweichinger/ansible-rclone.git into your local roles-directory
  2. add the role to the hosts you want rclone installed to:

After installing and configuring rclone, as described above, you are ready to use rcloneas an interactive command line utility. If your goal is to perform periodic operations,such as a regular sync, you will probably wantto configure your rclone command in your operating system's scheduler. If you need toexpose service-like features, such as remote control,GUI, serveor mount, you will often want an rclonecommand always running in the background, and configuring it to run in a service infrastructuremay be a better option. Below are some alternatives on how to achieve this ondifferent operating systems.

NOTE: Before setting up autorun it is highly recommended that you have tested your commandmanually from a Command Prompt first.

Autostart on Windows

The most relevant alternatives for autostart on Windows are:

  • Run at user log on using the Startup folder
  • Run at user log on, at system startup or at schedule using Task Scheduler
  • Run at system startup using Windows service

Running in background

Rclone is a console application, so if not starting from an existing Command Prompt,e.g. when starting rclone.exe from a shortcut, it will open a Command Prompt window.When configuring rclone to run from task scheduler and windows service you are ableto set it to run hidden in background. From rclone version 1.54 you can also make itrun hidden from anywhere by adding option --no-console (it may still flash brieflywhen the program starts). Since rclone normally writes information and any errormessages to the console, you must redirect this to a file to be able to see it.Rclone has a built-in option --log-file for that.

Example command to run a sync in background:

User account

As mentioned in the mount documentation,mounted drives created as Administrator are not visible to other accounts, not even theaccount that was elevated as Administrator. By running the mount command as thebuilt-in SYSTEM user account, it will create drives accessible for everyone onthe system. Both scheduled task and Windows service can be used to achieve this.

NOTE: Remember that when rclone runs as the SYSTEM user, the user profilethat it sees will not be yours. This means that if you normally run rclone withconfiguration file in the default location, to be able to use the same configurationwhen running as the system user you must explicitely tell rclone where to findit with the --config option,or else it will look in the system users profile path (C:WindowsSystem32configsystemprofile).To test your command manually from a Command Prompt, you can run it withthe PsExecutility from Microsoft's Sysinternals suite, which takes option -s toexecute commands as the SYSTEM user.

Start from Startup folder

To quickly execute an rclone command you can simply create a standardWindows Explorer shortcut for the complete rclone command you want to run. If youstore this shortcut in the special 'Startup' start-menu folder, Windows willautomatically run it at login. To open this folder in Windows Explorer,enter path %APPDATA%MicrosoftWindowsStart MenuProgramsStartup,or C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp if you wantthe command to start for every user that logs in.

This is the easiest approach to autostarting of rclone, but it offers nofunctionality to set it to run as different user, or to set conditions oractions on certain events. Setting up a scheduled task as described belowwill often give you better results.

Start from Task Scheduler

Task Scheduler is an administrative tool built into Windows, and it can be used toconfigure rclone to be started automatically in a highly configurable way, e.g.periodically on a schedule, on user log on, or at system startup. It can runbe configured to run as the current user, or for a mount command that needs tobe available to all users it can run as the SYSTEM user.For technical information, seehttps://docs.microsoft.com/windows/win32/taskschd/task-scheduler-start-page.

Run as service

For running rclone at system startup, you can create a Windows service that executesyour rclone command, as an alternative to scheduled task configured to run at startup.

Mount command built-in service integration

For mount commands, Rclone has a built-in Windows service integration via the third partyWinFsp library it uses. Registering as a regular Windows service easy, as you just have toexecute the built-in PowerShell command New-Service (requires administrative privileges).

Example of a PowerShell command that creates a Windows service for mountingsome remote:/files as drive letter X:, for all users (service will be running as thelocal system account):

The WinFsp service infrastructuresupports incorporating services for file system implementations, such as rclone,into its own launcher service, as kind of 'child services'. This has the additionaladvantage that it also implements a network provider that integrates intoWindows standard methods for managing network drives. This is currently notofficially supported by Rclone, but with WinFsp version 2019.3 B2 / v1.5B2 or laterit should be possible through path rewriting as described here.

Third party service integration

To Windows service running any rclone command, the excellent third party utilityNSSM, the 'Non-Sucking Service Manager', can be used.It includes some advanced features such as adjusting process periority, definingprocess environment variables, redirect to file anything written to stdout, andcustomized response to different exit codes, with a GUI to configure everything from(although it can also be used from command line ).

There are also several other alternatives. To mention one more,WinSW, 'Windows Service Wrapper', is worth checking out.It requires .NET Framework, but it is preinstalled on newer versions of Windows, and italso provides alternative standalone distributions which includes necessary runtime (.NET 5).WinSW is a command-line only utility, where you have to manually create an XML file withservice configuration. This may be a drawback for some, but it can also be an advantageas it is easy to back up and re-use the configurationsettings, without having go through manual steps in a GUI. One thing to note is thatby default it does not restart the service on error, one have to explicit enable thisin the configuration file (via the 'onfailure' parameter).

Autostart on Linux

Start as a service

To always run rclone in background, relevant for mount commands etc,you can use systemd to set up rclone as a system or user service. Running as asystem service ensures that it is run at startup even if the user it is running ashas no active session. Running rclone as a user service ensures that it onlystarts after the configured user has logged into the system.

Install git alpine linux command

Run periodically from cron

To run a periodic command, such as a copy/sync, you can set up a cron job.