Difference between revisions of "Install/Introducing Portage"

From Funtoo
Jump to navigation Jump to search
m (Protected "Install/Introducing Portage": create a draft in your user space and open a bug to change this page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{InstallNavigation|num=12|prev=Configuration Files|next=Kernel|title=Introducing Portage}}
<translate>
<includeonly>
== Introducing Portage == <!--T:1-->
</includeonly><noinclude><languages/>
= Install Guide: Introducing Portage =


<!--T:2-->
{{InstallNavigation|num=12|prev=Configuration Files|next=Kernel}}</noinclude>
<!--T:16-->
Portage, the Funtoo Linux package manager has a command called <code>emerge</code> which is used to build and install packages from source. It also takes care of installing all of the package's dependencies. You call emerge like this:
Portage, the Funtoo Linux package manager has a command called <code>emerge</code> which is used to build and install packages from source. It also takes care of installing all of the package's dependencies. You call emerge like this:


<!--T:3-->
{{console|body=
{{console|body=
(chroot) # ##i##emerge packagename
%chroot% ##i##emerge packagename
}}
}}


<!--T:4-->
When you install a package by specifying its name in the command-line, Portage records its name in the <code>/var/lib/portage/world</code> file. It does so because it assumes that, since you have installed it by name, you want to consider it part of your system and want to keep the package updated in the future. This is a handy feature, since when packages are being added to the <code>world</code> set, we can update our entire system by typing:
When you install a package by specifying its name in the command-line, Portage records its name in the <code>/var/lib/portage/world</code> file. It does so because it assumes that, since you have installed it by name, you want to consider it part of your system and want to keep the package updated in the future. This is a handy feature, since when packages are being added to the <code>world</code> set, we can update our entire system by typing:


<!--T:5-->
{{console|body=
{{console|body=
(chroot) # ##i##ego sync
%chroot% ##i##ego sync
(chroot) # ##i##emerge -auDN @world
%chroot% ##i##emerge -auDN @world
}}
}}


<!--T:6-->
This is the "official" way to update your Funtoo Linux system. Above, we first update our Portage tree using git to grab the latest ebuilds (scripts), and then run an emerge command to update the <code>world</code> set of packages. The options specified tell {{c|emerge}} to:
This is the "official" way to update your Funtoo Linux system. Above, we first update our Portage tree using git to grab the latest ebuilds (scripts), and then run an emerge command to update the <code>world</code> set of packages. The options specified tell {{c|emerge}} to:


<!--T:7-->
* '''<code>a</code>''' - show us what will be emerged, and '''ask''' us if we want to proceed
* '''<code>a</code>''' - show us what will be emerged, and '''ask''' us if we want to proceed
* '''<code>u</code>''' - '''update''' the packages we specify -- don't emerge them again if they are already emerged.
* '''<code>u</code>''' - '''update''' the packages we specify -- don't emerge them again if they are already emerged.
Line 21: Line 34:
* '''<code>N</code>''' - Update any packages that have changed ('''new''') USE settings.
* '''<code>N</code>''' - Update any packages that have changed ('''new''') USE settings.


You should also consider passing <code>--with-bdeps=y</code> when emerging @world, at least once in a while. This will update build dependencies as well.
<!--T:9-->
 
Of course, sometimes we want to install a package but not add it to the <code>world</code> file. This is often done because you only want the package installed temporarily or because you know the package in question is a dependency of another package. If this behavior is desired, you call emerge like this:
Of course, sometimes we want to install a package but not add it to the <code>world</code> file. This is often done because you only want the package installed temporarily or because you know the package in question is a dependency of another package. If this behavior is desired, you call emerge like this:


<!--T:10-->
<console>
<console>
(chroot) # ##i##emerge -1 packagename
%chroot% ##i##emerge -1 packagename
</console>
</console>


<!--T:11-->
Advanced users may be interested in the [[Emerge]] wiki page.
Advanced users may be interested in the [[Emerge]] wiki page.


==== Updating World ====  
==== Updating World ==== <!--T:12-->


