programu inrasymas

S
  • 9 Lie '14

sveiki ar galima padaryti kad ubuntu 14.04lts irasinetu programas ne i ta toma i kuri irasyta operacine sistema ?

H
  • 9 Lie '14

@stumbras15 rašė:
sveiki ar galima padaryti kad ubuntu 14.04lts irasinetu programas ne i ta toma i kuri irasyta operacine sistema ?

Tomą? Kieno? Biblijos? Gal turi omeny skirsnį? Bet kokiu atveju, abejoju ar tau to tikrai reikia. Jei jau labai nori tai naudok tam $PATH variable.

S
  • 9 Lie '14

o kaip jis naudojemas?

G
  • 9 Lie '14

Nieko nėra neįmanoma. Visgi tau tai pridarytų daugiau bėdų nei naudos.

Įtariu, kad problemos prasidėjo nuo to, kad neišskaidei sistemos į atskirus skirsnius, viską surašei į vieną ir skyrei jam per mažai vietos.

Lengviausia, turbūt, atskelti kokius 2GB /var katalogui, ir kokius 10GB /usr - į jį paprastai programos ir diegiamos. Sisteminiam skirsniui 1GB, manau, yra per akis.

Atskėlęs skirsnius ir suformatavęs nukopinsi į juos failus iš atitinkamų katalogų (mano pvz. iš /var ir /usr).

Toliau belieka pasiredaguoti /etc/fstab failiuką, kad atitiktų tavo topologiją.

Tada permontuoji šiuos katalogus ant savo naujų skirsnių, ištrini senus iš sisteminio ir diegi programas nesibaimindamas, kad pritrūksi vietos.

S
  • 9 Lie '14

supratau aciu

T
Techtronic
Mindaugas N.
  • 10 Lie '14

Tai priklauso nuo turimu ziniu kiekio. Gali sukurti env kuriame bus tavo programos (galesi mount atskiram diske), tas procesas atrodo taip:

mkdir -p ~/.bin/data/{src,files,share,etc,bin}

Dabar sukurti failiuka ~/.bin/Makefile ir jame:

User defined paths

BINDIR   = ${HOME}/.bin
DATADIR  = ${HOME}/.bin/data
SOURCE   = ${HOME}/.bin/data/src
FILES    = ${HOME}/.bin/data/src/files
APPDIR   = ${HOME}/.local/share/applications
ICONDIR  = ${HOME}/.local/share/icons

# Make world better
all: 
    @echo "use: make app"

prepare:
    @test -d ${SOURCE}/quiterss || hg clone https://code.google.com/p/quite-rss/ ${SOURCE}/quiterss
    @test -d ${SOURCE}/cantata || svn checkout http://cantata.googlecode.com/svn/trunk/ ${SOURCE}/cantata

# Show help
help:
    @echo 'Usage: make [app]'
    @echo 'make cantata      - Graphical client for MPD'
    @echo 'make quiterss     - RSS/Atom feed reader written in C++/Qt4'

# RSS/Atom feed reader written in C++/Qt4
quiterss:
    $(info make: *** [$(@F)] updating...)
    cd ${SOURCE}/quiterss && hg pull && hg update
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/logo.png
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/16x16/quiterss.png
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/32x32/quiterss.png
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/48x48/quiterss.png
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/64x64/quiterss.png
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/128x128/quiterss.png
    cp -vf ${FILES}/quiterss/quiterss.png ${SOURCE}/quiterss/images/256x256/quiterss.png
    cd ${SOURCE}/quiterss && qmake && make
    strip --verbose --strip-unneeded ${SOURCE}/quiterss/release/target/quiterss
    @ln -svf ${SOURCE}/quiterss/release/target/quiterss ${BINDIR}/quiterss
    @ln -svf ${FILES}/quiterss/quiterss.desktop ${APPDIR}
    @ln -svf ${FILES}/quiterss/quiterss.png ${ICONDIR}

