# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the live-manual package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: live-manual 5.0~a2-1\n" "POT-Creation-Date: 2015-08-23 11:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. type: Plain text #: en/live-manual.ssm:65 en/examples.ssi:2 msgid ":B~ Examples" msgstr "" #. type: Plain text #: en/about_manual.ssi:92 en/about_manual.ssi:100 en/about_manual.ssi:108 #: en/about_manual.ssi:116 en/about_manual.ssi:124 en/about_manual.ssi:132 #: en/appendix_style-guide.ssi:124 en/appendix_style-guide.ssi:134 #: en/appendix_style-guide.ssi:144 en/appendix_style-guide.ssi:154 #: en/appendix_style-guide.ssi:164 en/appendix_style-guide.ssi:177 #: en/examples.ssi:14 en/examples.ssi:30 en/examples.ssi:40 en/examples.ssi:54 #: en/examples.ssi:67 en/examples.ssi:83 en/examples.ssi:93 #: en/examples.ssi:106 en/examples.ssi:114 en/examples.ssi:124 #: en/examples.ssi:134 en/examples.ssi:149 en/examples.ssi:157 #: en/examples.ssi:165 en/examples.ssi:173 en/examples.ssi:189 #: en/examples.ssi:203 en/examples.ssi:211 en/examples.ssi:219 #: en/examples.ssi:235 en/examples.ssi:249 en/examples.ssi:257 #: en/examples.ssi:265 en/examples.ssi:285 en/examples.ssi:293 #: en/examples.ssi:302 en/examples.ssi:312 en/project_bugs.ssi:62 #: en/project_coding-style.ssi:30 en/project_coding-style.ssi:40 #: en/project_coding-style.ssi:53 en/project_coding-style.ssi:63 #: en/project_coding-style.ssi:94 en/project_coding-style.ssi:102 #: en/project_coding-style.ssi:112 en/project_coding-style.ssi:123 #: en/project_contributing.ssi:34 en/project_contributing.ssi:45 #: en/project_contributing.ssi:59 en/project_contributing.ssi:68 #: en/project_contributing.ssi:79 en/project_contributing.ssi:87 #: en/project_git.ssi:8 en/project_git.ssi:16 en/project_git.ssi:24 #: en/project_git.ssi:34 en/project_git.ssi:44 en/project_git.ssi:56 #: en/project_procedures.ssi:39 en/project_procedures.ssi:51 #: en/user_basics.ssi:50 en/user_basics.ssi:58 en/user_basics.ssi:68 #: en/user_basics.ssi:86 en/user_basics.ssi:100 en/user_basics.ssi:113 #: en/user_basics.ssi:121 en/user_basics.ssi:159 en/user_basics.ssi:167 #: en/user_basics.ssi:179 en/user_basics.ssi:190 en/user_basics.ssi:198 #: en/user_basics.ssi:210 en/user_basics.ssi:218 en/user_basics.ssi:226 #: en/user_basics.ssi:238 en/user_basics.ssi:250 en/user_basics.ssi:260 #: en/user_basics.ssi:270 en/user_basics.ssi:288 en/user_basics.ssi:319 #: en/user_basics.ssi:335 en/user_basics.ssi:343 en/user_basics.ssi:363 #: en/user_basics.ssi:390 en/user_basics.ssi:406 #: en/user_customization-binary.ssi:18 en/user_customization-contents.ssi:24 #: en/user_customization-contents.ssi:33 en/user_customization-contents.ssi:51 #: en/user_customization-installer.ssi:32 #: en/user_customization-installer.ssi:44 #: en/user_customization-packages.ssi:14 en/user_customization-packages.ssi:22 #: en/user_customization-packages.ssi:40 en/user_customization-packages.ssi:53 #: en/user_customization-packages.ssi:67 en/user_customization-packages.ssi:95 #: en/user_customization-packages.ssi:106 #: en/user_customization-packages.ssi:114 #: en/user_customization-packages.ssi:138 #: en/user_customization-packages.ssi:151 #: en/user_customization-packages.ssi:161 #: en/user_customization-packages.ssi:171 #: en/user_customization-packages.ssi:195 #: en/user_customization-packages.ssi:211 #: en/user_customization-packages.ssi:290 #: en/user_customization-packages.ssi:302 #: en/user_customization-packages.ssi:312 #: en/user_customization-packages.ssi:326 #: en/user_customization-packages.ssi:342 #: en/user_customization-packages.ssi:359 en/user_customization-runtime.ssi:14 #: en/user_customization-runtime.ssi:26 en/user_customization-runtime.ssi:44 #: en/user_customization-runtime.ssi:56 en/user_customization-runtime.ssi:75 #: en/user_customization-runtime.ssi:83 en/user_customization-runtime.ssi:92 #: en/user_customization-runtime.ssi:121 en/user_customization-runtime.ssi:131 #: en/user_customization-runtime.ssi:139 en/user_customization-runtime.ssi:148 #: en/user_customization-runtime.ssi:157 en/user_customization-runtime.ssi:172 #: en/user_customization-runtime.ssi:202 en/user_customization-runtime.ssi:210 #: en/user_customization-runtime.ssi:219 en/user_customization-runtime.ssi:229 #: en/user_customization-runtime.ssi:237 en/user_customization-runtime.ssi:245 #: en/user_customization-runtime.ssi:253 en/user_customization-runtime.ssi:261 #: en/user_customization-runtime.ssi:269 en/user_customization-runtime.ssi:277 #: en/user_customization-runtime.ssi:285 en/user_installation.ssi:38 #: en/user_installation.ssi:48 en/user_installation.ssi:56 #: en/user_installation.ssi:66 en/user_installation.ssi:74 #: en/user_installation.ssi:82 en/user_installation.ssi:106 #: en/user_installation.ssi:121 en/user_installation.ssi:134 #: en/user_managing_a_configuration.ssi:22 #: en/user_managing_a_configuration.ssi:32 #: en/user_managing_a_configuration.ssi:55 #: en/user_managing_a_configuration.ssi:67 #: en/user_managing_a_configuration.ssi:76 en/user_overview.ssi:34 #: en/user_overview.ssi:47 en/user_overview.ssi:55 msgid "code{" msgstr "" #. type: Plain text #: en/about_manual.ssi:96 en/about_manual.ssi:104 en/about_manual.ssi:112 #: en/about_manual.ssi:120 en/about_manual.ssi:128 en/about_manual.ssi:136 #: en/appendix_style-guide.ssi:128 en/appendix_style-guide.ssi:138 #: en/appendix_style-guide.ssi:148 en/appendix_style-guide.ssi:158 #: en/appendix_style-guide.ssi:173 en/appendix_style-guide.ssi:182 #: en/examples.ssi:20 en/examples.ssi:34 en/examples.ssi:44 en/examples.ssi:61 #: en/examples.ssi:71 en/examples.ssi:89 en/examples.ssi:102 #: en/examples.ssi:110 en/examples.ssi:118 en/examples.ssi:128 #: en/examples.ssi:141 en/examples.ssi:153 en/examples.ssi:161 #: en/examples.ssi:169 en/examples.ssi:177 en/examples.ssi:197 #: en/examples.ssi:207 en/examples.ssi:215 en/examples.ssi:231 #: en/examples.ssi:239 en/examples.ssi:253 en/examples.ssi:261 #: en/examples.ssi:269 en/examples.ssi:289 en/examples.ssi:298 #: en/examples.ssi:308 en/examples.ssi:324 en/project_bugs.ssi:66 #: en/project_coding-style.ssi:36 en/project_coding-style.ssi:47 #: en/project_coding-style.ssi:59 en/project_coding-style.ssi:70 #: en/project_coding-style.ssi:98 en/project_coding-style.ssi:106 #: en/project_coding-style.ssi:119 en/project_coding-style.ssi:130 #: en/project_contributing.ssi:41 en/project_contributing.ssi:55 #: en/project_contributing.ssi:64 en/project_contributing.ssi:73 #: en/project_contributing.ssi:83 en/project_contributing.ssi:90 #: en/project_git.ssi:12 en/project_git.ssi:20 en/project_git.ssi:28 #: en/project_git.ssi:38 en/project_git.ssi:48 en/project_git.ssi:60 #: en/project_procedures.ssi:47 en/project_procedures.ssi:92 #: en/user_basics.ssi:54 en/user_basics.ssi:62 en/user_basics.ssi:72 #: en/user_basics.ssi:91 en/user_basics.ssi:105 en/user_basics.ssi:117 #: en/user_basics.ssi:125 en/user_basics.ssi:163 en/user_basics.ssi:171 #: en/user_basics.ssi:184 en/user_basics.ssi:194 en/user_basics.ssi:202 #: en/user_basics.ssi:214 en/user_basics.ssi:222 en/user_basics.ssi:230 #: en/user_basics.ssi:242 en/user_basics.ssi:254 en/user_basics.ssi:264 #: en/user_basics.ssi:274 en/user_basics.ssi:311 en/user_basics.ssi:323 #: en/user_basics.ssi:339 en/user_basics.ssi:347 en/user_basics.ssi:374 #: en/user_basics.ssi:394 en/user_basics.ssi:410 #: en/user_customization-binary.ssi:25 en/user_customization-contents.ssi:29 #: en/user_customization-contents.ssi:43 en/user_customization-contents.ssi:55 #: en/user_customization-installer.ssi:38 #: en/user_customization-installer.ssi:49 #: en/user_customization-packages.ssi:18 en/user_customization-packages.ssi:26 #: en/user_customization-packages.ssi:45 en/user_customization-packages.ssi:59 #: en/user_customization-packages.ssi:71 #: en/user_customization-packages.ssi:100 #: en/user_customization-packages.ssi:110 #: en/user_customization-packages.ssi:118 #: en/user_customization-packages.ssi:143 #: en/user_customization-packages.ssi:157 #: en/user_customization-packages.ssi:167 #: en/user_customization-packages.ssi:177 #: en/user_customization-packages.ssi:201 #: en/user_customization-packages.ssi:216 #: en/user_customization-packages.ssi:294 #: en/user_customization-packages.ssi:306 #: en/user_customization-packages.ssi:316 #: en/user_customization-packages.ssi:330 #: en/user_customization-packages.ssi:355 #: en/user_customization-packages.ssi:364 en/user_customization-runtime.ssi:18 #: en/user_customization-runtime.ssi:30 en/user_customization-runtime.ssi:48 #: en/user_customization-runtime.ssi:69 en/user_customization-runtime.ssi:79 #: en/user_customization-runtime.ssi:88 en/user_customization-runtime.ssi:97 #: en/user_customization-runtime.ssi:125 en/user_customization-runtime.ssi:135 #: en/user_customization-runtime.ssi:144 en/user_customization-runtime.ssi:153 #: en/user_customization-runtime.ssi:162 en/user_customization-runtime.ssi:180 #: en/user_customization-runtime.ssi:206 en/user_customization-runtime.ssi:215 #: en/user_customization-runtime.ssi:223 en/user_customization-runtime.ssi:233 #: en/user_customization-runtime.ssi:241 en/user_customization-runtime.ssi:249 #: en/user_customization-runtime.ssi:257 en/user_customization-runtime.ssi:265 #: en/user_customization-runtime.ssi:273 en/user_customization-runtime.ssi:281 #: en/user_customization-runtime.ssi:289 en/user_installation.ssi:42 #: en/user_installation.ssi:52 en/user_installation.ssi:62 #: en/user_installation.ssi:70 en/user_installation.ssi:78 #: en/user_installation.ssi:86 en/user_installation.ssi:111 #: en/user_installation.ssi:128 en/user_installation.ssi:139 #: en/user_managing_a_configuration.ssi:28 #: en/user_managing_a_configuration.ssi:43 #: en/user_managing_a_configuration.ssi:61 #: en/user_managing_a_configuration.ssi:72 #: en/user_managing_a_configuration.ssi:80 en/user_overview.ssi:41 #: en/user_overview.ssi:51 en/user_overview.ssi:59 msgid "}code" msgstr "" #. type: Plain text #: en/examples.ssi:4 msgid "1~examples Examples" msgstr "" #. type: Plain text #: en/examples.ssi:6 msgid "" "This chapter covers example builds for specific use cases with live systems. " "If you are new to building your own live system images, we recommend you " "first look at the three tutorials in sequence, as each one teaches new " "techniques that will help you use and understand the remaining examples." msgstr "" #. type: Plain text #: en/examples.ssi:8 msgid "2~using-the-examples Using the examples" msgstr "" #. type: Plain text #: en/examples.ssi:10 msgid "" "To use these examples you need a system to build them on that meets the " "requirements listed in {Requirements}#requirements and has live-build " "installed as described in {Installing live-build}#installing-live-build." msgstr "" #. type: Plain text #: en/examples.ssi:12 msgid "" "Note that, for the sake of brevity, in these examples we do not specify a " "local mirror to use for the build. You can speed up downloads considerably " "if you use a local mirror. You may specify the options when you use #{lb " "config}#, as described in {Distribution mirrors used at build time}" "#distribution-mirrors-build-time, or for more convenience, set the default " "for your build system in #{/etc/live/build.conf}#. Simply create this file " "and in it, set the corresponding #{LB_MIRROR_*}# variables to your preferred " "mirror. All other mirrors used in the build will be defaulted from these " "values. For example:" msgstr "" #. type: Plain text #: en/examples.ssi:18 #, no-wrap msgid "" " LB_MIRROR_BOOTSTRAP=\"http://mirror/debian/\"\n" " LB_MIRROR_CHROOT_SECURITY=\"http://mirror/debian-security/\"\n" " LB_MIRROR_CHROOT_BACKPORTS=\"http://mirror/debian-backports/\"\n" msgstr "" #. type: Plain text #: en/examples.ssi:22 msgid "2~tutorial-1 Tutorial 1: A default image" msgstr "" #. type: Plain text #: en/examples.ssi:24 #, no-wrap msgid "*{Use case:}* Create a simple first image, learning the basics of live-build.\n" msgstr "" #. type: Plain text #: en/examples.ssi:26 msgid "" "In this tutorial, we will build a default ISO hybrid live system image " "containing only base packages (no Xorg) and some live system support " "packages, as a first exercise in using live-build." msgstr "" #. type: Plain text #: en/examples.ssi:28 msgid "You can't get much simpler than this:" msgstr "" #. type: Plain text #: en/examples.ssi:32 #, no-wrap msgid " $ mkdir tutorial1 ; cd tutorial1 ; lb config\n" msgstr "" #. type: Plain text #: en/examples.ssi:36 msgid "" "Examine the contents of the #{config/}# directory if you wish. You will see " "stored here a skeletal configuration, ready to customize or, in this case, " "use immediately to build a default image." msgstr "" #. type: Plain text #: en/examples.ssi:38 msgid "" "Now, as superuser, build the image, saving a log as you build with #{tee}#." msgstr "" #. type: Plain text #: en/examples.ssi:42 en/examples.ssi:69 en/examples.ssi:267 #: en/project_bugs.ssi:64 #, no-wrap msgid " # lb build 2>&1 | tee build.log\n" msgstr "" #. type: Plain text #: en/examples.ssi:46 msgid "" "Assuming all goes well, after a while, the current directory will contain " "#{live-image-i386.hybrid.iso}#. This ISO hybrid image can be booted directly " "in a virtual machine as described in {Testing an ISO image with Qemu}" "#testing-iso-with-qemu and {Testing an ISO image with VirtualBox}#testing-" "iso-with-virtualbox, or else imaged onto optical media or a USB flash device " "as described in {Burning an ISO image to a physical medium}#burning-iso-" "image and {Copying an ISO hybrid image to a USB stick}#copying-iso-hybrid-to-" "usb, respectively." msgstr "" #. type: Plain text #: en/examples.ssi:48 msgid "2~tutorial-2 Tutorial 2: A web browser utility" msgstr "" #. type: Plain text #: en/examples.ssi:50 #, no-wrap msgid "*{Use case:}* Create a web browser utility image, learning how to apply customizations.\n" msgstr "" #. type: Plain text #: en/examples.ssi:52 msgid "" "In this tutorial, we will create an image suitable for use as a web browser " "utility, serving as an introduction to customizing live system images." msgstr "" #. type: Plain text #: en/examples.ssi:59 #, no-wrap msgid "" " $ mkdir tutorial2\n" " $ cd tutorial2\n" " $ lb config\n" " $ echo \"task-lxde-desktop iceweasel\" >> config/package-lists/my.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:63 msgid "" "Our choice of LXDE for this example reflects our desire to provide a minimal " "desktop environment, since the focus of the image is the single use we have " "in mind, the web browser. We could go even further and provide a default " "configuration for the web browser in #{config/includes.chroot/etc/iceweasel/" "profile/}#, or additional support packages for viewing various kinds of web " "content, but we leave this as an exercise for the reader." msgstr "" #. type: Plain text #: en/examples.ssi:65 msgid "" "Build the image, again as superuser, keeping a log as in {Tutorial 1}" "#tutorial-1:" msgstr "" #. type: Plain text #: en/examples.ssi:73 msgid "Again, verify the image is OK and test, as in {Tutorial 1}#tutorial-1." msgstr "" #. type: Plain text #: en/examples.ssi:75 msgid "2~tutorial-3 Tutorial 3: A personalized image" msgstr "" #. type: Plain text #: en/examples.ssi:77 #, no-wrap msgid "*{Use case:}* Create a project to build a personalized image, containing your favourite software to take with you on a USB stick wherever you go, and evolving in successive revisions as your needs and preferences change.\n" msgstr "" #. type: Plain text #: en/examples.ssi:79 msgid "" "Since we will be changing our personalized image over a number of revisions, " "and we want to track those changes, trying things experimentally and " "possibly reverting them if things don't work out, we will keep our " "configuration in the popular #{git}# version control system. We will also " "use the best practice of autoconfiguration via #{auto}# scripts as described " "in {Managing a configuration}#managing-a-configuration." msgstr "" #. type: Plain text #: en/examples.ssi:81 msgid "3~ First revision" msgstr "" #. type: Plain text #: en/examples.ssi:87 #, no-wrap msgid "" " $ mkdir -p tutorial3/auto\n" " $ cp /usr/share/doc/live-build/examples/auto/* tutorial3/auto/\n" " $ cd tutorial3\n" msgstr "" #. type: Plain text #: en/examples.ssi:91 msgid "Edit #{auto/config}# to read as follows:" msgstr "" #. type: Plain text #: en/examples.ssi:95 #, no-wrap msgid " #!/bin/sh\n" msgstr "" #. type: Plain text #: en/examples.ssi:100 #, no-wrap msgid "" " lb config noauto \\\n" " --architectures i386 \\\n" " --linux-flavours 686-pae \\\n" " \"${@}\"\n" msgstr "" #. type: Plain text #: en/examples.ssi:104 msgid "" "Perform #{lb config}# to generate the config tree, using the #{auto/config}# " "script you just created:" msgstr "" #. type: Plain text #: en/examples.ssi:108 en/user_basics.ssi:60 #, no-wrap msgid " $ lb config\n" msgstr "" #. type: Plain text #: en/examples.ssi:112 msgid "Now populate your local package list:" msgstr "" #. type: Plain text #: en/examples.ssi:116 #, no-wrap msgid " $ echo \"task-lxde-desktop iceweasel xchat\" >> config/package-lists/my.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:120 msgid "" "First, #{--architectures i386}# ensures that on our #{amd64}# build system, " "we build a 32-bit version suitable for use on most machines. Second, we use " "#{--linux-flavours 686-pae}# because we don't anticipate using this image on " "much older systems. Third, we have chosen the /{lxde}/ task metapackage to " "give us a minimal desktop. And finally, we have added two initial favourite " "packages: /{iceweasel}/ and /{xchat}/." msgstr "" #. type: Plain text #: en/examples.ssi:122 msgid "Now, build the image:" msgstr "" #. type: Plain text #: en/examples.ssi:126 en/examples.ssi:237 en/user_basics.ssi:70 #: en/user_basics.ssi:228 en/user_basics.ssi:272 #, no-wrap msgid " # lb build\n" msgstr "" #. type: Plain text #: en/examples.ssi:130 msgid "" "Note that unlike in the first two tutorials, we no longer have to type " "#{2>&1 | tee build.log}# as that is now included in #{auto/build}#." msgstr "" #. type: Plain text #: en/examples.ssi:132 msgid "" "Once you've tested the image (as in {Tutorial 1}#tutorial-1) and are " "satisfied it works, it's time to initialize our #{git}# repository, adding " "only the auto scripts we just created, and then make the first commit:" msgstr "" #. type: Plain text #: en/examples.ssi:139 #, no-wrap msgid "" " $ git init\n" " $ cp /usr/share/doc/live-build/examples/gitignore .gitignore\n" " $ git add .\n" " $ git commit -m \"Initial import.\"\n" msgstr "" #. type: Plain text #: en/examples.ssi:143 msgid "3~ Second revision" msgstr "" #. type: Plain text #: en/examples.ssi:145 msgid "" "In this revision, we're going to clean up from the first build, add the /" "{vlc}/ package to our configuration, rebuild, test and commit." msgstr "" #. type: Plain text #: en/examples.ssi:147 msgid "" "The #{lb clean}# command will clean up all generated files from the previous " "build except for the cache, which saves having to re-download packages. This " "ensures that the subsequent #{lb build}# will re-run all stages to " "regenerate the files from our new configuration." msgstr "" #. type: Plain text #: en/examples.ssi:151 en/user_basics.ssi:252 #, no-wrap msgid " # lb clean\n" msgstr "" #. type: Plain text #: en/examples.ssi:155 msgid "" "Now append the /{vlc}/ package to our local package list in #{config/package-" "lists/my.list.chroot}#:" msgstr "" #. type: Plain text #: en/examples.ssi:159 #, no-wrap msgid " $ echo vlc >> config/package-lists/my.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:163 msgid "Build again:" msgstr "" #. type: Plain text #: en/examples.ssi:167 msgid "# lb build" msgstr "" #. type: Plain text #: en/examples.ssi:171 msgid "Test, and when you're satisfied, commit the next revision:" msgstr "" #. type: Plain text #: en/examples.ssi:175 #, no-wrap msgid " $ git commit -a -m \"Adding vlc media player.\"\n" msgstr "" #. type: Plain text #: en/examples.ssi:179 msgid "" "Of course, more complicated changes to the configuration are possible, " "perhaps adding files in subdirectories of #{config/}#. When you commit new " "revisions, just take care not to hand edit or commit the top-level files in " "#{config}# containing #{LB_*}# variables, as these are build products, too, " "and are always cleaned up by #{lb clean}# and re-created with #{lb config}# " "via their respective #{auto}# scripts." msgstr "" #. type: Plain text #: en/examples.ssi:181 msgid "" "We've come to the end of our tutorial series. While many more kinds of " "customization are possible, even just using the few features explored in " "these simple examples, an almost infinite variety of different images can be " "created. The remaining examples in this section cover several other use " "cases drawn from the collected experiences of users of live systems." msgstr "" #. type: Plain text #: en/examples.ssi:183 msgid "2~ A VNC Kiosk Client" msgstr "" #. type: Plain text #: en/examples.ssi:185 #, no-wrap msgid "*{Use case:}* Create an image with live-build to boot directly to a VNC server.\n" msgstr "" #. type: Plain text #: en/examples.ssi:187 msgid "" "Make a build directory and create an skeletal configuration inside it, " "disabling recommends to make a minimal system. And then create two initial " "package lists: the first one generated with a script provided by live-build " "named #{Packages}# (see {Generated package lists}#generated-package-lists), " "and the second one including /{xorg}/, /{gdm3}/, /{metacity}/ and /" "{xvnc4viewer}/." msgstr "" #. type: Plain text #: en/examples.ssi:195 #, no-wrap msgid "" " $ mkdir vnc-kiosk-client\n" " $ cd vnc-kiosk-client\n" " $ lb config -a i386 -k 686-pae --apt-recommends false\n" " $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot\n" " $ echo \"xorg gdm3 metacity xvnc4viewer\" > config/package-lists/my.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:199 msgid "" "As explained in {Tweaking APT to save space}#tweaking-apt-to-save-space you " "may need to re-add some recommended packages to make your image work " "properly." msgstr "" #. type: Plain text #: en/examples.ssi:201 msgid "An easy way to list recommends is using /{apt-cache}/. For example:" msgstr "" #. type: Plain text #: en/examples.ssi:205 #, no-wrap msgid " $ apt-cache depends live-config live-boot\n" msgstr "" #. type: Plain text #: en/examples.ssi:209 msgid "" "In this example we found out that we had to re-include several packages " "recommended by live-config and live-boot: #{user-setup}# to make autologin " "work and #{sudo}# as an essential program to shutdown the system. Besides, " "it could be handy to add #{live-tools}# to be able to copy the image to RAM " "and #{eject}# to eventually eject the live medium. So:" msgstr "" #. type: Plain text #: en/examples.ssi:213 #, no-wrap msgid " $ echo \"live-tools user-setup sudo eject\" > config/package-lists/recommends.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:217 msgid "" "After that, create the directory #{/etc/skel}# in #{config/includes.chroot}# " "and put a custom #{.xsession}# in it for the default user that will launch /" "{metacity}/ and start /{xvncviewer}/, connecting to port #{5901}# on a " "server at #{192.168.1.2}#:" msgstr "" #. type: Plain text #: en/examples.ssi:223 #, no-wrap msgid "" " $ mkdir -p config/includes.chroot/etc/skel\n" " $ cat > config/includes.chroot/etc/skel/.xsession << EOF\n" " #!/bin/sh\n" msgstr "" #. type: Plain text #: en/examples.ssi:226 #, no-wrap msgid "" " /usr/bin/metacity &\n" " /usr/bin/xvncviewer 192.168.1.2:1\n" msgstr "" #. type: Plain text #: en/examples.ssi:229 #, no-wrap msgid "" " exit\n" " EOF\n" msgstr "" #. type: Plain text #: en/examples.ssi:233 msgid "Build the image:" msgstr "" #. type: Plain text #: en/examples.ssi:241 msgid "Enjoy." msgstr "" #. type: Plain text #: en/examples.ssi:243 msgid "2~ A base image for a 128MB USB key" msgstr "" #. type: Plain text #: en/examples.ssi:245 #, no-wrap msgid "*{Use case:}* Create a default image with some components removed in order to fit on a 128MB USB key with a little space left over to use as you see fit.\n" msgstr "" #. type: Plain text #: en/examples.ssi:247 msgid "" "When optimizing an image to fit a certain media size, you need to understand " "the tradeoffs you are making between size and functionality. In this " "example, we trim only so much as to make room for additional material within " "a 128MB media size, but without doing anything to destroy the integrity of " "the packages contained within, such as the purging of locale data via the /" "{localepurge}/ package, or other such \"intrusive\" optimizations. Of " "particular note, we use #{--debootstrap-options}# to create a minimal system " "from scratch." msgstr "" #. type: Plain text #: en/examples.ssi:251 #, no-wrap msgid " $ lb config --apt-indices false --apt-recommends false --debootstrap-options \"--variant=minbase\" --firmware-chroot false --memtest none\n" msgstr "" #. type: Plain text #: en/examples.ssi:255 msgid "" "To make the image work properly, we must re-add, at least, two recommended " "packages which are left out by the #{--apt-recommends false}# option. See " "{Tweaking APT to save space}#tweaking-apt-to-save-space" msgstr "" #. type: Plain text #: en/examples.ssi:259 #, no-wrap msgid " $ echo \"user-setup sudo\" > config/package-lists/recommends.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:263 msgid "Now, build the image in the usual way:" msgstr "" #. type: Plain text #: en/examples.ssi:271 msgid "" "On the author's system at the time of writing this, the above configuration " "produced a 110MB image. This compares favourably with the 192MB image " "produced by the default configuration in {Tutorial 1}#tutorial-1." msgstr "" #. type: Plain text #: en/examples.ssi:273 msgid "" "Leaving off APT's indices with #{--apt-indices false}# saves a fair amount " "of space, the tradeoff being that you need to do an #{apt-get update}# " "before using /{apt}/ in the live system. Dropping recommended packages with " "#{--apt-recommends false}# saves some additional space, at the expense of " "omitting some packages you might otherwise expect to be there. #{--" "debootstrap-options \"--variant=minbase\"}# bootstraps a minimal system from " "the start. Not automatically including firmware packages with #{--firmware-" "chroot false}# saves some space too. And finally, #{--memtest none}# " "prevents the installation of a memory tester." msgstr "" #. type: Plain text #: en/examples.ssi:275 #, no-wrap msgid "*{Note:}* A minimal system can also be achieved using hooks, like for example the #{stripped.hook.chroot}# hook found in #{/usr/share/doc/live-build/examples/hooks}#. It may shave off additional small amounts of space and produce an image of 91MB. However, it does so by removal of documentation and other files from packages installed on the system. This violates the integrity of those packages and that, as the comment header warns, may have unforeseen consequences. That is why using a minimal /{debootstrap}/ is the recommended way of achieving this goal.\n" msgstr "" #. type: Plain text #: en/examples.ssi:277 msgid "2~ A localized GNOME desktop and installer" msgstr "" #. type: Plain text #: en/examples.ssi:279 #, no-wrap msgid "*{Use case:}* Create a GNOME desktop image, localized for Switzerland and including an installer.\n" msgstr "" #. type: Plain text #: en/examples.ssi:281 msgid "" "We want to make an iso-hybrid image for i386 architecture using our " "preferred desktop, in this case GNOME, containing all of the same packages " "that would be installed by the standard Debian installer for GNOME." msgstr "" #. type: Plain text #: en/examples.ssi:283 msgid "" "Our initial problem is the discovery of the names of the appropriate " "language tasks. Currently, live-build cannot help with this. While we might " "get lucky and find this by trial-and-error, there is a tool, #{grep-dctrl}#, " "which can be used to dig it out of the task descriptions in tasksel-data, so " "to prepare, make sure you have both of those things:" msgstr "" #. type: Plain text #: en/examples.ssi:287 #, no-wrap msgid " # apt-get install dctrl-tools tasksel-data\n" msgstr "" #. type: Plain text #: en/examples.ssi:291 msgid "Now we can search for the appropriate tasks, first with:" msgstr "" #. type: Plain text #: en/examples.ssi:296 #, no-wrap msgid "" " $ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask\n" " Task: german\n" msgstr "" #. type: Plain text #: en/examples.ssi:300 msgid "" "By this command, we discover the task is called, plainly enough, german. Now " "to find the related tasks:" msgstr "" #. type: Plain text #: en/examples.ssi:306 #, no-wrap msgid "" " $ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask\n" " Task: german-desktop\n" " Task: german-kde-desktop\n" msgstr "" #. type: Plain text #: en/examples.ssi:310 msgid "" "At boot time we will generate the *{de_CH.UTF-8}* locale and select the *{ch}" "* keyboard layout. Now let's put the pieces together. Recalling from {Using " "metapackages}#using-metapackages that task metapackages are prefixed #{task-}" "#, we just specify these language boot parameters, then add standard " "priority packages and all our discovered task metapackages to our package " "list as follows:" msgstr "" #. type: Plain text #: en/examples.ssi:322 #, no-wrap msgid "" " $ mkdir live-gnome-ch\n" " $ cd live-gnome-ch\n" " $ lb config \\\n" " -a i386 \\\n" " --bootappend-live \"boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch\" \\\n" " --debian-installer live\n" " $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot\n" " $ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot\n" " $ echo debian-installer-launcher >> config/package-lists/installer.list.chroot\n" msgstr "" #. type: Plain text #: en/examples.ssi:325 msgid "" "Note that we have included the /{debian-installer-launcher}/ package to " "launch the installer from the live desktop. The #{586}# kernel flavour, " "which is currently necessary for the launcher to work properly, will be " "included by default." msgstr ""