Debian fórum

Tipy, triky, návody - pouze návody, nevkládat dotazy! => Správa aplikací => Téma založeno: Roman Horník kdy 04. 12. 2009, 02:16:15

Název: Kterak optimalizovat výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: Roman Horník kdy 04. 12. 2009, 02:16:15
Tenhle návod jsem publikoval na ubuntím fóru, ale tady mu to bude slušet víc. Dá se použít prakticky na všech Debian-like distribucích.
(http://img442.imageshack.us/img442/4263/snmekobrazovkyroot192tec.png)

Kompilace přináší nejen spoustu výhod, ale taky spoustu starostí, jen málokdo se do toho dobrovolně pustí, neboť je třeba doinstalovat si některý kompilátory, spoustu *-dev balíků a hlavně ten někdo musí vědět, jak se co kompiluje, někde totiž nestačí hodit do stroje svatou trojici a pak se těšit z úspěchu.

Hlavní výhodou kompilace je, že si ušijete program svý mašince na míru, ten pak může poskytnout vyšší výkon, program samotný pak může na disku zabrat i o něco méně místa.

Většinu nevýhod kompilace odstraňuje program apt-build. Sám se postará o získání potřebných balíků, sám si zkompiluje, sám vytvoří DEB balík, sám vytvoří lokální repozitář, sám nainstaluje.

Funkce, co vám apt-build nabídne:
Commands:
  update            - Update package lists
  upgrade           - Perform an upgrade
  install           - Build and install new packages
  source            - Download and extract source in build directory
  build-source      - Download, extract and build source package
  update-source     - Update all sources and rebuild them
  remove            - Remove packages
  build-repository  - Rebuild the repository
  clean-sources     - Clean up all object files in source directories
  clean-build       - Erase downloaded packages and temporary build files
  clean-repository  - Erase downloaded packages and temporary build files
  world             - Rebuild and reinstall all packages on your system
  info              - Build-related package information

Options:
  --reinstall       - Re-build and install already installed package
  --rebuild         - Rebuild package
  --remove-builddep - Remove build-dependencies installed by apt-build
  --nowrapper       - Do not use gcc/g++ wrapper
  --purge           - Use purge instead of remove
  --noupdate        - Do not run 'apt-get update' before package installation
  --build-command   - Use <command> to build package
  --patch <file>    - Apply patch <file>s before the build
  --patch-strip     - Striplevel for the patch files
  --yes         -y  - Assume yes
  --version     -v  - Show version and exit
  --force-yes       - Force yes
  --source          - Do not download source (sources are extracted already)
  --build-only      - Do not install any of build dependencies or <package>
  --build-dir       - Specify build dir
  --repository-dir  - Specify the repository directory
  --target-release  - Distribution to fetch packages from
  --sources-list    - Specify sources.list file
  --apt-get         - Specify an alternative apt-get application to use
  --apt-cache       - Specify an alternative apt-cache application to use
  --config          - Specify an alternative configuration file


Manuál:APT-BUILD(1)                                                                                                                                                  APT-BUILD(1)



NAME
       apt-build - Fetch sources and build packages optimized for your architecture.

SYNOPSIS
       apt-build [ options ] [ update ] [ upgrade ] [ world ] [ install pkg ] [ remove pkg ] [ info pkg ]

DESCRIPTION
       apt-build is an apt-get frontend to build and install architecture optimized packages.

COMMANDS
       update Retrieve new lists of packages

       upgrade
              Perform an upgrade

       world  Rebuild your system

       install
              Build and install new packages

       source Download and extract source in the build directory

       info   Info on a package which could be built

       remove Remove packages

       clean-build
              Erase built packages

       clean-sources
              Call debian/rules clean in source directories

       build-source
              Build source without installing them

       update-source
              Update sources and rebuild them if they are missing in the repository

       build-repository
              Rebuild the repository

OPTIONS
       --help
              Shows help

       --nowrapper
              Do not use the gcc wrapper

       --remove-builddep
              Remove build-dependencies installed by apt-build

       --no-source
              Don't download source

       --build-dir
              Specify build-dir

       --build-only
              Build package only

       --rebuild
              Rebuild a package

       --reinstall
              Build and install an already installed package

       --build-command <command>
              Use this command to build package

       --patch <file>
              Apply this patch before build (you can use this option one or several times)

       --patch-strip, -p <number>
              Prefix to strip on patch (0 = -p0, 1 = -p1 ...)

       --yes, -y
              Assume yes

       --purge
              Use purge instead of remove

       --noupdate
              Do not run 'apt-get update' before package installation

       --sources-list
              Specify sources.list file

       --apt-get
              Specify an alternative apt-get command

       --apt-cache
              Specify an alternative apt-cache command

       --force-yes
              Force yes

       --source
              Do not download source (sources are extracted already)

       --repository-dir
              Specify the repository directory

       --target-release
              Distribution to fetch packages from

       --config
              Specify an alternative configuration file

       --version, -v
              Show version

BUGS
       Many.

AUTHOR
       apt-build was written by Julien Danjou <acid@debian.org> with many contributors.



3rd Berkeley Distribution                                                      November 2003                                                                  APT-BUILD(1)


1) Jak jej získat?sudo apt-get install apt-build

