注意事項
Slackware のバージョンを current に上げるとビルドがコケるものがあります
SlackBuilds.org 公式サイトの HOWTO によると
All of our scripts are written and tested for usage on the latest stable release of Slackware with full installation and updated with latest patches
SlackBuilds.org がサポートするのは the latest stable release 、つまり最新安定版です。なお、sbopkg を使うと SlackBuilds.org にサポートされない current 用リポジトリを利用出来ます(トラブルが生じても楽しめる方向けであると思われます)。
要約
SBo の使い方
- SBo のソースをダウンロード&展開
- 展開されたディレクトリ内にオリジナルのソースをダウンロード
- ルートで SlackBuild スクリプトを実行すると /tmp 以下にパッケージ
更新通知の受け取り方
- /etc/slackpkg/mirrors で最新安定版向けのミラーをひとつだけ選ぶ
- 通知アプリをダウンロード&ビルド&インストール
- 通知アプリを自動起動するように設定
基本的な利用の流れ
SlackBuild Usage HOWTO
sl をインストールしてみる
sl
公式サイト
http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index.html
https://github.com/mtoyoda/sl
SlackBuilds.org
0.作業用ディレクトリの作成
まずは /tmp や /var/tmp などに一時的な作業領域を作る。
$ mkdir /tmp/Downloads
$ cd /tmp/Downloads
※ 作業が終わったら作成したディレクトリは削除すること。一時的ではなく恒久的なディレクトリとしたいなら、ユーザーのホームディレクトリ内や /root ディレクトリ内で作業すると良いだろう。
1.ダウンロードと展開
$ pwd
/tmp/Downloads
$ wget https://slackbuilds.org/slackbuilds/14.2/games/sl.tar.gz
$ tar zxf sl.tar.gz
$ cd sl
$ ls
README sl.SlackBuild* sl.info slack-desc
$ cat sl.info | grep DOWNLOAD
DOWNLOAD="https://github.com/mtoyoda/sl/archive/5.02.tar.gz"
DOWNLOAD_x86_64=""
$ wget https://github.com/mtoyoda/sl/archive/5.02.tar.gz
$ ls
5.02.tar.gz README sl.SlackBuild* sl.info slack-desc
1.1 *.tar.gz.asc の使い道
https://slackbuilds.org/faq/#asc より。
What are all of those .asc files in the repository?
Those files are GPG signatures. They can be used to verify that the SlackBuild script tarball is exactly the one that we placed on the site. Assuming you have both the script tarball and the .asc file in the same directory, this process is as simple as:
gpg --verify app.tar.gz.asc
SlackBuilds.orgの公開鍵をインポート済み、信用度を決定済みの場合
$ pwd
/tmp/Downloads
$ wget https://slackbuilds.org/slackbuilds/14.2/games/sl.tar.gz.asc
$ gpg --verify sl.tar.gz.asc
これでダウンロードした sl.tar.gz が SlackBuilds.org に置かれているものと等しいか確認出来る。
2.READMEを読む
$ pwd
/tmp/Downloads/sl
$ less README
sl is a program that displays animations aimed to correct you if you type
sl instead of ls by mistake.
'sl' stands for Steam Locomotive.
README lines 1-4/4 (END)
しゅっしゅっぽっぽ 1 。
3.必要に応じ SlackBuild スクリプトを編集する
$ cat sl.SlackBuild
#!/bin/sh
# Slackware build script for sl.
# Copyright 2010 V'yacheslav Stetskevych
# Copyright 2012 Niels Horn, Rio de Janeiro, RJ, Brazil
# Copyright 2015 Philip van der Hoeven, Almere, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=sl
VERSION=${VERSION:-5.02}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$VERSION.tar.gz || tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
make
# Manual installation follows...
mkdir -p $PKG/usr/games # binaries
cp -p sl $PKG/usr/games
( cd $PKG/usr/games; ln -s sl LS; )
mkdir -p $PKG/usr/man # man pages
mkdir -p $PKG/usr/man/man1
mkdir -p $PKG/usr/man/ja.UTF-8/man1
cp -p sl.1 $PKG/usr/man/man1
cp -p sl.1.ja $PKG/usr/man/ja.UTF-8/man1
# End of manual installation
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a README* LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
編集するなら例えば
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"```
を
```elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O3 -march=native -fPIC"
LIBDIRSUFFIX="64"```
などとして、最適化することが考えられる。
**蛇足:**
sl の日本語 manpage が読み込まれない場合も sl.SlackBuild の編集で対応出来る。UTF-8 で記述された manpage は、current ならば /usr/share/man/ja.UTF-8 を読んでくれるようだが、14.2 では ja_JP.UTF-8 としないと読んでくれないようである。[man の文字化け問題については man.conf における JNROFF の指定について適正化すると文字コードが euc だろうが sjis だろうが nkf の文字コードの自動判別によって utf8 で読めるように出来る。](https://qiita.com/EarthSimilarityIndex/items/69526591a5156df6f236)
### 4.SlackBuild スクリプトを root で実行
実行権限が付与されていなければ以下のコマンドで付与する。
$ chmod +x sl.SlackBuild
ルートアカウントにログインし sl.SlackBuild を実行する(一般ユーザーでログイン中でもコマンドラインから```su -```や```su -l```でルートアカウントにログイン出来る)。
$ su -
pwd
/root
cd /tmp/Downloads/sl
./sl.SlackBuild
exit
※ パッケージによっては SlackBuild スクリプトに環境変数としてビルドオプションが渡せるものがある。
ルートでログインが必要な理由は、[howto によると以下の通り](https://slackbuilds.org/howto/)
>Note that for many builds, you will need to have a true login shell in order to have a correctly populated environment. Among other things, /usr/share/texmf/bin will not be in your PATH if you simply do "su" -- therefore, you will need to either use "su -l" when switching to root, or source the /etc/profile script after doing "su", or perhaps modifying /root/.bashrc to include necessary PATH elements.
一部パスが参照されない恐れがあるからルートでログインするか、"su"で済ませるなら /etc/profile を source するように、ということらしい。bash なら ```source /etc/profile``` 、それ以外なら ```. /etc/profile``` 。
### 5.パッケージのインストール
通常 sl.SlackBuild のような SlackBuilds.org のビルドスクリプトが生成するパッケージは /tmp 以下に出力されるので、それをインストールする。
※ 以下の例ではものぐさしているが、ポストインストールスクリプトが参照できないPATHがあると問題であるので、インストール作業もrootでログインして行う方が無難。
$ su -c 'installpkg /tmp/sl-5.02-x86_64-1_SBo.tgz'
/tmp はあくまでも一時作業領域である為、確実に保存しておきたいパッケージはユーザーのホームディレクトリ内や /root ディレクトリ内に移しておくのが良い。
# ツールを介して SlackBuilds.org を利用する
## sbopkg
![スクリーンショット_2019-06-28_17-32-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/766cc4d8-c416-32e3-2200-899d7bd6ad60.png)
・一番日本語の情報が多いように思う。
・Slackware 自身と同様、構築依存やパッケージの依存性は解決しない。
・一方で強力で柔軟なビルドオプション管理機能やインストールキュー管理機能を持つ。
・哲学の部分で一番 Slackware 的かもしれない。
以下は公式サイトより引用。
>About
>
>Sbopkg is a command-line and dialog-based tool to synchronize with the SlackBuilds.org ("SBo") repository, a collection of third-party SlackBuild scripts to build Slackware packages. Sbopkg is actively maintained and a new version is released one or more times per Slackware/SBo release. Numerous people have contributed diffs, bug reports, and helpful suggestions and they are all mentioned in the THANKS file in /usr/doc/sbopkg-$VERSION. This utility would not be anywhere close to its present state without the help of these folks.
>
>Features
>
>Sbopkg will allow the user to:
>
> Create, browse, and search a local copy of the SBo repository for any supported Slackware version.
> Read the SBo ChangeLog.txt.
> Display a list of all SBo packages installed on the user's system.
> Display potential updates to packages installed from SlackBuilds.org.
> View the README, SlackBuild, .info, and slack-desc files for each individual piece of software in the repository.
> Copy the original .info file or SlackBuild for editing.
> Automatically download the source code, check the md5sum, and build or build and install a Slackware package from either the original .info file and SlackBuild or the locally-edited copies.
> Batch queue packages for building or building and installing.
> Load, save, and use sbopkg queuefiles (.sqf), several of which are included with the package.
> View the contents of the cache directory (where source code tarballs are stored).
> View the permanent build log that is optionally maintained to keep a record of the entire compilation process.
> Check for an update to sbopkg itself.
>
>Sbopkg will not check dependencies since that is not a feature native to Slackware. Sbopkg is one thing and one thing only: a medium to easily browse a local copy of the SlackBuilds.org repository and build packages from it.
>
>Sbopkg can be also be used strictly from the command line without the dialog interface, to perform most, if not all, of the same functions listed above. Typing sbopkg -h will display the command line options.
>
>Please note that while sbopkg has performed well for many users, it is still advised to read the ChangeLog and READMEs before building package(s).
### 公式サイト
https://sbopkg.org/index.php
https://github.com/sbopkg/sbopkg
### インストール例(2019年6月28日時点)
$ wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz
$ su
source /etc/profile
installpkg ./sbopkg-0.38.1-noarch-1_wsr.tgz
※ bash 以外の環境では ```. /etc/profile``` で環境変数を設定。
※ [bash - source command not found in sh shell - Stack Overflow](https://stackoverflow.com/questions/13702425/source-command-not-found-in-sh-shell)
### インストール例(ワンライナーっぽくしてみました)
```sh:2019/07/29時点
wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz && su -l -c "upgradepkg $(pwd)/sbopkg-0.38.1-noarch-1_wsr.tgz" || su -l -c "installpkg $(pwd)/sbopkg-0.38.1-noarch-1_wsr.tgz"
sboui
・初期設定で構築依存を考慮しつつダウンロードとビルドを行ってくれる。
・ビルドオプションINSTALL_SYSTRAY_NOTIFIER=yes
を渡すことで、SBoからインストールしたパッケージのアップデートがある場合に通知してくれるコマンドsboui-update-notifier
を生成可能。
公式サイト
インストール
SlackBuilds.org からダウンロード&インストール
構築依存
libconfig
( python-requests ※ sboui-update-notifier をインストールする場合 )
構築依存が複雑になるので、python-requests のインストールは libconfig をビルド&インストールして sboui をインストールした上で sboui 上から行うと楽。python-requests のインストールに成功後、必要なオプションを渡して sboui を再度ビルドし再インストールすることで sboui-update-notifier が使えるようになる。
###(通知機能無し版)オートインストーラー
書いてみました。
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_sboui-2.0.1.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sboui-2.0.1.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sboui-2.0.1.sh && chmod +x $(pwd)/install_sboui-2.0.1.sh && su -l -c $(pwd)/install_sboui-2.0.1.sh
sbotools
・初期設定である程度 2 構築依存を考慮しつつダウンロードとビルドを行ってくれる。
・標準(全部乗せ)インストール済みであれば、構築依存なし。
・ライセンスが WTFPL (うぼぁ!?)
・初回起動時はSBoのツリーのローカルコピーを用意する為に sbosnap fetch
を実行する必要がある。
・次回以降のツリー更新には sbocheck
を使うのが良さそう。こちらのコマンドは SBo 由来のパッケージのアップデートも確認してくれる。
以下は公式サイトより引用。
For Slackware 14.0, 14.1, 14.2, and -current, handling of requirements from a slackbuild’s .info file, or for Slackware 13.37, parsing requirement lists from a slackbuild’s README, and asking the user if s/he wishes to install them. Note this is not at all automatic; user input and intelligence is required.
こちらは sboinstall の manpage より。
公式サイト
公式ドキュメント
インストール
SlackBuilds.org からダウンロード&インストール
オートインストーラー
書いてみました。
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_sbotools-2.7.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sbotools-2.7.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sbotools-2.7.sh && chmod +x $(pwd)/install_sbotools-2.7.sh && su -l -c $(pwd)/install_sbotools-2.7.sh
SlackBuilds や公式リポジトリの更新通知を受けとる
公式リポジトリの更新通知を受けとる
事前に /etc/slackpkg/mirrors を編集し適切なミラーを設定しておく(使いたいミラーを一つだけ選び行頭の#を消して有効化する)。
以下は /etc/slackpkg/mirrors 冒頭より引用
# You only need to select one mirror and uncomment it.
# ONLY ONE mirror can be uncommented.
###参考:
パッケージ管理について
Package Management
http://www.slackware.com/config/packages.php
パッケージ管理補助ユーティリティー slackpkg
slackpkg - utility to help package management in Slackware
https://slackpkg.org/
slackpkg の使い方など
https://slackpkg.org/documentation.html
※ Installation は読み飛ばして良い。
※ man slackpkg で詳細を参照可能。
Slackware 14.2 x86_64 向けの日本のミラーサイト
ftp://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-14.2/
http://ftp.nara.wide.ad.jp/pub/Linux/slackware/slackware64-14.2/
ftp://ftp-srv2.kddilabs.jp/Linux/distributions/Slackware/slackware64-14.2/
http://ftp-srv2.kddilabs.jp/Linux/distributions/Slackware/slackware64-14.2/
ftp://riksun.riken.go.jp/Linux/slackware/slackware64-14.2/
http://riksun.riken.go.jp/Linux/slackware/slackware64-14.2/
※ kddilabs のリポジトリのアドレスが変更になっている模様。
旧:ftp-srv2.kddilabs.jp/032/Linux/packages/Slackware/slackware64-14.2/
↓
新:ftp-srv2.kddilabs.jp/Linux/distributions/Slackware/slackware64-14.2/
詳細は http://mirrors.slackware.com/mirrorlist/ 及び http://ftp-srv2.kddilabs.jp/ を参照。ftp.kddilabs.jp と ftp-srv2.kddilabs.jp の近い方を使うと良さそう。
/etc/slackpkg/blacklist
サードパーティのパッケージを slackpkg clean-system
等の対象から除外する場合、/etc/slackpkg/blacklist に記述する。
# This is a blacklist file. Any packages listed here won't be
# upgraded, removed, or installed by slackpkg.
#
# The correct syntax is:
#
# To blacklist the package xorg-server-1.6.3-x86_64-1 the line will be:
# xorg-server
#
# DON'T put any space(s) before or after the package name or regexp.
# If you do this, the blacklist will NOT work.
#
# Automated upgrade of kernel packages aren't a good idea (and you need to
# run "lilo" after upgrade). If you think the same, uncomment the lines
# below
#
#kernel-firmware
#kernel-generic
#kernel-generic-smp
#kernel-headers
#kernel-huge
#kernel-huge-smp
#kernel-modules
#kernel-modules-smp
#kernel-source
#
# aaa_elflibs should NOT be blacklisted!
#
# You can blacklist using regular expressions.
#
# Don't use *full* regex here, because all of the following
# will be checked for the regex: series, name, version, arch,
# build and fullname.
#
# This one will blacklist all SBo packages:
[0-9]+_SBo
SUN - Slackware Update Notifier
公式サイト
☀ SUN - Slackware Update Notifier
https://gitlab.com/dslackw/sun
インストール
SlackBuilds.org からダウンロード&インストール
構築依存
使い方
以下を Window Manager や Desktop Environment の機能で呼び出す。
/usr/bin/sun_gtk &
SWUN (simple SoftWare Update Notifier)
公式サイト
swun SlackWare Update Notifier
https://fwxx.github.io/swun/
https://github.com/fwxx/swun
インストール例
$ wget https://github.com/fwxx/swun/releases/download/v0.0.3/swun-0.0.3-x86_64-1_fwxx_slackware64_14.2.tgz
$ su
# source /etc/profile
# installpkg ./swun-0.0.3-x86_64-1_fwxx_slackware64_14.2.tgz
※ bash 以外の環境では . /etc/profile
で環境変数を設定 3 。
使い方
公式サイトより
======== GETTING STARTED =========
- First of all you need a working slackpkg setup(-> slackpkg manpage for this.)
- You will find Swun in KDE menu under Applications -> System,
probably also on other desktops. - After Start, you will recognize a new icon in the notification area
of your desktop environment. - After a few seconds it should turn green or red depending on the
actually installed Software on your system. - In KDE it will be automatically restarted in a later login.
- swun is documented on its man page(man swun)
SlackBuilds.org の更新通知を受けとる
sboui-update-notifier / sboui
詳細は前述のとおり。
ビルドスクリプトにオプションを渡す
# INSTALL_SYSTRAY_NOTIFIER=yes ./sboui.SlackBuild
試したところ、sboui を用いて sboui の再構築と再導入に成功した(あまり行儀の良いやり方ではないかも)。
使い方
以下を Window Manager や Desktop Environment の機能で呼び出す。
/usr/bin/sboui-update-notifier &
オートインストーラー修正履歴
20190801 ハッシュ値まわりでコマンド引数指定が間違っていたので訂正。
× md5sum hogefuga -c hogefuga.md5
○ md5sum -c hogefuga.md5
-
筆者の地元では子供たちが SL の駆動音を「なんださっか、こんなさっか、のぼるに、ほねだよ、どかたの、ばかやろ」と囃したらしい。 ↩
-
記述が不正確でした。構築依存の計算そのものは再帰的に行われますが、「 README を読まずに全自動処理」は出来ない仕様です。また、三すくみのような相互に参照する構築依存が存在する場合は警告を発するとのことです。 ↩
-
bash - source command not found in sh shell - Stack Overflow ↩