How to get regular stuff working: Difference between revisions

From Alpine Linux
m (→‎Basic commands and shell hints: If we're trying to turn Alpine into GNU, we should install the PCI IDs and USB IDs too...)
(rearrranged headings)
Line 1: Line 1:
Alpine comes with busybox by default. Busybox is set up as an endpoint for numerous symlinks that substitute various utilities. Since busybox tries to be a minimalistic package, the busybox commands may still be missing some functionality.


== Basic commands and shell hints ==
To replace the busybox symlinks, you can install the relevant packages:


Alpine comes with busybox by default. Busybox is set up as an endpoint for numerous symlinks that substitute various utilities. Though busybox is not that bad, the busybox replacement commands may still be missing some functionality.
== Basic utilities ==
Very basic utilities randing from cd, ls to lsblk grep, are all busybox symlinks, by default. To have the complete packages:
: {{Cmd|# apk add {{pkg|util-linux}} {{pkg|coreutils}} {{pkg|grep}} {{pkg|findutils}} }}


To replace the symlinks to busybox, install:
== Bash shell ==


* Shell utilities (things like grep, [[awk]], ls are all busybox symlinks)
It's also easy enough to install bash itself, or any other shell of your choice:   
: {{Cmd|apk add {{pkg|util-linux}} {{pkg|pciutils}} {{pkg|hwdata-pci}} {{pkg|usbutils}} {{pkg|hwdata-usb}} {{pkg|coreutils}} {{pkg|binutils}} {{pkg|findutils}} {{pkg|grep}} {{pkg|iproute2}}}}
 
* Bash
It's also easy enough to install bash itself:   
: {{Cmd|apk add {{pkg|bash}} {{pkg|bash-completion}}}}
: {{Cmd|apk add {{pkg|bash}} {{pkg|bash-completion}}}}
and optionally, change the login shell with '''{{ic|chsh}}'''.
and optionally, change the login shell with '''{{ic|chsh}}'''.
== Hardware Management ==
Install {{pkg|pciutils}} and {{pkg|usbutils}} for configuring pci and usb hardware respectively. You can always remove these packages once the hardware is configured.
: {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically.


== Disk Management ==
== Disk Management ==
Line 20: Line 27:
Installation     
Installation     


{{Cmd|apk add {{pkg|udisks2}}}}
{{Cmd|# apk add {{pkg|udisks2}}}}


To see the mounted disks
To see the mounted disks


{{Cmd|udisksctl status}}
{{Cmd|# udisksctl status}}
 
== Network Management ==
For network, you may want to install {{pkg|iproute2}}
 
{{Cmd|# apk add {{pkg|iproute2}}}}  


== Compiling : a few notes and a reminder  ==
== Development environment ==


Compiling in Alpine may be more challenging because it uses [https://musl.libc.org/ musl-libc] instead of glibc. Please review the [https://wiki.musl-libc.org/functional-differences-from-glibc.html 'functional differences with glibc'] if you think of porting packages or just for the sake of knowing, of course.
Compiling in Alpine may be more challenging because it uses [https://musl.libc.org/ musl-libc] instead of glibc. Alpine offers the regular compiler stuff like gcc etc..


Alpine offers the regular compiler stuff like gcc and cmake ... possible others
For general software development i.e compiling from source


==== (unvalidated) apk packages to install so one can start building software ====
{{Cmd|# apk add {{pkg|build-base}} {{pkg|abuild}}}}
{{Cmd|apk add {{pkg|build-base}} {{pkg|abuild}}}}


==== a complete install for cmake looks like ====
Tools specifically needed for alpine specicific development
{{Cmd|# apk add {{pkg|build-base}} {{pkg|abuild}}}}


{{Cmd|apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}
Alpine Software Development Kit meta package includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}
{{Cmd|# apk add {{pkg|alpine-sdk}} }}


==== ccache is also available ====
Complete cmake needs the following:
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}


{{Cmd|apk add {{pkg|ccache}}}}
{{pkg|ccache}} and a lot other tools are also available in alpine.


[https://wiki.musl-libc.org/functional-differences-from-glibc.html Functional differences between musl and glibc]
[[Category:Installation]]
[[Category:Installation]]

Revision as of 17:44, 13 September 2024

Alpine comes with busybox by default. Busybox is set up as an endpoint for numerous symlinks that substitute various utilities. Since busybox tries to be a minimalistic package, the busybox commands may still be missing some functionality.

To replace the busybox symlinks, you can install the relevant packages:

Basic utilities

Very basic utilities randing from cd, ls to lsblk grep, are all busybox symlinks, by default. To have the complete packages:

# apk add util-linux coreutils grep findutils

Bash shell

It's also easy enough to install bash itself, or any other shell of your choice:

apk add bash bash-completion

and optionally, change the login shell with chsh.

Hardware Management

Install pciutils and usbutils for configuring pci and usb hardware respectively. You can always remove these packages once the hardware is configured.

# apk add pciutils usbutils

The packages hwdata-pci and hwdata-usb are dependencies for the above utilities and they are installed automatically.

Disk Management

Managing (removable) disk is much easier with udisks

Installation

# apk add udisks2

To see the mounted disks

# udisksctl status

Network Management

For network, you may want to install iproute2

# apk add iproute2

Development environment

Compiling in Alpine may be more challenging because it uses musl-libc instead of glibc. Alpine offers the regular compiler stuff like gcc etc..

For general software development i.e compiling from source

# apk add build-base abuild

Tools specifically needed for alpine specicific development

# apk add build-base abuild

Alpine Software Development Kit meta package includes abuild, build-base, and git

# apk add alpine-sdk

Complete cmake needs the following:

# apk add cmake extra-cmake-modules

ccache and a lot other tools are also available in alpine.

Functional differences between musl and glibc