MyBashBurn – modyfikacja kodu i instalacja.

MyBashBurn to tekstowy program a właściwie nakładka do wygodnego nagrywania płyt. Można w nim zrobić prawie wszystko to co w K3b, a w dodatku jest znacznie „lżejszy”.

  • Błąd 1: Wodim
    wodim --scanbus
    wodim: No such file or directory.
    Cannot open SCSI driver!
    

    Błąd wyświetla się (w moim wypadku) gdy nie wybrano żadnej nagrywarki w ustawieniach programu.
    Trzeba dodać ją ręcznie, czyli dopisać (przykładowo) „/dev/sr0″ w „CD-Writer”.

  • Błąd 2: ISO w ISO
    Chcąc nagrać dane na CD, MyBashBurn sprawdza czy w folderze /tmp/burn znajdują się jakieś pliki, jeśli tak to tworzy z nich obraz iso (BashBurn.iso) który zapisuje w tym samym folderze. Jeśli teraz przerwiemy nagrywanie lub będziemy chcieli nagrać nową płytę nie kasując BashBurn.iso, program nagra nam obraz w obrazie. Czyli np. zamiast 700MB – 1400MB. W kodzie źródłowym możemy się doczytać że tak ma być ale dla mnie to błąd, zmodyfikujmy więc nieco kod:

    • Rozpakowujemy źródła, otwieramy ~/mybashburn-1.0.2/burning/burning.sh do edycji
    • Odnajdujemy funkcję data_burning() – tworzy ona obraz płyty, dodamy kilka linijek kodu aby program zapytał nas czy chcemy nagrywać czy wywalić stary obraz jeśli go wykryje:
      data_burning()
      {
      if [ "$(ls -A ${BBBURNDIR})" ]; then
      #### i want a question regarding the BBLABEL ####
      if [ "$BBLABEL" = "<ask-me>" ]; then
      read -p "$bb_burning_data_label" BBLABEL
      fi
      ### CHUDY ###
      if [ -e ${BBBURNDIR}/BashBurn.iso ]; then
      dialog --yesno "$bb_burning_data_4" 10 40
      if [ $? == "0" ]; then
      rm -v ${BBBURNDIR}/BashBurn.iso
      fi
      fi
      ### /CHUDY ###
      if eval "${BB_ISOCMD} -r -f -v -J -hide-joliet-trans-tbl -copyright \"$BBCOPYRIGHT\" \
      -A \"$BBDESCRIPTION\" -p \"$BBAUTHOR\" -publisher \"$BBPUBLISHER\" \
      -volset \"$BBNAMEOFPACKAGE\" -V \"$BBLABEL\" \
      -o ${BBBURNDIR}/BashBurn.iso ${BBBURNDIR}"; then
      iso_burning            # call function - declared above
      else
      echo $bb_burning_data_2
      echo $bb_burning_data_3
      wait_for_enter
      fi
      else
      echo "$bb_burning_error $BBBURNDIR"
      wait_for_enter
      fi
      }
      

      Tak wygląda cała funkcja razem z doklejonym kodem.

    • Trzeba jeszcze dodać treść komunikatu okna które wyskoczy gdy obraz zostanie wykryty. Otwieramy ~/mybashburn-1.0.2/lang/English i dodajemy na końcu zmienną $bb_burning_data_4. Tak wygląda plik po modyfikacji:
      # burning.sh - English languagebb_press_enter="Press [ENTER] to return to main menu."
      
      bb_no_ob="Not enabling overburn..."
      
      bb_burning_tmp_1="Temporary files in"
      bb_burning_tmp_1b="deleted..."
      bb_burning_tmp_2="not deleted..."
      
      bb_burning_audio_1="found"
      bb_burning_audio_2="No audiofiles in"
      bb_burning_audio_3="Not using Normalize..."
      
      bb_burning_finish_1="Burning finished"
      bb_burning_finish_2="Burning failed."
      bb_burning_finish_3="File(s) linked/copied to"
      
      bb_burning_error="No files in "
      
      bb_burning_iso_1="No ISO found in"
      
      bb_burning_data_1="Trying to create ISO-file"
      
      bb_burning_data_label="Label of your Data CD: "                    # New in 1.6
      
      bb_burning_data_2="Error: Could not create an ISO-file."
      bb_burning_data_3="Maybe you need write permissions?"
      
      bb_burning_fifo_1="No WAV files in"
      bb_burning_fifo_2="Going to burn"
      bb_burning_fifo_2b="tracks!"
      bb_burning_fifo3="Clean unused fifos"
      
      bb_burning_dvd_1="Is this the initial session of this DVD?"
      bb_burning_dvd_2="(Enter no if you want to merge a new session to"
      bb_burning_dvd_3="an already burnt DVD. To cancel this operation"
      bb_burning_dvd_4="press [ENTER] without entering anything)"
      bb_burning_dvd_5="(yes/no): "
      
      bb_burning_data_4="Warning: .iso image found in ${BBBURNDIR}, remove from current session?"      # Added by Chudy
      

      Oczywiście trzeba dodać tłumaczenie w innych folderach jeśli chcemy używać innego języka.

Po wszystkim okno z pytaniem będzie wyglądać tak:

Instalacja w Archlinux:

Zrobienie paczki w Archlinux jest dziwnie skomplikowane, można dwojako:
z pomocą AUR:

1. Rozpakowujemy kod źródłowy

2. Ściągamy pliki: PKGBUILD, patch, mybashburn.install z AUR (pliki te znajdziemy spakowane w „Archiwum”)
Rozpakowujemy i przenosimy pliki do katalogu z MyBashBurn
Upewniamy się jeszcze czy mamy paczki: patch, fakeroot i zaleznosci MyBashBurn

3. Tworzymy paczke i instalujemy ją:

   $ makepkg
   # pacman -U package
   

z pomocą własnego PKGBUILD który wklejam niżej:

pkgname=mybashburn
pkgver=1.0.2
pkgrel=chudy
pkgdesc="Bash Burn with ncurses interface"
arch=('i686' 'x86_64')
url="http://mybashburn.sourceforge.net/"
license=('GPL')
depends=('dialog' 'coreutils' 'cdrdao' 'cdrkit')

build() {
cd $startdir/src/$pkgname-$pkgver

make

make DESTDIR=$pkgdir install

}

dalej tak samo czyli makepkg, pacman -U…

Instalacja w Slackware:

1. Rozpakowujemy kod źródłowy.

2. Tworzymy nowy katalog np. /temp/mybashburn. Zainstalujemy do niego program ze źródeł i zrobimy paczkę.
(zaczynamy z rozpakowanego katalogu źródeł)

$ mkdir /temp/mybashburn
$ make && make DESTDIR=/temp/mybashburn install
$ cd /temp/mybashburn
$ su
# makepkg /home/bokwa/mybashburn-1.0.2-bokwa.tgz
# installpkg !$

Dobrze jest umieć robić paczki w Slackware gdzie nie ma menedżera pakietów.

About these ads

Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Twitter picture

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s