123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- # SOME DESCRIPTIVE TITLE
- # Copyright (C) YEAR Free Software Foundation, Inc.
- # This file is distributed under the same license as the PACKAGE package.
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
- #
- #, fuzzy
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "POT-Creation-Date: 2020-06-17 12:44+0800\n"
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
- "Language-Team: LANGUAGE <LL@li.org>\n"
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- #. type: Content of: <sect1><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:11
- msgid "Package Management"
- msgstr ""
- #. type: Content of: <sect1><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:13
- msgid ""
- "Package Management is an often requested addition to the LFS Book. A Package "
- "Manager allows tracking the installation of files making it easy to remove "
- "and upgrade packages. As well as the binary and library files, a package "
- "manager will handle the installation of configuration files. Before you "
- "begin to wonder, NO—this section will not talk about nor recommend any "
- "particular package manager. What it provides is a roundup of the more "
- "popular techniques and how they work. The perfect package manager for you "
- "may be among these techniques or may be a combination of two or more of "
- "these techniques. This section briefly mentions issues that may arise when "
- "upgrading packages."
- msgstr ""
- #. type: Content of: <sect1><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:24
- msgid "Some reasons why no package manager is mentioned in LFS or BLFS include:"
- msgstr ""
- #. type: Content of: <sect1><itemizedlist><listitem><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:29
- msgid ""
- "Dealing with package management takes the focus away from the goals of these "
- "books—teaching how a Linux system is built."
- msgstr ""
- #. type: Content of: <sect1><itemizedlist><listitem><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:34
- msgid ""
- "There are multiple solutions for package management, each having its "
- "strengths and drawbacks. Including one that satisfies all audiences is "
- "difficult."
- msgstr ""
- #. type: Content of: <sect1><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:40
- msgid ""
- "There are some hints written on the topic of package management. Visit the "
- "<ulink url=\"&hints-index;\">Hints Project</ulink> and see if one of them "
- "fits your need."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:45
- msgid "Upgrade Issues"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:47
- msgid ""
- "A Package Manager makes it easy to upgrade to newer versions when they are "
- "released. Generally the instructions in the LFS and BLFS books can be used "
- "to upgrade to the newer versions. Here are some points that you should be "
- "aware of when upgrading packages, especially on a running system."
- msgstr ""
- #. type: Content of: <sect1><sect2><itemizedlist><listitem><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:54
- msgid ""
- "If Glibc needs to be upgraded to a newer version, (e.g. from glibc-2.31 to "
- "glibc-2.32), it is safer to rebuild LFS. Though you "
- "<emphasis>may</emphasis> be able to rebuild all the packages in their "
- "dependency order, we do not recommend it."
- msgstr ""
- #. type: Content of: <sect1><sect2><itemizedlist><listitem><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:60
- msgid ""
- "If a package containing a shared library is updated, and if the name of the "
- "library changes, then any the packages dynamically linked to the library "
- "need to be recompiled in order to link against the newer library. (Note "
- "that there is no correlation between the package version and the name of the "
- "library.) For example, consider a package foo-1.2.3 that installs a shared "
- "library with name <filename class='libraryfile'>libfoo.so.1</filename>. If "
- "you upgrade the package to a newer version foo-1.2.4 that installs a shared "
- "library with name <filename class='libraryfile'>libfoo.so.2</filename>. In "
- "this case, any packages that are dynamically linked to <filename "
- "class='libraryfile'>libfoo.so.1</filename> need to be recompiled to link "
- "against <filename class='libraryfile'>libfoo.so.2</filename> in order to use "
- "the new library version. You should not remove the previous libraries unless "
- "all the dependent packages are recompiled."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:79
- msgid "Package Management Techniques"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:81
- msgid ""
- "The following are some common package management techniques. Before making a "
- "decision on a package manager, do some research on the various techniques, "
- "particularly the drawbacks of the particular scheme."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:86
- msgid "It is All in My Head!"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:88
- msgid ""
- "Yes, this is a package management technique. Some folks do not find the need "
- "for a package manager because they know the packages intimately and know "
- "what files are installed by each package. Some users also do not need any "
- "package management because they plan on rebuilding the entire system when a "
- "package is changed."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:97
- msgid "Install in Separate Directories"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:99
- msgid ""
- "This is a simplistic package management that does not need any extra package "
- "to manage the installations. Each package is installed in a separate "
- "directory. For example, package foo-1.1 is installed in <filename "
- "class='directory'>/usr/pkg/foo-1.1</filename> and a symlink is made from "
- "<filename>/usr/pkg/foo</filename> to <filename "
- "class='directory'>/usr/pkg/foo-1.1</filename>. When installing a new version "
- "foo-1.2, it is installed in <filename "
- "class='directory'>/usr/pkg/foo-1.2</filename> and the previous symlink is "
- "replaced by a symlink to the new version."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:109
- msgid ""
- "Environment variables such as <envar>PATH</envar>, "
- "<envar>LD_LIBRARY_PATH</envar>, <envar>MANPATH</envar>, "
- "<envar>INFOPATH</envar> and <envar>CPPFLAGS</envar> need to be expanded to "
- "include <filename>/usr/pkg/foo</filename>. For more than a few packages, "
- "this scheme becomes unmanageable."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:118
- msgid "Symlink Style Package Management"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:120
- msgid ""
- "This is a variation of the previous package management technique. Each "
- "package is installed similar to the previous scheme. But instead of making "
- "the symlink, each file is symlinked into the <filename "
- "class='directory'>/usr</filename> hierarchy. This removes the need to expand "
- "the environment variables. Though the symlinks can be created by the user to "
- "automate the creation, many package managers have been written using this "
- "approach. A few of the popular ones include Stow, Epkg, Graft, and Depot."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:129
- msgid ""
- "The installation needs to be faked, so that the package thinks that it is "
- "installed in <filename class=\"directory\">/usr</filename> though in reality "
- "it is installed in the <filename class=\"directory\">/usr/pkg</filename> "
- "hierarchy. Installing in this manner is not usually a trivial task. For "
- "example, consider that you are installing a package libfoo-1.1. The "
- "following instructions may not install the package properly:"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><screen>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:137
- #, no-wrap
- msgid ""
- "<userinput>./configure --prefix=/usr/pkg/libfoo/1.1\n"
- "make\n"
- "make install</userinput>"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:141
- msgid ""
- "The installation will work, but the dependent packages may not link to "
- "libfoo as you would expect. If you compile a package that links against "
- "libfoo, you may notice that it is linked to <filename "
- "class='libraryfile'>/usr/pkg/libfoo/1.1/lib/libfoo.so.1</filename> instead "
- "of <filename class='libraryfile'>/usr/lib/libfoo.so.1</filename> as you "
- "would expect. The correct approach is to use the <envar>DESTDIR</envar> "
- "strategy to fake installation of the package. This approach works as "
- "follows:"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><screen>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:150
- #, no-wrap
- msgid ""
- "<userinput>./configure --prefix=/usr\n"
- "make\n"
- "make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput>"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:154
- msgid ""
- "Most packages support this approach, but there are some which do not. For "
- "the non-compliant packages, you may either need to manually install the "
- "package, or you may find that it is easier to install some problematic "
- "packages into <filename class='directory'>/opt</filename>."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:162
- msgid "Timestamp Based"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:164
- msgid ""
- "In this technique, a file is timestamped before the installation of the "
- "package. After the installation, a simple use of the <command>find</command> "
- "command with the appropriate options can generate a log of all the files "
- "installed after the timestamp file was created. A package manager written "
- "with this approach is install-log."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:170
- msgid ""
- "Though this scheme has the advantage of being simple, it has two "
- "drawbacks. If, during installation, the files are installed with any "
- "timestamp other than the current time, those files will not be tracked by "
- "the package manager. Also, this scheme can only be used when one package is "
- "installed at a time. The logs are not reliable if two packages are being "
- "installed on two different consoles."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:180
- msgid "Tracing Installation Scripts"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:182
- msgid ""
- "In this approach, the commands that the installation scripts perform are "
- "recorded. There are two techniques that one can use:"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:185
- msgid ""
- "The <envar>LD_PRELOAD</envar> environment variable can be set to point to a "
- "library to be preloaded before installation. During installation, this "
- "library tracks the packages that are being installed by attaching itself to "
- "various executables such as <command>cp</command>, "
- "<command>install</command>, <command>mv</command> and tracking the system "
- "calls that modify the filesystem. For this approach to work, all the "
- "executables need to be dynamically linked without the suid or sgid bit. "
- "Preloading the library may cause some unwanted side-effects during "
- "installation. Therefore, it is advised that one performs some tests to "
- "ensure that the package manager does not break anything and logs all the "
- "appropriate files."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:197
- msgid ""
- "The second technique is to use <command>strace</command>, which logs all "
- "system calls made during the execution of the installation scripts."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:203
- msgid "Creating Package Archives"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:205
- msgid ""
- "In this scheme, the package installation is faked into a separate tree as "
- "described in the Symlink style package management. After the installation, a "
- "package archive is created using the installed files. This archive is then "
- "used to install the package either on the local machine or can even be used "
- "to install the package on other machines."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:211
- msgid ""
- "This approach is used by most of the package managers found in the "
- "commercial distributions. Examples of package managers that follow this "
- "approach are RPM (which, incidentally, is required by the <ulink "
- "url=\"http://refspecs.linuxfoundation.org/lsb.shtml\">Linux Standard Base "
- "Specification</ulink>), pkg-utils, Debian's apt, and Gentoo's Portage "
- "system. A hint describing how to adopt this style of package management for "
- "LFS systems is located at <ulink url=\"&hints-root;fakeroot.txt\"/>."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:220
- msgid ""
- "Creation of package files that include dependency information is complex and "
- "is beyond the scope of LFS."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:223
- msgid ""
- "Slackware uses a <command>tar</command> based system for package archives. "
- "This system purposely does not handle package dependencies as more complex "
- "package managers do. For details of Slackware package management, see "
- "<ulink url=\"http://www.slackbook.org/html/package-management.html\"/>."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:231
- msgid "User Based Management"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:233
- msgid ""
- "This scheme, unique to LFS, was devised by Matthias Benkmann, and is "
- "available from the <ulink url=\"&hints-index;\">Hints Project</ulink>. In "
- "this scheme, each package is installed as a separate user into the standard "
- "locations. Files belonging to a package are easily identified by checking "
- "the user ID. The features and shortcomings of this approach are too complex "
- "to describe in this section. For the details please see the hint at <ulink "
- "url=\"&hints-root;more_control_and_pkg_man.txt\"/>."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:246
- msgid "Deploying LFS on Multiple Systems"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:248
- msgid ""
- "One of the advantages of an LFS system is that there are no files that "
- "depend on the position of files on a disk system. Cloning an LFS build to "
- "another computer with the same architecture as the base system is as simple "
- "as using <command>tar</command> on the LFS partition that contains the root "
- "directory (about 250MB uncompressed for a base LFS build), copying that file "
- "via network transfer or CD-ROM to the new system and expanding it. From "
- "that point, a few configuration files will have to be changed. "
- "Configuration files that may need to be updated include: "
- "<filename>/etc/hosts</filename>, <filename>/etc/fstab</filename>, "
- "<filename>/etc/passwd</filename>, <filename>/etc/group</filename>, <phrase "
- "revision=\"systemd\"> <filename>/etc/shadow</filename>, and "
- "<filename>/etc/ld.so.conf</filename>. </phrase> <phrase revision=\"sysv\"> "
- "<filename>/etc/shadow</filename>, <filename>/etc/ld.so.conf</filename>, "
- "<filename>/etc/sysconfig/rc.site</filename>, "
- "<filename>/etc/sysconfig/network</filename>, and "
- "<filename>/etc/sysconfig/ifconfig.eth0</filename>. </phrase>"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:273
- msgid ""
- "A custom kernel may need to be built for the new system depending on "
- "differences in system hardware and the original kernel configuration."
- msgstr ""
- #. type: Content of: <sect1><sect2><note><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:277
- msgid ""
- "There have been some reports of issues when copying between similar but not "
- "identical architectures. For instance, the instruction set for an Intel "
- "system is not identical with an AMD processor and later versions of some "
- "processors may have instructions that are unavailable in earlier versions."
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter08/pkgmgt.xml:283
- msgid ""
- "Finally the new system has to be made bootable via <xref "
- "linkend=\"ch-bootable-grub\"/>."
- msgstr ""
|