Certain packages in the Funtoo stage3 tarball are compiled with the bindist USE flag enabled by default. bindist flag controlling  enable or disable of options for proprietary and/or patented part of code which is disallowed to distribute in images due to licensing issues.). You may notice a dependency resolution problem with bindist USE during updating packages after initial system setup. To avoid potential problems, '''update the system before first boot or any other package installation''' as shown below:
<!--T:13-->
Certain packages in the Funtoo stage3 tarball are compiled with the {{c|bindist}} USE flag enabled by default. (The bindist flag controls enabling or disabling of options for proprietary and/or patented parts of code which is not allowed to be distributed in images due to licensing issues). You may notice a dependency resolution problem with bindist USE flags during updating packages after initial system setup. To avoid potential problems, '''update the system before first boot or any other package installation''' as shown below:


<!--T:14-->
<console>
<console>
(chroot) # ##i##ego sync
%chroot% ##i##ego sync
(chroot) # ##i##emerge -auDN @world
%chroot% ##i##emerge -auDN @world
</console>
</console>


<!--T:15-->
{{fancyimportant|1=
{{fancyimportant|1=
Make sure you read any post emerge messages and follow their instructions. This is especially true if you have upgraded perl or python.}}
Make sure you read any post emerge messages and follow their instructions. This is especially true if you have upgraded perl or python.}}
{{fancyimportant|1=
If you choose different file systems then the ones in this guide such as JFS or [[Btrfs]], please remember to install any necessary packages so that your system can perform a file system check at boot. The package is {{c|jfsutils}} for JFS. Similar packages exist for all file systems.}}
</translate>
<noinclude>{{InstallNavigation|num=12|prev=Configuration Files|next=Kernel|align=right}}</noinclude>

Revision as of 04:30, December 13, 2021

Other languages:

Install Guide: Introducing Portage

Install Guide, Chapter 12 < Prev Next >

Portage, the Funtoo Linux package manager has a command called emerge which is used to build and install packages from source. It also takes care of installing all of the package's dependencies. You call emerge like this:

chroot # emerge packagename

When you install a package by specifying its name in the command-line, Portage records its name in the /var/lib/portage/world file. It does so because it assumes that, since you have installed it by name, you want to consider it part of your system and want to keep the package updated in the future. This is a handy feature, since when packages are being added to the world set, we can update our entire system by typing:

chroot # ego sync
chroot # emerge -auDN @world

This is the "official" way to update your Funtoo Linux system. Above, we first update our Portage tree using git to grab the latest ebuilds (scripts), and then run an emerge command to update the world set of packages. The options specified tell emerge to:

  • a - show us what will be emerged, and ask us if we want to proceed
  • u - update the packages we specify -- don't emerge them again if they are already emerged.
  • D - Consider the entire dependency tree of packages when looking for updates. In other words, do a deep update.
  • N - Update any packages that have changed (new) USE settings.

Of course, sometimes we want to install a package but not add it to the world file. This is often done because you only want the package installed temporarily or because you know the package in question is a dependency of another package. If this behavior is desired, you call emerge like this:

chroot # emerge -1 packagename

Advanced users may be interested in the Emerge wiki page.

Updating World

Certain packages in the Funtoo stage3 tarball are compiled with the bindist USE flag enabled by default. (The bindist flag controls enabling or disabling of options for proprietary and/or patented parts of code which is not allowed to be distributed in images due to licensing issues). You may notice a dependency resolution problem with bindist USE flags during updating packages after initial system setup. To avoid potential problems, update the system before first boot or any other package installation as shown below:

chroot # ego sync
chroot # emerge -auDN @world
   Important

Make sure you read any post emerge messages and follow their instructions. This is especially true if you have upgraded perl or python.

   Important

If you choose different file systems then the ones in this guide such as JFS or Btrfs, please remember to install any necessary packages so that your system can perform a file system check at boot. The package is jfsutils for JFS. Similar packages exist for all file systems.

Install Guide, Chapter 12 < Prev Next >