Alpine Linux:FAQ: Difference between revisions

From Alpine Linux
(→‎My cron jobs don't run?: Clarified that using any period in a cron script name will stop it from working, not just the sh extension.)
Line 108: Line 108:
* Make sure the script is executable - if unsure, issue the command {{cmd|chmod a+x /etc/periodic/[path/scriptname]}}
* Make sure the script is executable - if unsure, issue the command {{cmd|chmod a+x /etc/periodic/[path/scriptname]}}
* Make sure the first line of your script is <code>#!/bin/sh</code>
* Make sure the first line of your script is <code>#!/bin/sh</code>
* Do not put file extensions on your script names - this stops them from working; for example: <code>/etc/periodic/daily/myscript</code> will run, but <code>/etc/periodic/daildy/myscript.sh</code> won't.
* Do not use periods on your script file names - this stops them from working; for example: <code>/etc/periodic/daily/myscript</code> will run, but <code>/etc/periodic/daildy/myscript.sh</code> won't.


= Time and timezones =
= Time and timezones =

Revision as of 16:19, 17 January 2021

This is a list of frequently asked questions about Alpine Linux.
If your question is not answered on this page, use the search box above to find work in progress pages not linked here, or in case of no answer, edit this page and write down your question.

Tip: Prepare your question. Think it through. Make it simple and understandable.

General

Alpine Linux is used heavily in containers (e.g. docker images) on servers, so many of its main packages are focused on server services.

Where to start?

The Installation page provides a basic orientation, and links to further pages.

But some wider overview on what makes the distribution distinctive may be found on the official About page, and the Overview wikipage.

Note that trials and experimenting may safely be done by installing Alpine Linux within a virtual machine on your current matching.

I have found a bug, where can I report it?

You can report it in the bugtracker, but search it first to see if the issue has already been reported.

Are there any details about the releases available?

Yes, please check the releases page.

How can I contribute?

You can contribute by:

  • Using the software and giving feedback.
  • Documenting your Alpine Linux experiences on this wiki.
  • In many other ways.

Please visit Contribute page to read more about this topic.

Why don't I have man pages or where is the 'man' command?

The man command and man pages are not installed by default. Many packages have documentation companion packages suffixed -doc. Keep in mind, not all packages have a corresponding documentation package and when there is one it may not include man pages.

To install the man command, and related utilities, first add the man-db package:

apk add man-db

Once installed, add documentation for the package where you need it. For example, say you installed nftables and you now require its man pages:

apk add nftables-doc

Now we've installed nft(8) and other documentation to our system and you can issue the command:

man nft.

To allways install the documentation companion package, when available, add the docs meta package.

apk add docs

What is the difference between edge and stable releases?

Stable releases are just what they sound like: initially a point-in-time snapshot of the package archives, but then maintained with bug-fixes only in order to keep a stable environment.

Edge is more of a rolling-release, with the latest and greatest packages available in the online repositories.
Occasionally, snapshot ISO images of the then-current state of edge are made and are available for download.
Typically these are made when there are major kernel upgrades or package upgrades that require initramfs rebuilds.

What architectures does Alpine support?

As Alpine uses the Linux kernel, it supports:

  • aarch64: The 64-bit only ARM execution state of the ARMv8 device machines.
  • armhf: The newer ARM hard-float for newer, more powerful 32-bit devices alongside 64-bit
  • armv7: The 32-bit only ARM execution state of the ARMv7 devices machines.
  • mips64:
  • s390x: For the Super powered IBM mainframes, especially IBM Z and IBM LinuxONE servers.
  • ppc64le: For 64-bit PowerPC devices with pure little-endian mode, mostly for POWER8 and POWER9
  • x86: (i386, PC 32bit) and x86_64 (i686, PC 64bit and amd64)
  • x86_64: The popular AMD64 compatible 64-bit x86 based machines, i386 is not recommended for newer/latest hardware.

Please check Download page for media availability on each one and check Releases pages for latest.

What kind of release of Alpine Linux are available?

Please check the Releases page for more information.

Setup

What is the difference between sys, data, and diskless when running setup-alpine or setup-disk?

sys: This mode is a traditional disk install. The following partitions will be created on the disk: /boot/, / (filesystem root) and swap. This mode may be used for development boxes, desktops, virtual servers, etc.

data: This mode uses your disk(s) for data storage, not for the operating system. Runs from the media and only a /var/ is created on disk. The system itself will run from a tmpfs (RAM). Use this mode if you only want to use the disk(s) for data, like mailspool, databases, logs, etc.

diskless: No disks are to be used. Alpine local backup may still be used in this mode.

These modes are explained further on the Installation page.

How do I upgrade Alpine?

To upgrade to a new stable release or edge: apk upgrade --available

My cron jobs don't run?

Start service crond and add it to runlevel:

rc-service crond start && rc-update add crond

After that the cron daemon is started automatically on system boot and executes the scripts placed in the folders under /etc/periodic/ - there're folders for 15min, hourly, daily, weekly and monthly scripts.

To check whether your scripts are likely to run, use the run-parts command, for example:

run-parts --test /etc/periodic/15min

This command will tell you what should run but will not actually execute the scripts.

If the results of the test are not as expected, check the following:

  • Make sure the script is executable - if unsure, issue the command

    chmod a+x /etc/periodic/[path/scriptname]

  • Make sure the first line of your script is #!/bin/sh
  • Do not use periods on your script file names - this stops them from working; for example: /etc/periodic/daily/myscript will run, but /etc/periodic/daildy/myscript.sh won't.

Time and timezones

How do I set the local timezone?

If you wish to edit the timezone (TZ) after installation, run the setup-timezone script.

Packages

Can you build an apk package for ...?

Yes, we probably can.
Please create an issue in the bugtracker. Prefix with "feat" in title and include a short description (one-line), an URL for the home page, and an URL for the source package.

How can I build my own package?

Please see the Creating an Alpine package page.

What does "required by: world[$pkgname]" mean?

It means that the package you try to install does not exist in the repositories you have configured.

Maybe you forgot to add community, testing or unmaintained to /etc/apk/repositories?

Or is the package in a pinned repository and you forgot to suffix the package with the repo tag? Example:

apk add experimental-package@testing

How can I find out if a certain package exists in Alpine?

If you want to only search repositories you have configured in /etc/apk/repositories, then apk search $pkgname should get you sorted. If you want to search all repositories have a look at the online pkg oracle

WARNING: Ignoring APKINDEX.xxxx.tar.gz

If you get WARNING: Ignoring APKINDEX.xxxx.tar.gz: No such file or directory while running package related tools, check your /etc/apk/repositories file.

To check the content of the repositories file

cat /etc/apk/repositories

or

setup-apkrepos

Dynamic DNS

How do I schedule a regular dynamic DNS update?

You'll want to install the ez-ipupdate package:

apk add ez-ipupdate

After that, create a new file at /etc/ez-ipupdate.conf with contents similar to:

service-type=dyndns
user=myusername:mypassword
interface=eth1
host=myhostname.dyndns.org

Make the new ip cache directory:

mkdir /var/cache/ez-ipupdate lbu add /var/cache/ez-ipupdate

Then schedule a new cron job with this command:

echo >> /var/log/ez-ipupdate && \
/bin/date >> /var/log/ez-ipupdate && \
ez-ipupdate --config-file /etc/ez-ipupdate.conf -f -F /var/run/ez-ipupdate.pid \
--cache-file /var/cache/ez-ipupdate/ipcache --quiet >> /var/log/ez-ipupdate 2>&1

Don't forget to backup your settings!

lbu ci

Terminal

How to enable/fix colors for git?

The problem is not in git itself or terminal, but in the less command. Busybox’s less doesn’t support -r (--raw-control-chars) and -R (--RAW-CONTROL-CHARS) options.

The simplest (yet not ideal) solution is to install GNU less:

apk add less

Old questions, no longer freqently asked

Alpine freezes during boot from Compact Flash, how can I fix?

Most Compact Flash card readers do not support proper DMA.
You should append nodma to the append line in syslinux.cfg.

How do I remove the CDROM?

Since the modloop loopback device is on CDROM you cannot just run eject. You need to unmount the modloop first.
Unmounting both the modloop and the CDROM in one step can be done by executing:

/etc/init.d/modloop stop

Then it's possible to eject the CDROM:

eject

How can I install a custom firmware in a diskless system?

The modules and firmware are both special images which are mounted as read-only.
To fix this issue you can copy the firmware directory to your writeable media (cf/usb) and copy your custom firmware to it.
After reboot Alpine should automatically use the directory on your local storage instead of the loopback device.

How do I play my .ogg/.mp3 files?

First, the sound card should be recognized (you must have /dev/snd/***** files)

sox, mpg123, etc all use the oss sound driver, while Alpine uses ALSA drivers.
So you need to load the snd-pcm-oss compatibility module.
While you're at it, you might need aumix to turn up the sound volume

echo snd-pcm-oss >> /etc/modules modprobe snd-pcm-oss apk_add aumix sox aumix (set volume settings) play really_cool_song.mp3

OpenNTPD reports an error with "adjtime"

Your log contains something like:

reply from 85.214.86.126: offset 865033148.784255 delay 0.055466, next query 32s
reply from 202.150.212.24: offset 865033148.779314 delay 0.400771, next query 3s
adjusting local clock by 865033148.779835s                                      
adjtime failed: Invalid argument    

openntpd is supposed to make small adjustments in the time without causing time jumps.
If the adjustment is too big then something is clearly wrong and ntpd gives up. (its actually adjtime(3) that has a limit on how big adjustments are allowed)

You can make ntpd set the time at startup by adding -s option to ntpd. This is done by setting NTPD_OPTS="-s" in /etc/conf.d/ntpd.

Using a cron job to keep the time in sync

Add the following to /etc/periodic/daily (or use another folder under the /etc/periodic heirarchy if you want to run the script more/less frequently)

Example: file called do-ntp

#!/bin/sh
ntpd -d -q -n -p uk.pool.ntp.org

This queries the uk time server pool - you can modify this to suit your localisation, or just use pool.ntp.org. More info here: http://www.pool.ntp.org/zone/@

Windows clients reports an error when trying to sync

openntpd needs to run for a while before it is satisfied it is in sync. Until then it will set a flag "clock not synchronized" and Windows will report an error while trying to sync with your openntpd server.

Only thing to do is wait, do something else for 15-20mins and then check.