# Graphical client for MPD
cantata:
    $(info make: *** [$(@F)] updating...)
    cd ${SOURCE}/cantata && svn update
    cp -vf ${SOURCE}/cantata/gui/mainwindow.cpp ${SOURCE}/cantata/gui/mainwindow.cpp.bak
    sed 's/Icons::self()->toolbarPlayIcon.name()/"button_blue_play"/g' -i ${SOURCE}/cantata/gui/mainwindow.cpp
    sed 's/Icons::self()->toolbarPauseIcon.name()/"button_blue_pause"/g' -i ${SOURCE}/cantata/gui/mainwindow.cpp
    rm -rvf ${SOURCE}/cantata/build
    mkdir -pv ${SOURCE}/cantata/build
    cd ${SOURCE}/cantata/build && cmake \
        -DENABLE_CDDB:BOOL="1" \
        -DENABLE_EXTERNAL_TAGS:BOOL="0" \
        -DENABLE_UDISKS2:BOOL="0" \
        -DENABLE_HTTPS_SUPPORT:BOOL="1" \
        -DENABLE_HTTP_STREAM_PLAYBACK:BOOL="1" \
        -DENABLE_KDE:BOOL="1" \
        -DENABLE_CDPARANOIA:BOOL="0" \
        -DCMAKE_BUILD_TYPE:STRING="Release" \
        -DENABLE_TAGLIB:BOOL="1" \
        -DENABLE_PROXY_CONFIG:BOOL="0" \
        -DENABLE_TAGLIB_EXTRAS:BOOL="1" \
        -DENABLE_FFMPEG:BOOL="1" \
        -DENABLE_OVERLAYSCROLLBARS:BOOL="0" \
        -DENABLE_KWALLET:BOOL="0" \
        -DCMAKE_CXX_FLAGS_RELEASE:STRING="${CFLAGS} -DNDEBUG -DQT_NO_DEBUG" \
        -DENABLE_MUSICBRAINZ:BOOL="1" \
        -DENABLE_MTP:BOOL="0" \
        -DCMAKE_VERBOSE_MAKEFILE:BOOL="1" \
        -DENABLE_MPG123:BOOL="1" \
        -DENABLE_QT5:BOOL="0" ../ && make
    strip --verbose --strip-unneeded ${SOURCE}/cantata/build/cantata
    @ln -svf ${SOURCE}/cantata/build/cantata ${BINDIR}/cantata
    @ln -svf ${FILES}/cantata/cantata.desktop ${APPDIR}
    @ln -svf ${FILES}/cantata/cantata.png ${ICONDIR}

Dabar uzteks uzeiti i ~/.bin ir parasyti make app, tarkim:

cd ~/.bin
make prepare cantata quiterss

Kaip ir viskas, tau atsius bei sukompiliuos cantata, quiterss i ~/.bin. Taip pat sukurs desktop failiukus, kad rastum savas app menu...

Jeigu patinka tokia ideja, tai speju sudomins ir kompiliavimo optimizations, gali nurodyti tokiu budu Makefile:

# Variables to set the desired optimization/CPU instruction settings
export CFLAGS      ?= -march=native -fdiagnostics-color -fuse-linker-plugin -Wpedantic -Ofast -pipe -flto -fuse-linker-plugin
export CXXFLAGS    ?= ${CFLAGS}
export LDFLAGS     ?= ${CFLAGS}

Dabar naudos Gold gcc linker, LTO (Link Time Optimization) ir tt.

Dar vienas patarimas C/C++ compiler cache, kuri aktyvuoti gali darases i Makefile:

# Defines the location of the ccache working directory.
export CCACHE_DIR  ?= ${HOME}/.ccache
# This controls the space use limitations for ccache.
export CCACHE_SIZE ?= 4gb

Daugiau rasi cia
https://gcc.gnu.org/onlinedocs/gccint/LTO.html
https://gcc.gnu.org/onlinedocs/gcc/Opti ... tions.html
https://ccache.samba.org/
http://www.gnu.org/software/make/manual/make.html
https://help.ubuntu.com/community/CompilingEasyHowTo