Debconf se vás při instalaci zeptá:
1) Kam stahovat a sestavovat balíky (výchozí: /var/cache/apt-build/build)
2) Kde vytvořit lokální repozitář (výchozí: /var/cache/apt-build/repository) - pokud to není nutný, neměňte. Platí i pro předchozí bod.
3) Jak silnou optimalizaci při kompilaci má použít- lehkou, střední a silnou. Já sice používám silnou (taky to dlouho trvá), vy radši sáhněte po střední.
4) Jestli přidat lokální repozitář do sources.list- odpovězte kladně
5) Volby pro GCC a Make- pokud nevíte, nic tam nepište
6) Architektura vašeho procesoru- pokud nevíte, zeptejte se tady (mám navoleno core2 - Intel Pentium Dual-Core E2180).

2) Jdeme na to

Pokud jste se rozhodli tenhle nástroj použít a máte dost času (kompilace trvá dlouho, někdy pár minut, jindy až několik hodin!), směle do toho!
Většinou se apt-build používá stejně jako apt-get, tzn.:
apt-build install --reinstall nazevbaliku - instalace / reinstalace stávajícího programu programem osobně kompilovaným (použijte radši i volbu --reinstall, je to jistější)
apt-build update = apt-get update - aktualizace databáze balíků
apt-build upgrade - aktualizace aktualizovatelných balíků
atd.
apt-build clean-sources - vyčistí složku sources (může trvat delší dobu)
apt-build clean-build / apt-build clean-repository - vyčistí lokální repozitář
3) FAQ:
Q: Co se stane, když se něco při kompilaci nepovede?
A: Nic, balík se nevytvoří a tím pádem se ani nenainstaluje

Q: Co tím získám?
A: Některý programy budou o dost rychlejší, můžou bejt i stabilnější

Q: Mám z toho strach...
A: Pak zemřeš pomalu a v krutých bolestech s vědomím, žes nic nedokázal


Tip:
Pokud chcete originální spořič obrazovky, nastavte si v Terminálu černý pozadí, zelený písmo, hoďte do /dev/null toolbar a posuvník a pomocí klávesy [F11] uveďte Terminál do fullscreenu.
Výsledek:
(http://img301.imageshack.us/img301/1591/matrixm.th.png) (http://img301.imageshack.us/i/matrixm.png/)
Matrix  8)
Název: Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: levicek kdy 23. 12. 2009, 14:46:58
Nevím jestli to sem patří... Zkoušel jsem zkompilovat firefox a totem víc toho nešlo, protože jsem další věci prostě ve zdrojích nenašel. Ale nezdá se mi že by to nějak zrychlilo. Akorát se mi teď při přehrávání filmu občas kousne obraz a vytěžuje víc procesor... Zajímalo by mě jaké máš repozitáře??? mylím že to chce source -ale tam mi dost věcí chybělo, jako gnome věci, metacity,... mám debian Lenny
Název: Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: Roman Horník kdy 23. 12. 2009, 21:42:16
Můj sources.list pro Sida je tady (nelekej se ubunťáren):deb-src http://ftp.cz.debian.org/debian/ unstable main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb-src http://ftp.cz.debian.org/debian/ testing-proposed-updates contrib non-free main
deb-src http://ppa.launchpad.net/bogdanb/ppa/ubuntu/ jaunty main
deb-src http://ftp.debian.org/debian/ experimental main non-free contrib
deb-src http://packages.enlightenment.org/debian/ sid main extras
deb-src http://debian-multimedia.org/ experimental main non-free
deb-src http://ppa.launchpad.net/shiki/mediainfo/ubuntu/ karmic main
deb-src http://debian-multimedia.org/ unstable main non-free
deb-src http://www.backports.org/debian/ lenny-backports main contrib non-free
deb http://ftp.cz.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb http://ftp.cz.debian.org/debian/ testing-proposed-updates contrib non-free main
deb http://ppa.launchpad.net/bogdanb/ppa/ubuntu/ jaunty main
deb http://ftp.debian.org/debian/ experimental main non-free contrib
deb http://packages.enlightenment.org/debian/ sid main extras
deb http://ppa.launchpad.net/shiki/mediainfo/ubuntu/ karmic main
deb http://debian-multimedia.org/ unstable main non-free
deb http://www.backports.org/debian/ lenny-backports main contrib non-free
deb http://debian-multimedia.org/ experimental main non-free


Důležitý je, abys tam měl na všechno, co jde i deb-src blablabla

Jakej máš procesor? Jakou architekturu sis zvolil? Jak silnou optimalizaci máš?


Samozřejmě ne všechno jde takhle zkompilovat, na něco nemáš v repozitářích zdrojový balíky, něco při kompilaci hází chybu (a pak se to nenainstaluje), v kódu může bejt bug..., klasická kompilace je a vždycky bude lepší, i když často o něco složitější.
Název: Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: Jakub Lucký kdy 27. 01. 2010, 16:17:59
Hm... jsem trošku líný hledat, tak se ptám: Umí to někde nastavit konfigurační volby pro GCC? protože bych na serveru občas překompiloval suPHP na lepší optimalizaci...
Název: Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: Roman Horník kdy 27. 01. 2010, 16:51:59
Citace od: Jakub Lucký kdy 27. 01. 2010, 16:17:59
Hm... jsem trošku líný hledat, tak se ptám: Umí to někde nastavit konfigurační volby pro GCC? protože bych na serveru občas překompiloval suPHP na lepší optimalizaci...
sudo dpkg-reconfigure apt-build - tam si můžeš nastavit jak volby pro GCC, tak i pro Make
Název: Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: Jakub Lucký kdy 27. 01. 2010, 22:11:00
wow, děkuji...
Název: Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
Přispěvatel: Visterius kdy 28. 01. 2010, 12:51:38
Máš tam typo..
CitaceFunkce, co vám apt-builb nabídne:

Jinak hezký článek, you deserve a cookie for it.