本書を通じてインストールするパッケージは「氷山の一角」にすぎません。 私たちが望むのは、LFS ブックや BLFS ブックを通じて、皆さんがたくさんのことを経験して頂くことです。 そして本書には含まれていないパッケージであっても、コンパイル、インストール、設定を行うことができる技術を身につけて頂くことです。
パッケージのインストール先として /
や /usr
ではないディレクトリを選んだとしたら、たいていのマシンにおいてはデフォルト環境の設定範囲外にインストールするものとなります。
そんなときに何をどのようにすべきかは、以下に示す例が参考になります。
この例は、更新すべき設定内容をすべてにわたって網羅していますが、状況によるものであるため、すべてを必要とするわけではありません。
環境変数 PATH
に $PREFIX/bin
を加えます。
root
ユーザーの環境変数 PATH
に $PREFIX/sbin
を加えます。
$PREFIX/lib
を /etc/ld.so.conf
か、あるいは環境変数 LD_LIBRARY_PATH
に加えます。 後者に加える際には http://xahlee.info/UnixResource_dir/_/ldpath.html
を確認してみてください。 /etc/ld.so.conf
を修正した場合は、root
ユーザーになって
ldconfig を実行して
/etc/ld.so.cache
を更新する必要があります。
$PREFIX/man
を /etc/man_db.conf
かあるいは環境変数 MANPATH
に加えます。
$PREFIX/info
を環境変数 INFOPATH
に加えます。
$PREFIX/lib/pkgconfig
を環境変数
PKG_CONFIG_PATH
に加えます。 パッケージの中には
.pc
ファイルを $PREFIX/share/pkgconfig
にインストールするものがあります。
その場合はこのディレクトリも同様に加えます。
インストールしようとしているパッケージに応じて、これをコンパイルする際に $PREFIX/include
を環境変数 CPPFLAGS
に加えます。
インストールしたライブラリに依存しているパッケージをコンパイルする際には $PREFIX/lib
を環境変数 LDFLAGS
に加えます。
探しているパッケージが本書に示されていない場合は、以下に示すさまざまな方法によりパッケージを探し出すことができます。
パッケージ名が分かっている場合は SourceForge https://sourceforge.net/directory/、
GitHub https://github.com/ を検索してみてください。 あるいは
Google https://google.com/ を利用することもできます。 また
rpm
を検索する https://rpmfind.net/ や、deb
を検索する https://www.debian.org/distrib/packages#search_packages
において、パッケージのホームページへのリンクが示されていることもあります。
実行モジュール名は分かっているが、どのパッケージに含まれるものかが分からない場合は、まずは実行モジュール名を Google で検索します。 結果が思わしくなければ、実行モジュール名を使って Debian のリポジトリ https://www.debian.org/distrib/packages#search_contents を検索してみてください。
以下は新しいパッケージを取り扱うための一般的なヒントです。
パッケージはたいてい ./configure && make && make install を実行することができます。 configure が受け付けるオプションについては ./configure --help を実行することで情報が得られます。
パッケージにはコンパイルやインストールの方法を示したドキュメントがあるものです。 ただし出来の良いドキュメントもあれば、そうでないものもあります。 そのパッケージのホームページを調べてみて、コンパイルや設定に関する追加情報、最新情報を確認してみてください。
パッケージのコンパイルがうまくいかなった場合は、LFS のアーカイブ https://www.linuxfromscratch.org/search.html にエラー情報があるかどうかを確認してください。 情報が見つからなければ Google で検索するのも一つの手です。 Often, a distribution will have already solved the problem (many of them use development versions of packages, so they see the changes sooner than those of us who normally use stable released versions). But be cautious - all builders tend to carry patches which are no longer necessary, and to have fixes which are only required because of their particular choices in how they build a package. You may have to search deeply to find a fix for the package version you are trying to use, or even to find the package (names are sometimes not what you might expect, e.g. ghostscript often has a prefix or a suffix in its name), but the following notes might help, particularly for those who, like the editors, are trying to build the latest versions and encountering problems:
Arch https://www.archlinux.org/packages/
- enter the package name in the 'Keywords' box, select
the package name, select the 'Source Files' field, and
then select the PKGBUILD
entry to see how they build this package.
Debian http://ftp.debian.org/debian/pool
(use your country's version if there is one) - the source
will be in .tar.gz tarballs (either the original upstream
.orig
source, or else a
dfsg
containing those parts
which comply with Debian's free software guidelines)
accompanied by versioned .diff.gz or .tar.gz additions.
These additions often show how the package is built, and
may contain patches. In the .diff.gz versions, any
patches create files in debian/patches
.
Fedora package source gets reorganized from time to time. At the moment the package source for rpms is at https://src.fedoraproject.org/projects/rpms/%2A and from there you can try putting a package name in the search box. If the package is found you can look at the files (specfile to control the build, various patches) or the commits. If that fails, you can download an srpm (source rpm) and using rpm2cpio (see the Tip at the bottom of the page). For rpms go to https://dl.fedoraproject.org/pub/fedora/linux/ and then choose which repo you wish to look at - development/rawhide is the latest development, or choose releases for what was shipped in a release, updates for updates to a release, or updates/testing for the latest updates which might work or might have problems.
Gentoo - First use a search engine to find an ebuild
which looks as if it will fix the problem, or search at
https://packages.gentoo.org/
- use the search field. Note where the package lives in
the portage hierarchy, e.g. app-something/
. In general you can
treat the ebuild as a sort of pseudo-code / shell
combination with some functions you can hazard a guess
at, such as dodoc. If the fix is
just a sed,
try it. However, in most cases the fix will use a patch.
To find the patch, use a gentoo-portage mirror: Two links
to mirrors in the U.S.A. which seem to usually be up to
date are https://mirror.rackspace.com/gentoo-portage/
and https://mirror.steadfast.net/gentoo-portage/.
Navigate down the tree to the package, then to the
files/
directory to look
for the patch. Sometimes a portage mirror has not yet
been updated, particularly for a recent new patch. In a
few cases, gentoo batch the patches into a tarball and
the ebuild will have a link in the form
https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz
: here, look for PATCH_DEV and PATCH_VER in the build and
format the full URL in your browser or for wget :
remember the '~' before the developer's ID and note that
trying to search the earlier levels of the URL in a
browser may drop you at www.gentoo.org or return 403
(forbidden).
openSUSE provide a rolling release, some package versions are in https://download.opensuse.org/source/tumbleweed/repo/oss/src/ but others are in ../update/openSUSE-current/src - the source only seems to be available in source rpms.
Slackware - the official package browser is currently
broken. The site at https://slackbuilds.org/
has current and previous versions in their unofficial
repository with links to homepages, downloads, and some
individual files, particularly the .SlackBuild
files.
Ubuntu http://ftp.ubuntu.com/ubuntu/pool/ - see the Debian notes above.
If everything else fails, try the blfs-support mailing-list.
探し出したパッケージが .deb
や .rpm
という形式でしか提供されていない場合、rpm2targz、deb2targz というスクリプトを使うことができます。
これらは
https://anduin.linuxfromscratch.org/BLFS/extras/deb2targz.tar.bz2
と
https://anduin.linuxfromscratch.org/BLFS/extras/rpm2targz.tar.bz2
にあります。 これらを使えば、アーカイブファイルを単純な tar.gz
形式に変換することができます。
You may also find an rpm2cpio script useful. The Perl version in the linux kernel archives at https://lore.kernel.org/all/20021016121842.GA2292@ncsu.edu/2-rpm2cpio works for most source rpms. The rpm2targz script will use an rpm2cpio script or binary if one is on your path. Note that rpm2cpio will unpack a source rpm in the current directory, giving a tarball, a spec file, and perhaps patches or other files.